A continuación se describen operaciones básicas mediante la API del gestor documental que pueden ser útiles para realizar integraciones con el mismo:
Consultar los tipos documentales disponibles en el sistema
http://localhost/nuxeo/api/v1/config/types
El servicio nos devolverá una respuesta como la que sigue:
{ "doctypes" : { "PaymentOrder" : { "parent" : "File", "facets" : [ "Downloadable", "Commentable", "Versionable", "Publishable", "HasRelatedText" ], "schemas" : [ "administrative", "userFile", "projectFile", "common", "dublincore", "file", "uid", "files", "relatedtext" }, }, }
Obtener el tipo documental de un documento
http://localhost/nuxeo/restAPI/default/{docId}/export?format=XML
El servicio nos dará una respuesta como la que sigue:
<document repository="default" id="d6d2a055-6f42-4e6f-ba32-79ab0e24ae86"> <system> <type>Workspace</type> <path>AcePros/workspaces/Sample</path> <lifecycle-state>project</lifecycle-state> <lifecycle-policy>default</lifecycle-policy> <facet>SuperSpace</facet> <facet>DocumentsSizeStatistics</facet> <facet>Folderish</facet> <facet>DocumentsCountStatistics</facet> <access-control> <acl name="inherited"> <entry principal="tenant-AcePros_tenantAdministrators" permission="Everything" grant="true"/> <entry principal="tenant-AcePros_tenantMembers" permission="Read" grant="true"/> <entry principal="Everyone" permission="Everything" grant="false"/> </acl> </access-control> </system>...
Dentro de las etiquetas <type></type>
se encuentra el tipo documental del documento consultado.
Obtener los metadatos para un tipo documental concreto
http://localhost/nuxeo/api/v1/config/types/{docType}
El servicio nos devolverá una respuesta como la que sigue:
{ "parent" : "File", "facets" : [ "Downloadable", "Commentable", "Versionable", "Publishable", "HasRelatedText" ], "schemas" : [ { "name" : "administrative", "@prefix" : "administrative", "fields" : { "signDate" : "date", "concept" : "string", "companyNumber" : "string", "destinationAccount" : "string", "travelPurpose" : "string", "transferRequestDate" : "date", "company" : "string", "sourceAccount" : "string", "paymentOrderDate" : "date", "travelStartDate" : "date", "transferDoneDate" : "date", "travelRequestDate" : "date", "number" : "string", "travelEndDate" : "date", "category" : "string", "location" : "string", "travelName" : "string", "expenseDate" : "date", "amount" : "string" } },...
Los metadatos pueden hacer parte de diferentes esquemas (schemas), por ejemplo, en el código anterior, pueden verse los metadatos del tipo "PaymentOrder" dentr del esquema "fields".
Obtener un documento
Existen dos mecanismos básicos:
A) Por su Id
http://localhost/nuxeo/api/v1/id/{docId}
B) Por su path
http://localhost/nuxeo/api/v1/id/{docPath}
Obtener el preview de un documento
http://localhost/nuxeo/restAPI/preview/default/{docId}/files:files-0-file/
Eliminar un documento
http://localhost/nuxeo/restAPI/default/{docId}/deleteDocument
Tras la llamada, el sistema deberá dar una respuesta como la siguiente:
<document> <repository>default<repository/> <docRef>Document 4457807c-8d15-4c76-44af-e5676e444ce5ed deleted <docRef> </document>
Crear un documento
El siguiente servicio web crea un nuevo documento con su título.
http://localhost/nuxeo/restAPI/default/{parentDocId}/createDocument?docType={docType}&dublincore:title={title}
Tras la llamada, el sistema deberá dar una respuesta como la siguiente:
<document> <repository>default<repository/> <docRef>4457807c-8d15-4c76-44af-e5676e444ce5ed<docRef> <docTitle>Test</docTitle> <docPath>/default-domain/Userworkspaces/user1/Test</docPath> </document>
Actualizar un documento
PUT /nuxeo/site/api/v1/id/{docId} { "entity-type": "document", "repository": "default", "uid": "37b1502b-26ff-430f-9f20-4bd0d803191e", "properties": { "dc:title": "The new title", "dc:description": "Document updated via REST API" "common:icon": "/icons/file.gif", "common:icon-expanded": null, "common:size": null } }
Hacer consultas
http://localhost/nuxeo/api/v1/query/?query={queryNXQL}
A continuación un ejemplo:
http://localhost/nuxeo/api/v1/query/?query=SELECT * FROM Document WHERE dc:title='ATHENTO'
Con el cliente como POSTMAN, una llamada como la anterior nos daría una respuesta similar a la quue sigue:
{ "entity-type": "documents", "isPaginable": true, "resultsCount": 2, "pageSize": 0, "maxPageSize": 0, "currentPageSize": 2, "currentPageIndex": 0, "numberOfPages": 1, "isPreviousPageAvailable": false, "isNextPageAvailable": false, "isLastPageAvailable": false, "isSortable": true, "hasError": false, "errorMessage": null, "totalSize": 2, "pageIndex": 0, "pageCount": 1, "entries": [ { "entity-type": "document", "repository": "default", "uid": "9fb66cdb-2e17-4b1a-bc07-6fa04235047d", "path": "/Athento/workspaces/Administración/8. Documentación Yerbabu/MARCA/ATHENTO", "type": "Folder", "state": "project", "parentRef": "c141f110-32da-452c-96c3-aae8aeb9a7f7", "versionLabel": "", "isCheckedOut": true, "title": "ATHENTO", "lastModified": "2015-09-16T15:52:42.86Z", "facets": [ "DocumentsSizeStatistics", "Folderish", "DocumentsCountStatistics" ], "changeToken": "1442418762861", "contextParameters": { "documentURL": "/nuxeo/nxdoc/default/9fb66cdb-2e17-4b1a-bc07-6fa04235047d/view_documents" } }, { "entity-type": "document", "repository": "default", "uid": "92379199-befe-4430-a7ba-401282656987", "path": "/InvoiceDemo/workspaces/PROYECTOS/ATHENTO/ATHENTO", "type": "Workspace", "state": "project", "parentRef": "0f6c49df-186d-4ae3-8486-3a72da40dd44", "versionLabel": "", "isCheckedOut": true, "title": "ATHENTO", "lastModified": "2016-03-02T15:42:25.75Z", "facets": [ "SuperSpace", "DocumentsSizeStatistics", "Folderish", "DocumentsCountStatistics" ], "changeToken": "1456933345758", "contextParameters": { "documentURL": "/nuxeo/nxdoc/default/92379199-befe-4430-a7ba-401282656987/view_documents" } } ] }
Vemos que el sistema ha encontrado dos documentos cuyo título es "ATHENTO" y nos ha devuelto sus propiedades.