API v1
Sincronizaciones recurrentes
Configura y administra programaciones automáticas de sincronización para un RUC.
Qué es una sincronización recurrente
Una sincronización recurrente le indica a Zettana que cree solicitudes de sincronización automáticamente según una programación definida por ti.
La programación no descarga documentos por sí sola. Su función es crear solicitudes normales de sincronización en segundo plano, para que después el flujo de recuperación opere como siempre.
Con estos endpoints puedes:
- listar programaciones recurrentes de un RUC
- crear una programación recurrente
- actualizar una programación recurrente
- eliminar una programación recurrente
Endpoints
GET /v1/rucs/:rucId/recurring-sync-schedulesPOST /v1/rucs/:rucId/recurring-sync-schedulesPATCH /v1/rucs/:rucId/recurring-sync-schedules/:scheduleIdDELETE /v1/rucs/:rucId/recurring-sync-schedules/:scheduleId
Objeto de programación recurrente
Las respuestas de este recurso usan un objeto con esta estructura:
id: identificador de la programaciónrucId: identificador del RUC asociadodocumentType: tipo de documento. Consulta Tipos de documentofrequency: frecuencia de ejecución. Puede serDAILY(una vez al dia) oWEEKLY(una vez a la semana)timezone: zona horaria usada para interpretar la programaciónisActive: indica si la programación está activanextRunAt: próxima ejecución programada en formato ISO 8601lastRunAt: última ejecución registrada, si existelastRunMessage: mensaje descriptivo del último intento de ejecucióncreatedAt: fecha de creación de la programaciónupdatedAt: fecha de última actualización
Listar programaciones recurrentes
GET /v1/rucs/:rucId/recurring-sync-schedules
Devuelve la lista paginada de programaciones recurrentes 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 defecto10
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}/recurring-sync-schedules",
params={
"page": 1,
"pageSize": 10,
},
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
recurringSyncSchedules: arreglo de objetos de programación recurrentepagination: metadata de paginación de la respuesta
pagination contiene:
page: página actualpageSize: tamaño de página aplicadototal: cantidad total de programaciones registradastotalPages: cantidad total de páginas disponibles
El detalle de cada elemento está descrito en la sección Objeto de programación recurrente.
Ejemplo de salida
{
"recurringSyncSchedules": [
{
"id": "cf4c27fe-df30-449a-b247-ec3fc8ff7a45",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"documentType": "FACTURA",
"frequency": "DAILY",
"timezone": "America/Guayaquil",
"isActive": true,
"nextRunAt": "2030-04-13T06:00:00.000Z",
"lastRunAt": "2030-04-12T06:00:10.000Z",
"lastRunMessage": "Solicitudes creadas: 2",
"createdAt": "2030-04-12T05:30:00.000Z",
"updatedAt": "2030-04-12T06:00:10.000Z"
}
],
"pagination": {
"page": 1,
"pageSize": 10,
"total": 1,
"totalPages": 1
}
}Crear una programación recurrente
POST /v1/rucs/:rucId/recurring-sync-schedules
Crea una nueva programación automática para ruc y tipo de documento.
Parámetros de ruta
rucId: identificador del RUC
Body
documentType: tipo de documento que cubrirá la programaciónfrequency: frecuencia.DAILYoWEEKLYtimezone: zona horaria de referencia, por ejemploUTCnextRunAt: próxima ejecución deseada en formato ISO 8601
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 = {
"documentType": "FACTURA",
"frequency": "DAILY",
"timezone": "America/Guayaquil",
"nextRunAt": "2030-04-13T06:00:00.000Z",
}
response = requests.post(
f"{BASE_URL}/rucs/{RUC_ID}/recurring-sync-schedules",
headers={"x-api-key": API_KEY},
json=payload,
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
Este endpoint responde con un objeto de programación recurrente. Sus campos
están descritos en la sección Objeto de programación recurrente.
Ejemplo de salida
{
"id": "cf4c27fe-df30-449a-b247-ec3fc8ff7a45",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"documentType": "FACTURA",
"frequency": "DAILY",
"timezone": "America/Guayaquil",
"isActive": true,
"nextRunAt": "2030-04-13T06:00:00.000Z",
"lastRunAt": null,
"lastRunMessage": null,
"createdAt": "2030-04-12T05:30:00.000Z",
"updatedAt": "2030-04-12T05:30:00.000Z"
}Actualizar una programación recurrente
PATCH /v1/rucs/:rucId/recurring-sync-schedules/:scheduleId
Actualiza una programación ya existente.
Parámetros de ruta
rucId: identificador del RUCscheduleId: identificador de la programación
Body
Actualmente puedes enviar uno o varios de estos campos:
documentTypefrequencytimezonenextRunAtisActive
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"
SCHEDULE_ID = "REEMPLAZA_CON_EL_ID_DE_LA_PROGRAMACION"
payload = {
"frequency": "WEEKLY",
"nextRunAt": "2030-04-19T06:00:00.000Z",
"isActive": True,
}
response = requests.patch(
f"{BASE_URL}/rucs/{RUC_ID}/recurring-sync-schedules/{SCHEDULE_ID}",
headers={"x-api-key": API_KEY},
json=payload,
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
Este endpoint responde con el objeto de programación actualizado.
Ejemplo de salida
{
"id": "cf4c27fe-df30-449a-b247-ec3fc8ff7a45",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"documentType": "FACTURA",
"frequency": "WEEKLY",
"timezone": "America/Guayaquil",
"isActive": true,
"nextRunAt": "2030-04-19T06:00:00.000Z",
"lastRunAt": "2030-04-12T06:00:10.000Z",
"lastRunMessage": "Solicitudes creadas: 2",
"createdAt": "2030-04-12T05:30:00.000Z",
"updatedAt": "2030-04-12T06:10:00.000Z"
}Eliminar una programación recurrente
DELETE /v1/rucs/:rucId/recurring-sync-schedules/:scheduleId
Elimina una programación recurrente.
Parámetros de ruta
rucId: identificador del RUCscheduleId: identificador de la programación
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"
SCHEDULE_ID = "REEMPLAZA_CON_EL_ID_DE_LA_PROGRAMACION"
response = requests.delete(
f"{BASE_URL}/rucs/{RUC_ID}/recurring-sync-schedules/{SCHEDULE_ID}",
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
Este endpoint responde con el objeto eliminado.
Ejemplo de salida
{
"id": "cf4c27fe-df30-449a-b247-ec3fc8ff7a45",
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"documentType": "FACTURA",
"frequency": "DAILY",
"timezone": "America/Guayaquil",
"isActive": true,
"nextRunAt": "2030-04-13T06:00:00.000Z",
"lastRunAt": null,
"lastRunMessage": null,
"createdAt": "2030-04-12T05:30:00.000Z",
"updatedAt": "2030-04-12T05:30:00.000Z"
}