Aprende a usar Code Contract de forma sencilla
🤖 Trackline - Automatización proactiva
🔎 SmartCheck - Evidencias digitales
🚀 Ejemplos de uso por sector
Sector alimentario
Sector construcción
Sector industrial
Sector logístico
Sector Legal
👤 Ejemplos de uso por rol
📊 Ejemplos de uso por funcionalidad
🤝🏻 Partners
Integración de Trackline y SharePoint
Exportar documentos y datos de Trackline a SharePoint usando llamadas HTTP

Trackline es una funcionalidad de la plataforma Code Contract que permite automatizar la recopilación de información sin modificar los procesos de trabajo y sin necesidad de registros manuales.

 

Este post explica cómo descargar automáticamente los documentos de un proceso Trackline y guardarlos en una biblioteca de documentos de SharePoint usando llamadas HTTP.

 

Puede implementarse en:

  • Un backend propio (Node.js, Python, .NET, Java…)
  • Azure Function / AWS Lambda
  • Un servidor corporativo
  • Una API interna que sincronice Trackline con SharePoint

 

1. Paso 1 — Obtener el Token de Trackline

Antes de descargar documentos, necesitas un token JWT.

🔹 Ejemplo de llamada (POST)

POST https://api.codecontractplattform.com/api/login
Content-Type: application/json

Body:

{
"email": "TU_USUARIO",
"password": "TU_CONTRASEÑA"
}

🔹 Respuesta esperada:

{
"token": "eyJ0eXAiOiJKV1QiLCJhbGc..."
}

 

Guarda este token para usarlo en las siguientes llamadas.

2. Paso 2 — Obtener la lista de documentos de un proceso

Para conocer los documentos que hay en Trackline, consulta los metadatos del proceso.

🔹 Ejemplo de llamada (GET)

GET https://api.codecontractplattform.com/api/track-line/ext/track-path/metadata?process_id=ID_DEL_PROCESO
Authorization: Bearer TOKEN_JWT

🔹 Respuesta:

{
"process_id": "12345",
"documents": [
{
"doc_id": "98765",
"doc_name": "Factura_001.pdf"
},
{
"doc_id": "98766",
"doc_name": "PackingList_002.pdf"
}
]
}

 

Cada documento tiene:

  • doc_id → sirve para descargarlo
  • doc_name → nombre original del archivo

3. Paso 3 — Descargar cada documento de Trackline

Para cada doc_id, puedes descargar el archivo binario.

🔹 Llamada (GET):

GET https://api.codecontractplattform.com/api/track-line/ext/attachment/file?attachment_id=98765
Authorization: Bearer TOKEN_JWT

🔹 Respuesta:

Contenido binario (PDF, XML, ZIP, JPG, etc.)

Guárdalo en una variable o como archivo en tu servidor.

4. Paso 4 — Subir el archivo a SharePoint

SharePoint permite subir archivos a una biblioteca mediante su API REST. Necesitas un token de Microsoft Azure AD (OAuth2) para autenticarte contra SharePoint.

4.1 Obtener token de SharePoint (Azure AD)

Llamada típica (para app de servidor):

POST https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

 

Body:

client_id=ID_APP
scope=https://graph.microsoft.com/.default
client_secret=SECRETO_APP
grant_type=client_credentials

 

Respuesta:

{
"access_token": "SP_ACCESS_TOKEN",
"expires_in": 3599
}

 

Ese access_token se usa para subir archivos.

4.2 Subir documentos a una biblioteca de SharePoint

Supongamos que quieres subirlos a:

https://tuempresa.sharepoint.com/sites/Documentos/Shared Documents/Trackline

🔹 Ejemplo de llamada (PUT)

PUT https://tuempresa.sharepoint.com/sites/Documentos/_api/web/GetFolderByServerRelativeUrl('/sites/Documentos/Shared Documents/Trackline')/Files/add(url='Factura_001.pdf',overwrite=true)
Authorization: Bearer SP_ACCESS_TOKEN
Content-Type: application/octet-stream

<binario_del_archivo>

 

Si la subida es correcta, SharePoint devuelve metadatos del archivo.

5. Resumen del flujo completo

1️⃣ Login en Trackline → obtienes token JWT
2️⃣ Consultar metadatos → obtienes la lista de documentos
3️⃣ Descargar cada documento desde Trackline
4️⃣ Autenticación con Azure AD para conectarte a SharePoint
5️⃣ Subir cada archivo a la biblioteca de SharePoint

6. Ejemplo completo (Node.js)

(Puedes copiar tal cual en un backend corporativo)

const fetch = require("node-fetch");
const fs = require("fs");

// 1. Obtener token Trackline
async function getTracklineToken() {
const res = await fetch("https://api.codecontractplattform.com/api/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: "TU_USUARIO",
password: "TU_CONTRASEÑA"
})
});
return (await res.json()).token;
}

// 2. Obtener documentos del proceso
async function getDocuments(token, processId) {
const res = await fetch(
`https://api.codecontractplattform.com/api/track-line/ext/track-path/metadata?process_id=${processId}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
return (await res.json()).documents;
}

// 3. Descargar documento
async function downloadFile(token, docId) {
const res = await fetch(
`https://api.codecontractplattform.com/api/track-line/ext/attachment/file?attachment_id=${docId}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
return Buffer.from(await res.arrayBuffer());
}

// 4. Subir archivo a SharePoint
async function uploadToSharePoint(accessToken, fileName, fileContent) {
const url = `https://tuempresa.sharepoint.com/sites/Documentos/_api/web/GetFolderByServerRelativeUrl('/sites/Documentos/Shared Documents/Trackline')/Files/add(url='${fileName}',overwrite=true)`;

await fetch(url, {
method: "PUT",
headers: {
"Authorization": `Bearer ${accessToken}`,
"Content-Type": "application/octet-stream"
},
body: fileContent
});
}

(async () => {
const tracklineToken = await getTracklineToken();
const docs = await getDocuments(tracklineToken, "12345");

for (const doc of docs) {
const bin = await downloadFile(tracklineToken, doc.doc_id);

// Aquí deberías obtener SP_ACCESS_TOKEN
const spAccessToken = "TOKEN_SHAREPOINT";

await uploadToSharePoint(spAccessToken, doc.doc_name, bin);
}
})();

 

Si necesitas más información o soporte, contacta con el equipo de Code Contract. 🚀

¿Has obtenido lo que buscabas?