Documents¶
Il faut également réspécter le cycle Checkin/Checkout pour éditer un document via la REST-API.
La séquence suivante est prévue:
On peut interrompre ce Workflow en annulatn le checkout via le @cancelcheckout endpoint.
On peut lister les versions d’un document avec le @history Endpoint.
Checkout - Faire le checkout d’un document¶
Le checkout d’un document se fait via le @checkout
endpoint.
POST /ordnungssystem/dossier-23/document-123/@checkout HTTP/1.1 Accept: application/jsonHTTP/1.1 204 No Content
Darf ein Dokument vom aktuellen Benutzer nicht ausgecheckt werden, so wird mit dem Status 403 Forbidden
geantwortet.
POST /ordnungssystem/fuehrung/dossier-23/document-123/@checkout HTTP/1.1 Accept: application/jsonHTTP/1.1 403 Forbidden Content-Type: application/json { "error": { "message": "Checkout is not allowed.", "type": "Forbidden" } }
Lock¶
Pour éviter que le document ne puisse être modifié par d’autres utilisateurs, il doit être verouillé par un Lock.
Lock erstellen¶
POST /ordnungssystem/dossier-23/document-123/@lock HTTP/1.1 Accept: application/jsonHTTP/1.1 200 OK Content-Type: application/json { "creator": "peter.meier", "locked": true, "name": "plone.locking.stealable", "stealable": true, "time": 1477076400.0, "timeout": 600, "token": "0.684672730996-0.25195226375-00105A989226:1477076400.000" }
Les verrous ont normalement un Timeout de 600 secondes et doivent ensuite être renouvelés. Il faut donc soit renouveler le verrou périodiquement, soit utiliser un timeout plus élevé:
Renouveler un verrou¶
POST /ordnungssystem/dossier-23/document-123/@refresh-lock HTTP/1.1 Accept: application/jsonHTTP/1.1 200 OK Content-Type: application/json { "creator": "peter.meier", "locked": true, "name": "plone.locking.stealable", "stealable": true, "time": 1477076400.0, "timeout": 600, "token": "0.684672730996-0.25195226375-00105A989226:1477076400.000" }
Vérouiller avec un timeout personalisé¶
POST /ordnungssystem/dossier-23/document-123/@lock HTTP/1.1 Accept: application/json { "timeout": 86400 }HTTP/1.1 200 OK Content-Type: application/json { "creator": "peter.meier", "locked": true, "name": "plone.locking.stealable", "stealable": true, "time": 1477076400.0, "timeout": 86400, "token": "0.684672730996-0.25195226375-00105A989226:1477076400.000" }
Enlever un verrou¶
Un verrou existant peut être enlevé vie le @unlock
endpoint.
POST /ordnungssystem/dossier-23/document-123/@unlock HTTP/1.1 Accept: application/jsonHTTP/1.1 200 OK Content-Type: application/json { "locked": false, "stealable": true }
Actualiser le fichier¶
La REST API supporte le TUS Protocol pour l’upload d’un fichier. Une documentation détaillée se trouve dans la documentation de plone.restapi.
Voici un exemple de comment actualiser le fichier d’un document existant.
Créer l’URL pour l’upload:
POST /ordnungssystem/dossier-23/document-123/@tus-replace HTTP/1.1 Accept: application/json Tus-Resumable: 1.0.0 Upload-Length: 8 Upload-Metadata: filename dGVzdC50eHQ=,content-type dGV4dC9wbGFpbg==HTTP/1.1 201 created Content-Type: application/json location: ordnungssystem/ressourcen-und-support/personal/personalrekrutierung/dossier-4/document-2/@tus-upload/6cdfc5ddd1844e8cbca32721c4b17b84
Uploader le fichier:
PATCH /ordnungssystem/dossier-23/document-123/@tus-upload/6cdfc5ddd1844e8cbca32721c4b17b84 HTTP/1.1 Accept: application/json Tus-Resumable: 1.0.0 Upload-Offset: 0 Content-Type: application/offset+octet-stream test dataHTTP/1.1 204 No content Content-Type: application/json
Checkin - Faire le checkin d’un document¶
Le checkin d’un document se fait via le @checkin
Endpoint, ce qui crée automatiquement une nouvelle version du document.
POST /ordnungssystem/dossier-23/document-123/@checkin HTTP/1.1 Accept: application/json { "comment": "Kapitel 3 - 6 korrigiert." }HTTP/1.1 204 No content Content-Type: application/json
Cancel checkout - Annuler le checkout¶
Le checkout d’un document peut être annulé avec le @cancelcheckout
Endpoint.
POST /ordnungssystem/dossier-23/document-123/@cancelcheckout HTTP/1.1 Accept: application/jsonHTTP/1.1 204 No Content
Lister les Versions¶
GET /ordnungssystem/dossier-23/document-123/@history HTTP/1.1 Accept: application/jsonHTTP/1.1 200 OK Content-Type: application/json [ { "@id": "/ordnungssystem/dossier-23/document-123/@history/1", "action": "Bearbeitet", "actor": { "@id": "http://localhost:8080/fd/@users/peter.meier ", "fullname": "Peter Meier", "id": "peter.meier", "username": "peter.meier" }, "comments": null, "may_revert": true, "time": "2019-03-27T10:50:59.196843", "transition_title": "Bearbeitet", "type": "versioning", "version": 1 }, { "@id": "/ordnungssystem/dossier-23/document-123/@history/0", "action": "Bearbeitet", "actor": { "@id": "http://localhost:8080/fd/@users/hugo.boss", "fullname": "Hugo Boss", "id": "hugo.boss", "username": "hugo.boss" }, "comments": "Dokument erstellt (Initialversion)", "may_revert": true, "time": "2019-03-27T09:19:25", "transition_title": "Bearbeitet", "type": "versioning", "version": 0 } ]