API v1
RUCs
Referencia de endpoints para crear, consultar y actualizar RUCs.
Qué es un RUC en Zettana
En Zettana, un RUC representa una credencial operativa con la que la plataforma puede consultar y recuperar documentos desde el SRI.
Con estos endpoints puedes:
- crear un RUC
- listar los RUCs disponibles
- obtener el
rucIda partir del número de RUC - consultar el detalle de un RUC
- actualizar un RUC existente
Para entender cómo pasa de creado a listo para usarse, consulta Ciclo de vida del RUC.
Endpoints
GET /v1/rucsPOST /v1/rucsGET /v1/rucs/by-number/:rucNumberGET /v1/rucs/:rucIdPATCH /v1/rucs/:rucId
Objeto RUC
Las respuestas de este recurso usan un objeto con esta estructura:
id: identificador interno del RUC en Zettananame: nombre visible del RUC dentro de tu cuentauserId: identificador del usuario asociadoruc: número de RUCrucVerificationStatus: estado actual de verificación. Explicado en Ciclo de vida del RUC.rucVerificationStatusMessage: mensaje descriptivo del estadodownloadCount: contador asociado al RUC
Listar RUCs
GET /v1/rucs
Devuelve la lista paginada de RUCs disponibles.
Parámetros de consulta
page: número de página. Por defecto1pageSize: cantidad de elementos por página. Por defecto10name: filtro opcional por nombreruc: filtro opcional por número de RUC
Ejemplo
import requests
BASE_URL = "https://backend.zettana.com/v1"
API_KEY = "REEMPLAZA_CON_TU_API_KEY"
response = requests.get(
f"{BASE_URL}/rucs",
params={
"page": 1,
"pageSize": 10,
},
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
rucs: arreglo de objetos RUCpagination: metadata de paginación de la respuesta
pagination contiene:
page: página actualpageSize: tamaño de página aplicadototal: cantidad total de RUCs que cumplen el filtrototalPages: cantidad total de páginas disponibles
El detalle de cada elemento está descrito en la sección Objeto RUC.
Ejemplo de salida
{
"rucs": [
{
"id": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"name": "Empresa principal",
"userId": "d4aa2a65-b13a-4ccf-9787-8a3a399a1d9d",
"ruc": "XXXXXXXXXXXXX",
"rucVerificationStatus": "SUCCEEDED",
"rucVerificationStatusMessage": "Verificado correctamente.",
"downloadCount": 0
}
],
"pagination": {
"page": 1,
"pageSize": 10,
"total": 1,
"totalPages": 1
}
}Crear un RUC
POST /v1/rucs
Crea un nuevo RUC e inicia su proceso de verificación.
Body
name: nombre visible para identificar el RUC en tu cuentaruc: número de RUCpassword: clave con la que Zettana operará contra el SRI
Ejemplo
import requests
BASE_URL = "https://backend.zettana.com/v1"
API_KEY = "REEMPLAZA_CON_TU_API_KEY"
payload = {
"name": "Empresa principal",
"ruc": "XXXXXXXXXXXXX",
"password": "REEMPLAZA_CON_LA_CLAVE",
}
response = requests.post(
f"{BASE_URL}/rucs",
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 RUC. Sus campos están descritos en la
sección Objeto RUC.
Ejemplo de salida
{
"id": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"name": "Empresa principal",
"userId": "d4aa2a65-b13a-4ccf-9787-8a3a399a1d9d",
"ruc": "XXXXXXXXXXXXX",
"rucVerificationStatus": "ENQUEUED",
"rucVerificationStatusMessage": "Por favor espere",
"downloadCount": 0
}Obtener rucId desde el número de RUC
GET /v1/rucs/by-number/:rucNumber
Devuelve el rucId asociado a un número de RUC.
Parámetros de ruta
rucNumber: número de RUC
Ejemplo
import requests
BASE_URL = "https://backend.zettana.com/v1"
API_KEY = "REEMPLAZA_CON_TU_API_KEY"
RUC_NUMBER = "XXXXXXXXXXXXX"
response = requests.get(
f"{BASE_URL}/rucs/by-number/{RUC_NUMBER}",
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
rucId: identificador interno del RUC en Zettana
Ejemplo de salida
{
"rucId": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6"
}Obtener un RUC
GET /v1/rucs/:rucId
Devuelve el detalle de un RUC específico.
Parámetros de ruta
rucId: identificador interno del RUC
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}",
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
print(response.json())Campos de salida
Este endpoint responde con un objeto RUC. Sus campos están descritos en la
sección Objeto RUC.
Ejemplo de salida
{
"id": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"name": "Empresa principal",
"userId": "d4aa2a65-b13a-4ccf-9787-8a3a399a1d9d",
"ruc": "XXXXXXXXXXXXX",
"rucVerificationStatus": "SUCCEEDED",
"rucVerificationStatusMessage": "Verificado correctamente.",
"downloadCount": 0
}Actualizar un RUC
PATCH /v1/rucs/:rucId
Actualiza los datos del RUC. Si el password cambia, Zettana reinicia la verificación del RUC.
Body
Actualmente este endpoint acepta:
name: nombre del RUCpassword: clave del RUC
Comportamiento importante
- Al actualizar un RUC, se vuelve a encolar su verificación y el estado regresa
a
ENQUEUED
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 = {
"name": "Empresa principal actualizada",
"password": "REEMPLAZA_CON_LA_CLAVE",
}
response = requests.patch(
f"{BASE_URL}/rucs/{RUC_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 un objeto RUC actualizado. Sus campos están
descritos en la sección Objeto RUC.
Ejemplo de salida
{
"id": "3b2781b9-8d95-4b02-a6b7-4d5d66e0b8b6",
"name": "Empresa principal actualizada",
"userId": "d4aa2a65-b13a-4ccf-9787-8a3a399a1d9d",
"ruc": "XXXXXXXXXXXXX",
"rucVerificationStatus": "ENQUEUED",
"rucVerificationStatusMessage": "El ruc necesita ser verificado nuevamente.",
"downloadCount": 0
}