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.

Autenticación y cabeceras

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:

 

 

Consultar los tipos documentales disponibles en el sistema

 

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" 
    },
  },
}

Obtener el tipo documental de un documento

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.

Obtener los metadatos para un tipo documental concreto

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".

Obtener un documento

Existen dos mecanismos básicos:

A) Por su Id

http://$ATHENTO_HOST/nuxeo/api/v1/id/{docId}

B) Por su path

http://$ATHENTO_HOST/nuxeo/api/v1/path/{docPath}

Debes utilizar el path a partir de /default/

Obtener el preview de un documento

 

http://$ATHENTO_HOST/nuxeo/restAPI/preview/default/{docId}/files:files-0-file/

 

Eliminar un documento

 

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>

Crear un documento

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>

 

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://$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.

Más Operaciones

Para mayor información, te recomendamos descargar el manual de la API de Athento, disponible desde:

http://go.athento.com/athento-ecm-api-guide