¿Como puedo utilizar Tractis LTA REST v2?
Para poder utilizar Tractis LTA, primero deberás crear una API Key de Tractis LTA y, a continuación, integrar dicha API Key en tu aplicación o servicio web.
Autenticación
Tractis LTA REST v2 está protegida mediante autenticación BASIC AUTH usando el API_KEY como nombre de usuario y el API_SECRET como contraseña:
Ejemplo de cabecera:
Authorization: Basic dXNlcjpwYXNzd29yZA==
Ejemplo curl:
curl -H 'Content-Type: application/json' -H 'Accept: application/json' -u apikey:apisecret https://api.tractis.com/lta/v2/content/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
URL de invocación
La URL de invocación del servicio es:
https://api.tractis.com/lta/v2
API Content Type
Tractis LTA REST v2 funciona sobre JSON tanto en el input como el output, se recomienda usar las cabeceras Content-Type y Accept a ‘application/json’ aunque no es estrictamente necesario (por defecto la API espera JSON y devuelve JSON).
Resumen de métodos sobre “content”
- POST /content Add a new content
- GET /content/{id} Find content by ID
- DELETE /content/{id} Deletes the content
- GET /content/findByProperties Finds contents by properties
Add a new content (store)
POST /content Add a new content
Request: Parámetros
- “content”: Contenido a almacenar en base64Binary.
- Requerido: Sí
- Ejemplo: TWkgQ29udGVuaWRv
- Tamaño máximo: 20MB
- “properties”: key-value hash de propiedades asociadas al contenido.
- Requerido: Sí
- Ejemplo: {“my-id”: “1234″, “my-client-id”: “4321″}
- Al menos debe informarse una propiedad.
- “customRestampDays”: Numérico. Cada número de días que se requiere realizar un resellado (90 por defecto).
- Requerido: No
- Ejemplo: 180
- Mayor que 0. Si el número de días es mayor a la fecha de expiración del certificado del último resellado, el resellado se producirá 30 días antes de su fecha de expiración automáticamente.
Request: Ejemplo
{"content": "TWkgQ29udGVuaWRv", "properties":{"my-id": "1234, "my-client-id": "4321"}, "customRestampDays": 180}
Response: Codes
- 201: Created
- 400: Bad Request
- 406: Insufficent Funds
- 500: Internal Error
Response: Datos
- 201:
- “id”: Identificador del contenido, string
- 400
- “error”: Descripción del error en el request
- 406
- “error”: insufficient_funds
Response: Ejemplo
{"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
Find content by ID (recover)
GET /content/{id} Find content by ID
Request: Parámetros
- “id”: Identificador del contenido
- Requerido: Sí
Request: Ejemplo
GET /lta/v2/content/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Response: Codes
- 200: OK
- 400: Bad Request
- 404: No encontrado
- 500: Internal Error
Response: Datos
- 200:
- “id”: Identificador del contenido
- “content”: Contenido en base64Binary
- “properties”: Hash de propiedades asociadas al contenido
- “measures”: Array de medidas de protección aplicadas al contenido
- “protectionContent”: Sello de tiempo aplicado
- “protectionType”: Tipo de protección (siempre “application/timestamp-reply”)
- “applicationDate”: Fecha en la que se realizó el sello de tiempo sobre el contenido
- “expirationDate”: Fecha de caducidad de la medida de protección (fecha de caducidad del certificado con el que realizó el sello de tiempo)
- 400
- “error”: Descripción del error en el request
Response: Ejemplo
{
"id":"xxxxxxxx-5a9e-4593-9189-73c62808c4ed",
"content":"TWkgQ29udGVuaWRv",
"properties":{"my-id": "1234", "my-client-id": "4321"},
"measures":[
{
"protectionContent":"PD94bWwgdmVyc....../.../.....XR1cmU+",
"protectionType":"application/timestamp-reply",
"applicationDate":"2016-02-04T15:42:00.000Z",
"expirationDate":"2020-07-20T22:59:00.000Z"
}
]
}
Delete content by ID (remove)
DELETE /content/{id} Deletes the content
Request: Parámetros
- “id”: Identificador del contenido
- Requerido: Sí
Request: Ejemplo
DELETE /lta/v2/content/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Response: Codes
- 200: Deleted
- 400: Bad Request
- 404: Contenido no encontrado
- 500: Internal Error
Response: Datos
- 200: Se retorna el contenido final antes del borrado con todas las medidas de protección aplicadas en el tiempo al contenido.
- “id”: Identificador del contenido
- “content”: Contenido en base64Binary
- “properties”: Hash de propiedades asociadas al contenido
- “measures”: Array de medidas de protección aplicadas al contenido
- “protectionContent”: Sello de tiempo aplicado
- “protectionType”: Tipo de protección (siempre “application/timestamp-reply”)
- “applicationDate”: Fecha en la que se realizó el sello de tiempo sobre el contenido
- “expirationDate”: Fecha de caducidad de la medida de protección (fecha de caducidad del certificado con el que realizó el sello de tiempo)
- 400
- “error”: Descripción del error en el request
Response: Ejemplo
{
"id":"xxxxxxxx-5a9e-4593-9189-73c62808c4ed",
"content":"TWkgQ29udGVuaWRv",
"properties":{"my-id": "1234", "my-client-id": "4321"},
"measures":[
{
"protectionContent":"PD94bWwgdmVyc....../.../.....XR1cmU+",
"protectionType":"application/timestamp-reply",
"applicationDate":"2016-02-04T15:42:00.000Z",
"expirationDate":"2020-07-20T22:59:00.000Z"
}
]
}
Finds contents by properties (search)
GET /content/findByProperties Finds contents by properties
Request: Parámetros
- “key=value”: key-value get parameters, uno o varios
- Requerido: Sí
Request: Ejemplo
GET /lta/v2/content/findByProperties?my-id=1234&my-client-id=4321
Response: Codes
- 200: OK
- 400: Bad Request
- 500: Internal Error
Response: Datos
- 200: Se retorna un array de contenidos según el criterio de búsqueda por propiedades.
- “id”: Identificador del contenido
- “content”: Contenido en base64Binary
- “properties”: Hash de propiedades asociadas al contenido
- “measures”: Array de medidas de protección aplicadas al contenido
- “protectionContent”: Sello de tiempo aplicado
- “protectionType”: Tipo de protección (siempre “application/timestamp-reply”)
- “applicationDate”: Fecha en la que se realizó el sello de tiempo sobre el contenido
- “expirationDate”: Fecha de caducidad de la medida de protección (fecha de caducidad del certificado con el que realizó el sello de tiempo)
- 400
- “error”: Descripción del error en el request
Response: Ejemplo
No se encuentra contenido, array vacía:
[]
Se encuentra contenido, array de contents:
[{
"id":"c363a204-5a9e-4593-9189-73c62808c4ed",
"content":"TWkgQ29udGVuaWRv",
"properties":{"my-id": "1234", "my-client-id": "4321"},
"measures":[
{
"protectionContent":"PD94bWwgdmVyc....../.../.....XR1cmU+",
"protectionType":"application/timestamp-reply",
"applicationDate":"2016-02-04T15:42:00.000Z",
"expirationDate":"2020-07-20T22:59:00.000Z"
}
]
}]