Chainlink Developers

Inventario

Consulta existencias, almacenes y posiciones de almacenamiento.

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/stocks

Listar existencias

Lista las unidades de existencias (cantidad, estatus, serie y lote de un producto en una posición de almacén) de forma paginada, con filtros por producto, almacén y estatus.

Parámetros de consulta

product_id integer Filtra las existencias a un solo id de producto (coincidencia exacta con stocks.product_id).
warehouse_id integer Filtra las existencias cuya posición de almacén pertenece a este almacén (whereHas sobre warehousePosition.warehouse_id).
status string Filtra por estatus de las existencias. Valores conocidos: 'in' (con existencias) y 'out' (sin existencias); coincidencia exacta con stocks.status.
per_page integer Tamaño de página. Se acota a un mínimo de 1 y un máximo de 100; el valor por defecto es 25.
page integer Número de página para la paginación, iniciando en 1.
Protegido por auth:api + feature:api.public.enabled (cualquier token autenticado; las lecturas no requieren permiso). No usa FormRequest: los filtros se leen directamente del query string y los filtros vacíos o no especificados se ignoran. Precarga las relaciones product y warehousePosition.warehouse. La respuesta es una colección StockResource: los campos se envuelven en {data, links, meta}.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/stocks" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": 1,
      "product_id": 6,
      "product_name": "Galletas Marías 200g",
      "item_code": "DEMO-006",
      "qty": 11,
      "status": "in",
      "serial_number": null,
      "batch_num": "L8916-260524",
      "position": {
        "id": 16,
        "bin_code": "A-04-01",
        "whs_code": "DEMO",
        "warehouse_id": 1,
        "warehouse_name": "Almacén Demo Principal"
      },
      "updated_at": "2026-07-05T14:10:22.000000Z"
    },
    {
      "id": 2,
      "product_id": 6,
      "product_name": "Galletas Marías 200g",
      "item_code": "DEMO-006",
      "qty": 313,
      "status": "in",
      "serial_number": null,
      "batch_num": "L9494-260607",
      "position": {
        "id": 17,
        "bin_code": "A-04-02",
        "whs_code": "DEMO",
        "warehouse_id": 1,
        "warehouse_name": "Almacén Demo Principal"
      },
      "updated_at": "2026-07-05T14:10:22.000000Z"
    }
  ]
}
GET /api/v1/stocks/{id}

Obtener existencia

Obtiene una sola unidad de existencias por su id, incluyendo los datos del producto y de la posición de almacén.

Parámetros de ruta

id requerido integer El id del registro de existencias. Se resuelve mediante el route-model binding de Laravel sobre el modelo Stock.
Protegido por auth:api + feature:api.public.enabled. Precarga las relaciones product y warehousePosition.warehouse. Devuelve un solo StockResource envuelto en {data}. Un id desconocido produce un 404 mediante el route-model binding.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/stocks/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "product_id": "integer",
    "product_name": "string",
    "item_code": "string",
    "qty": "number (float)",
    "status": "string",
    "serial_number": "string",
    "batch_num": "string",
    "position": "object",
    "updated_at": "string (ISO 8601)"
  }
}
GET /api/v1/warehouses

Listar almacenes

Lista los almacenes de forma paginada y ordenados por nombre, con un filtro de búsqueda por nombre.

Parámetros de consulta

search string Coincidencia parcial e insensible a mayúsculas sobre el nombre del almacén (SQL LIKE %search%).
per_page integer Tamaño de página; se acota a 1..100, por defecto 25.
page integer Número de página, iniciando en 1.
Protegido por auth:api + feature:api.public.enabled. IMPORTANTE: este endpoint devuelve el JSON crudo del modelo mediante response()->json($paginator); NO usa WarehouseResource (esa clase existe pero aquí no se utiliza), por lo que los campos son las columnas crudas de la base de datos del modelo Warehouse envueltas en un paginador estándar (NO en la forma {data, links, meta} de JsonResource). Ordenado por nombre. Sin FormRequest ni validación. Los atributos accessor (stock, full_name, has_crossdock) NO se incluyen (no hay $appends).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/warehouses" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": 1,
      "whs_code": "DEMO",
      "name": "Almacén Demo Principal",
      "street": null,
      "block": null,
      "zip_code": null,
      "city": "CDMX",
      "state": null,
      "country": "México",
      "created_at": "2026-07-05T14:10:01.000000Z",
      "updated_at": "2026-07-05T14:10:01.000000Z",
      "deleted_at": null,
      "created_by": null,
      "updated_by": null,
      "deleted_by": null
    },
    {
      "id": 5,
      "whs_code": "REG1",
      "name": "Almacén Regional 1",
      "city": "Región 1",
      "country": "México",
      "deleted_by": null
    }
  ],
  "meta": {
    "current_page": 1
  },
  "links": {
    "first": null,
    "last": null,
    "prev": null,
    "next": null
  }
}
GET /api/v1/warehouses/{id}

Obtener almacén

Obtiene un solo almacén por su id, incluyendo sus posiciones.

Parámetros de ruta

id requerido integer Id del almacén. Se resuelve mediante el route-model binding sobre el modelo Warehouse.
Protegido por auth:api + feature:api.public.enabled. Devuelve el JSON crudo del modelo (NO usa WarehouseResource). Precarga la relación positions como modelos anidados crudos. Un id desconocido produce un 404 mediante el route-model binding.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/warehouses/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "whs_code": "string",
    "name": "string",
    "street": "string",
    "block": "string",
    "zip_code": "string",
    "city": "string",
    "state": "string",
    "country": "string",
    "created_at": "string (datetime)",
    "updated_at": "string (datetime)",
    "deleted_at": "string",
    "created_by": "integer",
    "updated_by": "integer",
    "positions": "array<WarehousePosition>"
  }
}
GET /api/v1/warehouse-positions

Listar posiciones

Lista las posiciones de almacén de forma paginada y ordenadas por nombre, junto con su almacén padre, con filtro por almacén.

Parámetros de consulta

warehouse_id integer Filtra las posiciones a un solo almacén (coincidencia exacta con warehouse_positions.warehouse_id).
per_page integer Tamaño de página; se acota a 1..100, por defecto 25.
page integer Número de página, iniciando en 1.
Protegido por auth:api + feature:api.public.enabled. IMPORTANTE: devuelve el JSON crudo del modelo mediante response()->json($paginator); NO usa WarehousePositionResource (esa clase existe pero aquí no se utiliza e incluso expone nombres de campo distintos como name/barcode/type que este endpoint no devuelve). Precarga la relación warehouse. Ordenado por nombre. Sin FormRequest ni validación. Los atributos accessor (barcode, unique_code) NO se incluyen automáticamente (no hay $appends).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/warehouse-positions" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "message": "Server Error"
  }
}
GET /api/v1/warehouse-positions/{id}

Obtener posición

Obtiene una sola posición de almacén por su id, incluyendo su almacén padre.

Parámetros de ruta

id requerido integer Id de la posición de almacén. Se resuelve mediante el route-model binding sobre el modelo WarehousePosition.
Protegido por auth:api + feature:api.public.enabled. Devuelve el JSON crudo del modelo (NO usa WarehousePositionResource). Precarga la relación warehouse. Un id desconocido produce un 404 mediante el route-model binding.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/warehouse-positions/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "warehouse_id": "integer",
    "whs_code": "string",
    "bin_code": "string",
    "level_code": "string",
    "disabled": "boolean",
    "description": "string",
    "created_at": "string (datetime)",
    "updated_at": "string (datetime)",
    "created_by": "integer",
    "updated_by": "integer",
    "warehouse": "object"
  }
}

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

← Volver al inicio de Developers