REST API Image Issue
I'm using the REST API to integrate Collective Access into a WordPress site. I'm having trouble getting a high-resolution image from the meta data type "media" via the REST API (ie using this: http://localhost/service.php/browse/ca_objects?pretty=1). I checked the Collective Access documentation here, but don't see anything regarding high-res images. Can anyone shed some light on how I can accomplish this, please?
Comments
Hi,
I have not played a lot with API, but what I understand is that you must get informations with several steps:
ca_object_representations
(media) for that object. (You can have several linked media.)ca_object_representations
you want, get the URL of the original file (which have the highest resolution) by getting themedia.original.url
. Width and height of this file should be inmedia.original.width
andmedia.original.height
.Maybe this will help you...
What do you expect when you say "high resolution"? Are you expecting the originally uploaded file? Or a derived file with a set format and resolution? Also, just to make sure I understand, this is a file uploaded to a metadata element of type "media"? No an attached object representation?
Hi again!
I give you an example with my collection. Suppose you want to get an original image from an object. Lets choose this object: https://collections.univ-pau.fr/pub/index.php/Detail/objects/609
Step 1: Authentification
https://collections.univ-pau.fr/ca/service.php/auth/login
This returns you a token, lets say
TheToken
.Step 2: Get informations for an object.
https://collections.univ-pau.fr/ca/service.php/item/ca_objects/id/609?authToken=TheToken
This returns you plenty of metadata and related ressources.
Under
representations
, you find 2 representation numbers:1543
and1544
.For representation 1543, you have can see the URLs, and in these URLs, there are one for a
preview170
, and one for theoriginal
file. For the original file:https://collections.univ-pau.fr/ca/media/collectiveaccess/images/1/5/10638_ca_object_representations_media_1543_original.jpg
You also directly have the HTML tag
<img src=......>
.Step 3 (optional): Get informations about a specific representation, lets say the number 1543.
You can call the API for the table
ca_object_representations
and id1543
:https://collections.univ-pau.fr/ca/service.php/item/ca_object_representations/id/1543?authToken=TheToken
This returns about the same informations, and related ressources.
Hi Darrigan and Seth,
Sorry for my delay in reply, I was out of the office.
When I say "high resolution", I am hoping I can get the original path/url to the uploaded image file.
For example, I want to grab the image from the "media" upload metadata elements https://i.imgur.com/1xDO4BE.png but it's showing the preview image for some reason and not returning the original image path.
Here's the url I've used: https://dev.millennialwebdevelopment.com/collective-access/providencetest/service.php/find/ca_objects?q=*&pretty=1
Thanks so much for your help.
Hi,
OK, so suppose you are interested by object number
object_id=47
, you can call:https://dev.millennialwebdevelopment.com/collective-access/providencetest/service.php/item/ca_objects/id/47
And you get informations about the 3 representations (id=7 ; 10 ; 11) with their path to original. For
representation_id=7
:original: "https://dev.millennialwebdevelopment.com/collective-access/providencetest/media/collectiveaccess/images/0/47054_ca_object_representations_media_7_original.jpg"
Hi Darrigan,
Thanks for the reply. I'm hoping to get the path from the metadata elements so I can pull in this image for example: http://prntscr.com/tJLX86DFKvKQ
Hi Darrigan and Seth,
I wanted to follow up to see if you had a chance to review my last reply?
I searched but I don't find... this is touching my limits.
Okay, thanks for the reply Darrigan.
Seth, any idea where I can get that info?
Your screen shot shows a "main image" container field with subfields for a media upload and various text fields. What are the element codes for these subfields. It should be in the form ca_objects.<container code>.<sub field code>. You'll need them to get the data you need. Once you've got the code for the media upload field, you can include it in your item call. By default it'll return an HTML tag for embedding. Append ".url" to the element code to get a URL returned.
On the demo site at https://demo.collectiveaccess.org (with user name demo and password demo). The url https://demo.collectiveaccess.org/service.php/json/item/ca_objects/id/27 with this in the body:
{"bundles":{"ca_objects.preferred_labels": {}, "ca_objects.notes": {}, "ca_objects.copyright_document.url": {}}}
(where
copyright_document
is a media upload) will return this:Now if you look at the URL you'll see that it references the tiny "icon" version, which may not be what you want. If you append .<version>.url to the element code you can control which media version is returned. For instance, to get a URL to the originally uploaded file use
ca_objects.copyright_document.original.url
in the API call.That worked! THANK YOU Seth!