Guillotina API Evolution

Nathan Van Gheem

Guillotina API Evolution

Guillotina's API is amazing! This project aims to continue to improve it by providing a more compliant JSON-LD API, support full REST API through a websocket protocol, utilize JSON schema to validate input payloads, provide a mechanism to version our APIs and more completely document our endpoints.

More compliant JSON-LD API: Guillotina's API is JSON-LD inspired. It should fully adhere to the JSON-LD specification. Websocket API protocol: Fully support all API functionality through the websocket endpoint. JSON schema validation: Right now, Guillotina supports JSON schema for content fields and validation; however, not all JSON bodies have JSON schema compliant validation. We need to validate all JSON payloads against well defined JSON schemas. OpenAPI 3 support: Along with updating JSON schema validation support, we need to update our swagger documentation to work with OpenAPI 3/swagger 3. API versioning: Provide a mechanism to version API endpoints. For example, prefixing all urls with `/v1`, `/v2` etc. plone.restapi compliance: It is also important that we coordinate with the plone.restapi so the APIs are similarly implemented.

Each of the sections in the project description are separate individual tasks for the project. A desired output for this project would be successfully reviewed and merged pull requests for each of these tasks for Guillotina.

Stakeholder: Nathan Van Gheem Mentor: Ramon Navarro Bosch