API v1
Sincronizaciones
Solicita y consulta sincronizaciones de documentos por período y tipo de documento.
Qué es una sincronización
Una sincronización le indica a Zettana que recupere documentos para un RUC, para un período específico y para un tipo de documento específico.
Este proceso no devuelve directamente los documentos. Su objetivo es iniciar el trabajo de recuperación y dejarlo disponible para consulta posterior.
Con estos endpoints puedes:
- crear una sincronización
- consultar las sincronizaciones ya registradas
- revisar el estado actual de cada solicitud
- ver si una sincronización fue creada manualmente o por una programación recurrente
Para entender cómo evoluciona una sincronización desde que se crea hasta que termina, consulta Ciclo de vida de una sincronización.
Si quieres configurar ejecuciones automáticas, consulta Sincronizaciones recurrentes.
Endpoints
POST /v1/rucs/:rucId/sync-requestsGET /v1/rucs/:rucId/sync-requests
Objeto de sincronización
Las respuestas de este recurso usan un objeto con esta estructura:
id: identificador de la sincronizaciónrucId: identificador del RUC asociadosource: origen de la sincronización. Puede serMANUALoRECURRINGyear: año consultadomonth: mes consultadodocumentType: tipo de documento solicitado. Consulta Tipos de documentosyncStatus: estado actual de la sincronización. Explicado en Ciclo de vida de una sincronización.statusMessage: mensaje descriptivo del estado
Crear una sincronización
POST /v1/rucs/:rucId/sync-requests
Crea una nueva solicitud de sincronización para un RUC.
Parámetros de ruta
rucId: identificador del RUC
Body
year: año a consultarmonth: mes a consultardocumentType: tipo de documento a recuperar
Los valores admitidos para documentType están detallados en
Tipos de documento.
Ejemplo
import requests
BASE_URL = "https://backend.zettana.com/v1"
API_KEY = "REEMPLAZA_CON_TU_API_KEY"
RUC_ID = "REEMPLAZA_CON_EL_ID_DEL_RUC"
payload = {
"year": 2025,
"month": 10,
"documentType": "FACTURA",
}
response = requests.post(
f"{BASE_URL}/rucs/{RUC_ID}/sync-requests",
headers={"x-api-key": API_KEY},
json=payload,
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
id: identificador de la sincronización creadarucId: identificador del RUC asociadosource: origen de la sincronización. En este endpoint seráMANUALyear: año solicitadomonth: mes solicitadodocumentType: tipo de documento solicitado. Consulta Tipos de documentosyncStatus: estado inicial de la sincronizaciónstatusMessage: mensaje descriptivo del estado inicial
Ejemplo de salida
{
"id": "6b2a4b3a-5eb0-4fdc-b1b1-81857ff7e52d",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"source": "MANUAL",
"year": 2025,
"month": 10,
"documentType": "FACTURA",
"syncStatus": "ENQUEUED",
"statusMessage": "Por favor espere"
}Consultar sincronizaciones
GET /v1/rucs/:rucId/sync-requests
Devuelve la lista paginada de sincronizaciones registradas para un RUC.
Parámetros de ruta
rucId: identificador del RUC
Parámetros de consulta
page: número de página. Por defecto1pageSize: cantidad de elementos por página. Por defecto10documentType: filtro opcional por tipo de documento
Ejemplo
import requests
BASE_URL = "https://backend.zettana.com/v1"
API_KEY = "REEMPLAZA_CON_TU_API_KEY"
RUC_ID = "REEMPLAZA_CON_EL_ID_DEL_RUC"
response = requests.get(
f"{BASE_URL}/rucs/{RUC_ID}/sync-requests",
params={
"page": 1,
"pageSize": 10,
},
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
syncRequests: arreglo de objetos de sincronizaciónpagination: metadata de paginación de la respuesta
pagination contiene:
page: página actualpageSize: tamaño de página aplicadototal: cantidad total de sincronizaciones que cumplen el filtrototalPages: cantidad total de páginas disponibles
El detalle de cada elemento está descrito en la sección Objeto de sincronización.
Ejemplo de salida
{
"syncRequests": [
{
"id": "6b2a4b3a-5eb0-4fdc-b1b1-81857ff7e52d",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"source": "MANUAL",
"year": 2025,
"month": 10,
"documentType": "FACTURA",
"syncStatus": "SUCCEEDED",
"statusMessage": "Sincronización completada."
},
{
"id": "867fe7bb-f1b9-4cc3-a0ee-c4e87d60dd9f",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"source": "RECURRING",
"year": 2025,
"month": 9,
"documentType": "COMPROBANTE_RETENCION",
"syncStatus": "PROCESSING",
"statusMessage": "Procesando solicitud."
}
],
"pagination": {
"page": 1,
"pageSize": 10,
"total": 2,
"totalPages": 1
}
}Relación con documentos
Una sincronización y la consulta de documentos son pasos distintos.
Primero solicitas la sincronización del período y tipo de documento que te interesa. Después puedes consultar los documentos ya disponibles para ese mismo período desde los endpoints de documentos.