Endpoints de la API. Especificación exacta de cada operación de la API v1 (parámetros, cuerpo, respuestas y ejemplos), generada del documento OpenAPI con el que se valida cada respuesta real. Los procedimientos completos están en Guías.
/pickings/{id}
Consultar un surtido
El surtido con sus líneas surtidas.
- Alcance (cliente de integración)
pickings:read- Permiso (token de usuario)
- Token válido
- Idempotency-Key
- No aplica
Parámetros de ruta
-
idinteger obligatorioIdentificador numérico del recurso.
Respuestas
200 El surtido con sus líneas.
-
dataobjeto obligatorio16 campos de
data-
idinteger obligatorio -
codestring obligatorioPKG-{id}. -
uuidstring | null -
conceptstring | null -
statusstring obligatoriopending(por iniciar),started,finalized(terminado en el almacén),synchronized(enviado al ERP),cancelled,reverted.Valores:pending,started,finalized,synchronized,cancelled,reverted -
priorityinteger | null -
has_shortagebooleanSe surtió con faltante.
-
commentsstring | null -
user_idinteger | null -
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
documentobjeto | nullEl documento sobre el que se trabajó.
5 campos de
document-
idinteger obligatorio -
typestring obligatorioTipo interno del documento (
purchase_order,sale_order,transfer_order…). -
doc_numstring | integer | null obligatorio -
card_codestring | nullCódigo del proveedor o del cliente.
-
external_refstring | nullLa referencia externa que envió el sistema de origen.
-
-
started_atstring (date-time) | null -
finalized_atstring (date-time) | null -
created_atstring (date-time) | null -
updated_atstring (date-time) | null -
linesarray de objetos obligatorio5 campos de
lines-
product_idinteger obligatorio -
item_codestring | null obligatorio -
qtynumber obligatorio -
batch_numstring | null -
serialsarray de textos
-
-
401 Falta el token o no es válido.
Cuerpo: el sobre de error.
402 La función no está en el plan de la empresa, o la cuenta está suspendida o cancelada.
Cuerpo: el sobre de error.
403
Al cliente le falta el alcance (missing_scope), al usuario el permiso (forbidden), o el token de usuario no
tiene acceso a la ruta (client_not_allowed: aplicación móvil o usuario con verificación en dos pasos).
Cuerpo: el sobre de error.
404 El recurso no existe.
Cuerpo: el sobre de error.
429
Se superó el límite por minuto. Reintente después de los segundos de Retry-After.
Cuerpo: el sobre de error.
Probar
Probar con una instancia
curl "https://empresa.chainlink.mx/api/v1/pickings/101" \
-H "Authorization: Bearer $CHAINLINK_TOKEN" \
-H "Accept: application/json"
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://empresa.chainlink.mx/api/v1/pickings/101', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHAINLINK_TOKEN'),
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://empresa.chainlink.mx/api/v1/pickings/101', {
headers: {
Authorization: `Bearer ${process.env.CHAINLINK_TOKEN}`,
Accept: 'application/json',
},
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://empresa.chainlink.mx/api/v1/pickings/101",
headers={
"Authorization": f"Bearer {os.environ['CHAINLINK_TOKEN']}",
"Accept": "application/json",
},
)
data = response.json()
{
"data": {
"id": 5,
"code": "PKG-5",
"uuid": "6c1f0b8e-3d2a-4f5b-9e7c-2a4d8b1c0f93",
"concept": "dispatch_good",
"status": "pending",
"priority": 50,
"has_shortage": false,
"comments": null,
"user_id": 2,
"operator": {
"id": 2,
"name": "Juan Pérez"
},
"document": {
"id": 6,
"type": "dispatch_good",
"doc_num": "SD-627227",
"card_code": null,
"external_ref": null
},
"started_at": null,
"finalized_at": null,
"created_at": "2026-10-06T16:20:11.000000Z",
"updated_at": "2026-10-06T16:20:11.000000Z",
"lines": []
}
}
{
"error": {
"code": "unauthenticated",
"message": "Falta el token de acceso o ya no es válido.",
"doc_url": "https://chainlink.mx/developers/errores#unauthenticated",
"request_id": "req_01j9x2m4k7q8r5t6v3w0y1z2a3"
},
"errors": [],
"message": "Falta el token de acceso o ya no es válido."
}
{
"error": {
"code": "feature_not_in_plan",
"message": "Función no disponible en tu plan actual.",
"feature": "webhooks.enabled",
"upgrade_url": "/billing/plans",
"doc_url": "https://chainlink.mx/developers/errores#feature_not_in_plan",
"request_id": "req_01j9x2m4k7q8r5t6v3w0y1z2a3"
},
"errors": [],
"message": "Función no disponible en tu plan actual."
}
{
"error": {
"code": "missing_scope",
"message": "El cliente no tiene el alcance products:write.",
"scope": "products:write",
"doc_url": "https://chainlink.mx/developers/errores#missing_scope",
"request_id": "req_01j9x2m4k7q8r5t6v3w0y1z2a3"
},
"errors": [],
"message": "El cliente no tiene el alcance products:write."
}
{
"error": {
"code": "not_found",
"message": "El recurso no existe.",
"doc_url": "https://chainlink.mx/developers/errores#not_found",
"request_id": "req_01j9x2m4k7q8r5t6v3w0y1z2a3"
},
"errors": [],
"message": "El recurso no existe."
}
{
"error": {
"code": "rate_limited",
"message": "Superaste el límite de solicitudes por minuto. Espera los segundos que indica Retry-After.",
"doc_url": "https://chainlink.mx/developers/errores#rate_limited",
"request_id": "req_01j9x2m4k7q8r5t6v3w0y1z2a3"
},
"errors": [],
"message": "Superaste el límite de solicitudes por minuto. Espera los segundos que indica Retry-After."
}