Chainlink Developers

Operaciones

Recepciones, pickings (surtido) y transferencias entre almacenes.

URL base

Todas las rutas son relativas a https://tu-empresa.chainlink.mx (el subdominio de tu tenant) y requieren un token Bearer. Consulta Autenticación y Convenciones.
GET /api/v1/receipts

Listar recepciones

Lista las recepciones de mercancía (documentos de entrada) de la más reciente a la más antigua, con paginación y filtros opcionales por estado y por rango de fecha de creación.

Parámetros de consulta

status string Filtra por la columna enum de estado de la recepción (p. ej. pending, started, finalized, synchronized). Los valores provienen de config('constants.receipts.status'). Coincidencia exacta de cadena.
from string (date) Límite inferior de created_at (inclusivo). Se compara con whereDate, por lo que se espera una fecha YYYY-MM-DD.
to string (date) Límite superior de created_at (inclusivo). Se compara con whereDate; espera YYYY-MM-DD.
per_page integer Tamaño de página. Se lee de per_page y se acota entre 1 y 100; por defecto 25.
page integer Número de página (base 1) para el LengthAwarePaginator.
Protegido por auth:api + feature:api.public.enabled; sin api.permission (la lectura está abierta a cualquier token autenticado). Requiere el subdominio del tenant (multi-tenant; se ejecuta contra la base de datos del tenant). Ordenado por created_at DESC. PROBLEMA LATENTE IMPORTANTE: el index precarga ['document','user'], pero Receipt no tiene la relación document() (solo receiptable() morphTo), por lo que tal como está lanza BadMethodCallException (HTTP 500) al ejecutar la consulta. Enviar ?status= filtra la columna enum receipts.status (válido). La columna warehouse_id se eliminó en una migración posterior y no se devuelve.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/receipts" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "message": "Server Error"
  }
}
GET /api/v1/receipts/{id}

Obtener recepción

Obtiene una recepción de mercancía individual junto con sus líneas de producto recibidas y su propietario.

Parámetros de ruta

id requerido integer Clave primaria de la recepción. 404 si no se encuentra.
Protegido por auth:api + feature:api.public.enabled; sin api.permission. Requiere el subdominio del tenant. Carga ['document','receivedProducts.product','user']. PROBLEMA LATENTE IMPORTANTE: no existe la relación document() en Receipt, por lo que esta precarga lanza BadMethodCallException (HTTP 500) tal como está escrita. La respuesta es el modelo crudo (sin API Resource, sin envoltorio data); el modelo no declara $hidden/$appends, así que solo se serializan las columnas de la base de datos más las relaciones cargadas.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/receipts/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "uuid": "string",
    "concept": "string (enum)",
    "status": "string (enum)",
    "user_id": "integer",
    "comments": "string",
    "receiptable_id": "integer",
    "receiptable_type": "string",
    "doc_entry": "string",
    "transaction_id": "string",
    "doc_message": "string",
    "doc_created_at": "datetime",
    "started_at": "datetime",
    "finalized_at": "datetime",
    "created_at": "datetime",
    "updated_at": "datetime",
    "created_by": "integer",
    "updated_by": "integer",
    "user": "object (User)",
    "document": "object",
    "receivedProducts": "array<ReceivedProduct>"
  }
}
GET /api/v1/pickings

Listar pickings

Lista los pickings (tareas de surtido de salida) de la más reciente a la más antigua, con paginación y filtros opcionales por estado y por rango de fecha de creación.

Parámetros de consulta

status string Filtra por la columna enum pickings.status (config constants.pickings.status). Coincidencia exacta.
from string (date) Límite inferior inclusivo de created_at (YYYY-MM-DD).
to string (date) Límite superior inclusivo de created_at (YYYY-MM-DD).
per_page integer Tamaño de página, acotado entre 1 y 100, por defecto 25.
page integer Número de página (base 1).
Protegido por auth:api + feature:api.public.enabled; sin api.permission. Requiere el subdominio del tenant. Usa SoftDeletes (se excluyen los registros eliminados de forma lógica). Ordenado por created_at DESC. PROBLEMA LATENTE IMPORTANTE: el index precarga ['document','user'], pero Picking no tiene la relación document() (solo pickeable() morphTo), por lo que tal como está lanza BadMethodCallException (HTTP 500). ?status= filtra la columna enum pickings.status (válido).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/pickings" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "message": "Server Error"
  }
}
GET /api/v1/pickings/{id}

Obtener picking

Obtiene un picking individual junto con sus líneas de producto surtidas y su propietario.

Parámetros de ruta

id requerido integer Clave primaria del picking. 404 si no se encuentra (los registros eliminados de forma lógica también devuelven 404).
Protegido por auth:api + feature:api.public.enabled; sin api.permission. Requiere el subdominio del tenant. Carga ['document','pickedProducts.product','user']. PROBLEMA LATENTE IMPORTANTE: no existe la relación document() en Picking, por lo que esta precarga lanza BadMethodCallException (HTTP 500) tal como está escrita. Salida del modelo crudo (sin API Resource / sin envoltorio data); sin $hidden/$appends, así que solo se serializan las columnas de la base de datos más las relaciones cargadas.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/pickings/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "uuid": "string",
    "concept": "string (enum)",
    "status": "string (enum)",
    "tunnel_is_complete": "boolean",
    "user_id": "integer",
    "comments": "string",
    "pickeable_id": "integer",
    "pickeable_type": "string",
    "doc_entry": "string",
    "transaction_id": "string",
    "doc_message": "string",
    "doc_created_at": "datetime",
    "started_at": "datetime",
    "finalized_at": "datetime",
    "created_at": "datetime",
    "updated_at": "datetime",
    "deleted_at": "datetime",
    "created_by": "integer",
    "updated_by": "integer",
    "deleted_by": "integer",
    "user": "object (User)",
    "document": "object",
    "pickedProducts": "array<PickedProduct>"
  }
}
GET /api/v1/transfers

Listar transferencias

Lista las transferencias de existencias (movimientos entre almacenes) de la más reciente a la más antigua, con paginación y filtros opcionales por estado y por rango de fecha de creación.

Parámetros de consulta

status string Filtro de estado previsto. ADVERTENCIA: la tabla transfers no tiene columna 'status' (solo wms_status y sap_status), por lo que enviar ?status= dispara un error de SQL (columna desconocida). Omítelo; filtra del lado del cliente por wms_status/sap_status.
from string (date) Límite inferior inclusivo de created_at (YYYY-MM-DD).
to string (date) Límite superior inclusivo de created_at (YYYY-MM-DD).
per_page integer Tamaño de página, acotado entre 1 y 100, por defecto 25.
page integer Número de página (base 1).
Protegido por auth:api + feature:api.public.enabled; sin api.permission. Requiere el subdominio del tenant. Ordenado por created_at DESC. Sin relaciones precargadas en el index. IMPORTANTE: el filtro ->when(status) apunta a una columna 'status' inexistente; enviar ?status= provoca un error de SQL. from/to y la paginación funcionan con normalidad. Las transferencias no usan borrado lógico.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/transfers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "from": null,
    "to": null,
    "last_page": 1,
    "total": 0
  },
  "links": {
    "first": "https://demo.chainlink.mx/api/v1/transfers?page=1",
    "last": "https://demo.chainlink.mx/api/v1/transfers?page=1",
    "prev": null,
    "next": null
  }
}
GET /api/v1/transfers/{id}

Obtener transferencia

Obtiene una transferencia de existencias individual junto con el detalle de sus líneas.

Parámetros de ruta

id requerido integer Clave primaria de la transferencia. 404 si no se encuentra.
Protegido por auth:api + feature:api.public.enabled; sin api.permission. Requiere el subdominio del tenant. Carga únicamente 'details' (sin relación user en show). Salida del modelo crudo (sin API Resource / sin envoltorio data); sin $hidden/$appends, así que solo se serializan las columnas de la base de datos más la relación details. Este endpoint no presenta el problema de la relación document.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/transfers/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "user_id": "integer",
    "from_w_id": "integer",
    "to_w_id": "integer",
    "wms_status": "string (enum)",
    "sap_status": "string (enum)",
    "from_whs_code": "string",
    "to_whs_code": "string",
    "doc_entry": "integer",
    "transaction_id": "integer",
    "message": "string",
    "sap_request": "object",
    "sap_response": "object",
    "created_at": "datetime",
    "updated_at": "datetime",
    "created_by": "integer",
    "updated_by": "integer",
    "details": "array<TransferDetail>"
  }
}

¿Necesitas habilitar un endpoint o tienes dudas? Contáctanos.

← Volver al inicio de Developers