CollectionSpace Service REST-based APIs

14
CollectionSpace Service REST-based APIs June 2009 Face-to-face Aron Roberts U.C. Berkeley IST/Data Services

description

CollectionSpace Service REST-based APIs. June 2009 Face-to-face Aron Roberts U.C. Berkeley IST/Data Services. Agenda. Overview : REST in 3 slides Summary : REST-based APIs proposed for the Services Layer Request : Feedback (later-on). REST … in 1 slide …. - PowerPoint PPT Presentation

Transcript of CollectionSpace Service REST-based APIs

Page 1: CollectionSpace  Service REST-based APIs

CollectionSpace ServiceREST-based APIs

June 2009 Face-to-faceAron Roberts

U.C. Berkeley IST/Data Services

Page 2: CollectionSpace  Service REST-based APIs

CollectionSpace 2

Agenda

• Overview: REST in 3 slides

• Summary: REST-based APIsproposed for the Services Layer

• Request: Feedback (later-on)

Page 3: CollectionSpace  Service REST-based APIs

3

REST … in 1 slide …• “… resources are just consistent

mappings from an identifier [such as a URL path] to some set of views on server-side state.

• “If one view doesn’t suit your needs, then feel free to create a different resource that provides a better view …

• “These views need not have anything to do with how the information is stored on the server … [They just need] to be understandable (and actionable) by the recipient.” – Roy T. Fielding

CollectionSpace

Page 4: CollectionSpace  Service REST-based APIs

CollectionSpace 4

REST … in 2 slides …Every resource is URL-addressable:

/collectionobjects/collectionobjects/{id} /loans

You can get creative!

/collectionobjects/moviescripts/loans/overdue

Page 5: CollectionSpace  Service REST-based APIs

CollectionSpace 5

REST … in 3 slides …To change system state, simply change a resource.

Within the /collectionobjects “bucket”, you can:

• Create an item• Update an item with new data• Delete an item

Page 6: CollectionSpace  Service REST-based APIs

CollectionSpace 6

RESTful APIs (proposed)

Create  POST a new item to a “bucket”POST /collectionobjects

Read  GET an item by its IDGET /collectionobjects/{id}

Read (multiple)  GET the items in a “bucket”GET /collectionobjects

Page 7: CollectionSpace  Service REST-based APIs

CollectionSpace 7

RESTful APIs (proposed)

Read (multiple)  GET the items in a “bucket”GET /collectionobjects

Need to define details of:

• IDs – CSIDs, museum numbers• Filtering – child resources, query parameters• Paging• Formats returned – URLs, full records

Page 8: CollectionSpace  Service REST-based APIs

CollectionSpace 8

RESTful APIs (proposed)

Update  PUT a fully updated item to an IDPUT /collectionobjects/{id}(Partial updates not REST-defined, however.)

Delete  DELETE an item by its IDDELETE /collectionobjects/{id}

Resource discovery  GET info about resourceGET /collectionobjects/schemaGET /collectionobjects/description

Page 9: CollectionSpace  Service REST-based APIs

CollectionSpace 9

RESTful APIs (proposed)

Search  Not REST-defined. Often:GET /collectionobjects?q=term

Need to define:

• “Simple” search• Fully-specified search

– Resource-oriented– Query parameters– Forms submission

Page 10: CollectionSpace  Service REST-based APIs

CollectionSpace 10

RESTful APIs (proposed)

Search  (cont’d)If we model searches as resources:

Create POST a new search POST /searches

Read GET search results GET /searches/{id}/results

Searches might thus be saved, shared …

Page 11: CollectionSpace  Service REST-based APIs

CollectionSpace 11

Status CodesHTTP status codes returned in the response header:

• 200 OK The resource was read, updated, or deleted.• 201 Created  The resource was created.• 400 Bad Request  The data sent in the request was

bad.• 403 Not Authorized  The Principal named in the

request was not authorized to perform this action.• 404 Not Found  The resource does not exist.• 409 Conflict  A duplicate resource could not be

created.• 500 Internal Server Error  A service error occurred.

Page 12: CollectionSpace  Service REST-based APIs

CollectionSpace 12

Error ResponsesResponse in body when a 4xx or 5xx status is returned:

<error> <code>{Mandatory code}</code> <message>{Optional message}</message> <resource-id>{Resource ID, if available}

</resource-id> <request-uri>{URI of request}</request-uri></error>

Page 13: CollectionSpace  Service REST-based APIs

CollectionSpace 13

More infoREST-based APIshttp://wiki.collectionspace.org/x/yYD8 Common System Specific Elementshttp://wiki.collectionspace.org/x/iID8(payloads, error messages, and more!)

Page 14: CollectionSpace  Service REST-based APIs

CollectionSpace 14

Feedback• Eagerly invited. (Probably later on!)

• We seek consistency, and to share ideas, with other CollectionSpace teams re REST-based APIs.