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.

GET /products

Listar productos

Devuelve el catálogo paginado. search busca por parte del código, del nombre o del código de barras. Para sincronizar solo lo que cambió, envíe en updated_since la fecha de la última lectura.

Alcance (cliente de integración)
products:read
Permiso (token de usuario)
Token válido
Idempotency-Key
No aplica

Parámetros de consulta

  • page integer valor por omisión: 1

    Número de página, desde 1.

  • per_page integer valor por omisión: 25

    Elementos por página, de 1 a 100. Un valor mayor se toma como 100.

  • sort string valor por omisión: name

    Campo de orden; antepón - para descendente.

    Valores: name, -name, item_code, -item_code, created_at, -created_at, updated_at, -updated_at
  • updated_since string (date-time)

    Solo lo que cambió desde esta fecha (ISO 8601), para sincronización incremental.

  • search string

    Texto a buscar en código, nombre o código de barras. q es un alias.

  • item_code string

    Código exacto del producto.

  • barcode string

    Código de barras exacto.

  • type string

    Tipo de producto.

Respuestas

200 Página de productos.
  • data array de objetos obligatorio
    14 campos de data
    • id integer obligatorio
    • item_code string obligatorio

      Código del producto en la instancia.

    • sku string obligatorio

      Igual a item_code.

    • name string obligatorio
    • barcode string | null
    • type string | null
    • image_url string | null
    • man_btch_num boolean

      Se maneja por lotes.

    • man_ser_num boolean

      Se maneja por números de serie.

    • sales_unit string | null
    • purchase_unit string | null
    • inventory_item boolean
    • created_at string (date-time) | null
    • updated_at string (date-time) | null
  • links objeto obligatorio
    4 campos de links
    • first string (uri) | null obligatorio
    • last string (uri) | null obligatorio
    • prev string (uri) | null obligatorio

      Página anterior; null en la primera.

    • next string (uri) | null obligatorio

      Página siguiente; null en la última.

  • meta objeto obligatorio
    8 campos de meta
    • current_page integer obligatorio
    • from integer | null

      Posición del primer elemento de la página.

    • last_page integer obligatorio
    • links array de objetos

      Enlaces de página para interfaces; no hace falta leerlos.

    • path string (uri)
    • per_page integer obligatorio
    • to integer | null
    • total integer obligatorio

      Total de elementos con los filtros aplicados.

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.

422 Datos no válidos (validation_failed), una llave de idempotencia reutilizada con otra solicitud (idempotency_key_reused) o una regla de negocio que bloquea la operación (rule_blocked).

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

La solicitud sale del navegador hacia la instancia indicada; nada pasa por chainlink.mx. El token se conserva solo en esta pestaña.

Obtener un token con un cliente de integración

Credenciales de Configuración › Clientes API (grant client_credentials). El secreto se usa una vez y no se guarda. Los tokens de usuario se obtienen fuera de la consola; ver Autenticación.

Solicitud
curl "https://empresa.chainlink.mx/api/v1/products?search=aceite" \
  -H "Authorization: Bearer $CHAINLINK_TOKEN" \
  -H "Accept: application/json"
Respuesta
{
    "data": [
        {
            "id": 101,
            "item_code": "P-1001",
            "sku": "P-1001",
            "name": "Aceite comestible 1 L",
            "barcode": "7501234567890",
            "type": "I",
            "image_url": null,
            "man_btch_num": true,
            "man_ser_num": false,
            "sales_unit": "PZA",
            "purchase_unit": "CJA",
            "inventory_item": true,
            "created_at": "2026-09-14T15:02:11.000000Z",
            "updated_at": "2026-10-05T18:40:03.000000Z"
        }
    ],
    "links": {
        "first": "https://demo.chainlink.mx/api/v1/products?page=1",
        "last": "https://demo.chainlink.mx/api/v1/products?page=4",
        "prev": null,
        "next": "https://demo.chainlink.mx/api/v1/products?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 4,
        "links": [],
        "path": "https://demo.chainlink.mx/api/v1/products",
        "per_page": 25,
        "to": 25,
        "total": 87
    }
}