--- myst: html_meta: "description": "Plone REST API endpoints" "property=og:description": "Plone REST API endpoints" "property=og:title": "Plone RES TAPI endpoints" "keywords": "Volto, Plone, REST API, JSON, Backend" --- # Plone REST API endpoints Volto comunicates with the Plone backend via the so-called "endpoints", which care REST API services exposed by plone.restapi. Some of these endpoints include: You communicate with the REST API service using `application/json` ACCEPT header: ```bash curl -H "Accept: application/json" http://localhost:8080/Plone/mycontent ``` The response from the server is typically JSON content (using the [JSONSchema][1] format). ``` GET /plone/front-page HTTP/1.1 Accept: application/json Authorization: Basic YWRtaW46c2VjcmV0 { "@id": "http://localhost:55001/plone/front-page", "@type": "Document", "@components": [ { "@id": "http://localhost:55001/plone/front-page/@actions" }, { "@id": "http://localhost:55001/plone/front-page/@breadcrumbs" }, { "@id": "http://localhost:55001/plone/front-page/@navigation" }, { "@id": "http://localhost:55001/plone/front-page/@types" }, { "@id": "http://localhost:55001/plone/front-page/@workflow" }, { "more components": "..." } ], "UID": "1f699ffa110e45afb1ba502f75f7ec33", "title": "Welcome to Plone", "more attributes": "..." } ``` To access these endpoints, you can use a variety of HTTP verbs (and they are, typically, semantically meaningful, following REST API conventions). For example, the following verbs are used for content manipulation: - `GET /folder` to fetch information - `POST /folder/{document-id}` to create new content in a folder - `PATCH /folder/{document-id}` to update a document - `DELETE /folder/{document-id}` to remove a document plone.restapi comes with many many endpoints, covering a lot of the Plone backend functionality. By convention the endpoints are named with a single `@` as prefix, to show similarity to the classic Browser Views. Some examples include: - The **unnamed service**, which serves as the "content" endpoint, accessed by simply GETing a content URL with the `application/json` header - the `@navigation` endpoints which returns a tree of global navigation items - the `@breadcrumbs` which can be used to build a Breadcrumbs for any context - the `@querystring-search` that can be used to create a listing, similar to the Collection listing A complete listing of all the available endpoints is available in the [plone.restapi endpoints documentation][2] [1]: https://json-schema.org/ [2]: https://plonerestapi.readthedocs.io/en/latest/endpoints/