A continuación se describen operaciones básicas mediante la API del gestor documental que pueden ser útiles para realizar integraciones con el mismo:
$ATHENTO_HOST es el valor del dominio donde se encuentra desplegada la instancia de Athento ECM. |
Para autenticar los servicios descritos a continuación es necesario establecer el usuario y contraseña que serán incluidas mediante BasicAuthentication en las cabeceras de la petición.
Ejemplo en el cliente POSTMAN para Chrome:
Además, para poder realizar correctamente todas las peticiones a servicios, es necesario introducir la siguiente cabecera:
Content-Type: application/json+nxrequest
Ejemplo en el cliente POSTMAN para Chrome:
Ejemplo de petición autenticada con la cabecera:
http://$ATHENTO_HOST/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" }, }, } |
Este servicio nos devuelve toda la información de estructura con contenido de un documento existente en el sistema dado su identificador.
http://$ATHENTO_HOST/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.
Este servicio nos devuelve la estructura de metadatos y facetas de un tipo documental concreto.
http://$ATHENTO_HOST/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".
Existen dos mecanismos básicos:
http://$ATHENTO_HOST/nuxeo/api/v1/id/{docId} |
http://$ATHENTO_HOST/nuxeo/api/v1/path/{docPath} |
Debes utilizar el path a partir de /default/ |
http://$ATHENTO_HOST/nuxeo/restAPI/preview/default/{docId}/files:files-0-file/ |
http://$ATHENTO_HOST/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> |
El siguiente servicio web crea un nuevo documento con su título.
http://$ATHENTO_HOST/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> |
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 } } |
http://$ATHENTO_HOST/nuxeo/api/v1/query/?query={queryNXQL} |
A continuación un ejemplo:
http://$ATHENTO_HOST/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.
Para mayor información, te recomendamos descargar el manual de la API de Athento, disponible desde: |