Hi,
I'm the developer over at Metron(1) and saw the thread on API
Development (sadly, Google Groups doesn't let me reply to the
existing thread), and thought I'd share my experience on how our
users are consuming our API since you mentioned you didn't know
how users could potentially use it.
By far, the most common usage appears to be folks retrieving
metadata for tagging digital comics or using with a Plex-like
systems, but some of the other uses I've seen are:
For our users, the API is read-only, but we do provide post/patch
API for our admins which make a lot of tasks (adding future
comics, updating issues) **much** easier since I've written some
python tools to help with those tasks.
To maintain QOS for the site, we require that users have an
account to use the API (basic authentication), and use a throttle
rate of around 30 requests/minute.
Anyway, that's a real basic explanation of our setup and hopefully
that will be of some help to you. If you've got questions, don't
hesitate to ask.
Take care,
/B
-- Brian Pepple <bpe...@metron.cloud> https://about.me/brian.pepple
thanks for chiming in.
No problem. Figure it makes sense to share knowledge between projects since we most likely run into alot of the same problems.
I guess my question was not so much about for what users it would use it, but what data/access points they would like to have to be able to use it.
Metadata for some of these tasks are the issue data, partly story data. I assume dereferenced, so no foreign keys for stories or creators, but the text.
But how would a user get there, i.e. would they need also search APIs for series names and issue numbers ?
For barcodes that is a bit more simple, since only few resolve. But we have hundreds of Batman #1 ?
I've setup our API is to endpoints for our various models as follows:
Then we got serializers for ModelViewSet list actions which provides only the fields necessary to identify the item being searched for, and then another serializer with all the fields needed for the detail actions.
For example, here's our Arc Serializer (1), and the ArcViewSet (2).
So your example of searching for 'Batman #1' would be done by our users by make the following api call:
'https://metron.cloud/api/issue/?number=1&series_name=batman'
Which would return the attached 'batman_list_1.json' response.
Then user can then request the detail information for the issue they want like this:
'https://metron.cloud/api/issue/34067/'
which would return the attached 'batman_detail_1.json' response.
We also add the foreign keys for our data, since our
users could use that to prevent duplicates items in a
Plex-like system when for example a name changes.
Anyway, I'm not 100% this is what you were asking, so if I was reading you question wrong just tell me.
Speaking for myself, I maintain my 'want list' as folders of images in
my phone. I wrote a nodejs program to scrape the entries from a (public)
collection on my.comics.org and update my local folder of photos to match
what the collection on my.comics.org contains. This means deleting
local images for issues not in the collection and downloading cover
images for issues in the collection that don't have photos locally.