diff --git a/docs/form_filling_api.md b/docs/form_filling_api.md new file mode 100644 index 0000000000..8b6a0bb3f5 --- /dev/null +++ b/docs/form_filling_api.md @@ -0,0 +1,96 @@ + +# Form extraction/filling API + +This API can be used to extract form data from files and to fill out forms of an existing file and store it. + +## Extract forms + +``` +GET /ocs/v2.php/apps/richdocuments/api/v1/template/fields/extract/{fileId} +``` + +### Parameters + +| Parameter | Format | Description | +|-------------|----------------------------------------|--------------------------------------------| +| fileId | numeric | file id of the file to extract fields from | + +### Response data + +The response will be a list of fields where each field can have the following properties: + +| Parameter | Format | Description | +|-----------|---------|------------------------------------------------------------------------| +| index | string | unique identifier for the field, to be used when filling out forms | +| content | string | current content of the field | +| type | string | one of `rich-text`, `checkbox`, `drop-down-list`, `picture`, `date` | +| alias | ?string | User facing name of the field | +| id | ?string | Additional metadata when extracting open document format form controls | +| tag | ?string | Additional metadata when extracting open document format form controls | + +### Sample request +``` + curl https://nextcloud.local/ocs/v2.php/apps/richdocuments/api/v1/template/fields/extract/37526 \ + -u "admin:admin" + -H "OCS-APIRequest: true" +``` + +### Sample response + +``` +{ + "ocs": { + "meta": { + "status": "ok", + "statuscode": 200, + "message": "OK" + }, + "data": [ + { + "index": "0", + "content": "Julius Härtl", + "type": "rich-text", + "alias": "Employee name", + "id": null, + "tag": null + }, + { + "index": "1", + "content": "", + "type": "rich-text", + "alias": "Vacation date from", + "id": null, + "tag": null + } + ] + } +} +``` + +## Fill out form fields + +Opening public share links requires federated editing being properly setup between the two servers. + +``` +POST /ocs/v2.php/apps/richdocuments/api/v1/template/fields/fill/{fileId} +``` + +### Parameters + +| Parameter | Format | Description | +|-------------|----------------------------------------|---------------------------------------------------------------------------| +| fileId | numeric | file id of the source file to fill out | +| fields | object | Fields to be filled out with string content, identified by a string index as unique identifier | +| destination | ?string | If passed the resulting file will be stored at this path | + +``` + curl https://admin:admin@nextcloud.local/ocs/v2.php/apps/richdocuments/api/v1/template/fields/fill/37526 \ + -H "Accept: application/json" + -H "Content-Type: application/json" + -X POST \ + -H 'OCS-APIRequest: true' \ + --data '{"fields":{"0": {"content":"FooBar"}},"destination":"foobar.pdf"}' +```