Chainlink Developers

Impresión y dispositivos

Impresión desde la app móvil, portales RFID y la API de dispositivos (impresoras y lectores).

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/device-tokens printers.manage

Listar tokens de dispositivo

Lista los tokens de dispositivo (impresoras, lectores RFID, apps) de forma paginada.

Parámetros de consulta

page integer Número de página para la paginación (20 por página)
No usa API Resource; devuelve el resultado crudo de paginate(20) (el envoltorio completo del paginador de Laravel, ordenado por created_at descendente). El atributo 'token_hash' está oculto ($hidden) y nunca se devuelve; el token en texto plano solo se muestra una vez, al crearlo. Todo el grupo de rutas de device-tokens requiere api.permission:printers.manage. Requiere el subdominio del tenant.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/device-tokens" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "message": "No tienes permiso para realizar esta acción."
  }
}
POST /api/v1/device-tokens printers.manage

Crear token de dispositivo

Emite un nuevo token de dispositivo y devuelve el token en texto plano una sola vez.

Cuerpo (JSON)

device_type requerido string (enum) Tipo de dispositivo que autentica el token; debe ser uno de los cuatro valores del enum
device_name requerido string Nombre legible del dispositivo; máximo 255 caracteres
device_id string Identificador de dispositivo opcional provisto por el hardware/cliente; máximo 255 caracteres
capabilities array Lista opcional de cadenas de capacidades a otorgar al dispositivo; por defecto es un arreglo vacío
expires_at string (date) Fecha y hora de expiración opcional; debe ser futura. Null u omitido significa que el token nunca expira
Devuelve 201. El token se crea mediante IssueDeviceTokenAction: texto plano = Str::random(64), almacenado como hash('sha256', token); is_active=true y created_by=auth()->id() se asignan del lado del servidor. capabilities usa [] por defecto. Requiere api.permission:printers.manage. Requiere el subdominio del tenant.
Cuerpo del request
{
  "device_type": "<device_type>",
  "device_name": "<device_name>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device-tokens" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "device_type": "<device_type>",
  "device_name": "<device_name>"
}'
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.device_name": "string",
    "data.device_type": "string (enum)",
    "data.token": "string (64-char)",
    "data.expires_at": "string",
    "warning": "string"
  }
}
GET /api/v1/device-tokens/{id} printers.manage

Obtener token de dispositivo

Muestra los metadatos de un token de dispositivo específico (sin el secreto).

Parámetros de ruta

id requerido integer Clave primaria del token de dispositivo; 404 si no se encuentra
Arreglo {data} construido manualmente (sin API Resource). NO incluye token_hash, created_by ni updated_at. Usa findOrFail(), por lo que un id inexistente devuelve 404. El token en texto plano nunca se devuelve aquí. Requiere api.permission:printers.manage. Requiere el subdominio del tenant.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/device-tokens/{id}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.device_type": "string (enum)",
    "data.device_name": "string",
    "data.device_id": "string",
    "data.capabilities": "array",
    "data.is_active": "boolean",
    "data.last_seen_at": "string",
    "data.expires_at": "string",
    "data.created_at": "string (ISO 8601 datetime)"
  }
}
DELETE /api/v1/device-tokens/{id}/revoke printers.manage

Revocar token de dispositivo

Revoca (desactiva) un token de dispositivo.

Parámetros de ruta

id requerido integer Clave primaria del token de dispositivo a revocar; 404 si no se encuentra
La ruta es DELETE sobre la subruta /{id}/revoke (nombre de ruta device-tokens.revoke). La revocación la realiza RevokeDeviceTokenAction (marca el token como inactivo en lugar de eliminarlo por completo). Usa findOrFail(), por lo que un id inexistente devuelve 404. Requiere api.permission:printers.manage. Requiere el subdominio del tenant.
cURL
curl -X DELETE "https://tu-empresa.chainlink.mx/api/v1/device-tokens/{id}/revoke" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "message": "string"
  }
}
GET /api/v1/mobile/config

Configuración de la app móvil

Devuelve la configuración de la app móvil dirigida por el servidor para el tenant actual: modos de operación/rastreo, política de escaneo por módulo, visibilidad de campos, módulos habilitados y branding.

Sin parámetros.

Requiere contexto de tenant (resuelto desde el subdominio/dominio mediante la tenancy de Stancl). La configuración = tenant->mobileConfig() combinada con los valores por defecto del tenant, y luego se inyectan features + branding. No recibe parámetros. Los modos de escaneo RFID se depuran cuando el módulo RFID no está en feature_flags.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/config" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "operation_mode": "warehouse",
    "tracking_mode": "mixed",
    "scan_modes": [
      "barcode",
      "rfid"
    ],
    "scan_policy": {
      "stock_review": [
        "barcode",
        "rfid"
      ],
      "pickings": [
        "barcode",
        "rfid"
      ],
      "transfers": [
        "barcode",
        "rfid"
      ],
      "receiving": [
        "barcode"
      ],
      "receipts": [
        "barcode"
      ],
      "catalog": [
        "barcode"
      ],
      "lookup": [
        "barcode",
        "rfid"
      ],
      "validate": [
        "barcode",
        "rfid"
      ],
      "positioning": [
        "barcode",
        "rfid"
      ]
    },
    "preferred_input": "auto",
    "allow_camera_fallback": true,
    "inventory_modes": [
      "by_zone",
      "by_position"
    ],
    "field_visibility": {
      "products": {
        "show_serial": true,
        "show_batch": true,
        "show_pallet": false
      },
      "stock_review": {
        "show_zones": true,
        "allow_unknown_items": true
      }
    },
    "ui_hierarchy": {
      "stock_review_grouping": [
        "warehouse",
        "zone",
        "position"
      ]
    },
    "feature_flags": [
      "api.public.enabled",
      "modules.rfid",
      "modules.crossdock",
      "erp.sap.enabled",
      "webhooks.enabled",
      "erp.enabled",
      "modules.printing",
      "modules.rfid_portals"
    ],
    "modules": {
      "rfid": true,
      "crossdock": true
    },
    "branding": [],
    "min_app_version": "1.0.0"
  }
}
POST /api/v1/mobile/print

Enviar trabajo de impresión

Crea uno o más trabajos de impresión desde la app móvil para una plantilla de etiqueta, generando un EPC RFID único por cada copia en plantillas RFID.

Cuerpo (JSON)

printer_id integer Id de la impresora destino. Si es null se usa la impresora por defecto del tenant.
template_slug requerido string Slug de un LabelTemplate activo a renderizar (404 si no coincide ninguna plantilla activa).
variables requerido object Mapa clave/valor de variables de la plantilla. En plantillas RFID, un 'epc' o 'epc_hex' faltante/vacío se autogenera por copia como 'C1' + 22 caracteres hex.
copies integer Número de copias a imprimir; por defecto 1. Cada copia es un trabajo independiente (todo o nada en una sola transacción de BD).
Todas las copias se confirman o ninguna (DB::transaction). Tras confirmar, los EPC impresos se registran con mejor esfuerzo mediante RfidTagRegistrar (item_code obtenido de variables.item_code o variables.label_text); las fallas de registro RFID se registran en log y nunca revierten la impresión. Devuelve 201.
Cuerpo del request
{
  "template_slug": "<template_slug>",
  "variables": "<variables>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/mobile/print" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "template_slug": "<template_slug>",
  "variables": "<variables>"
}'
Respuesta (ejemplo)
{
  "data": {
    "job_id": "integer",
    "status": "string",
    "printer_name": "string",
    "copies": "integer"
  }
}
GET /api/v1/mobile/print/templates

Listar plantillas de etiqueta

Lista las plantillas de etiqueta activas disponibles para impresión móvil.

Sin parámetros.

Solo plantillas activas (LabelTemplate::active()), ordenadas por name. Sin paginación.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/print/templates" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": "integer",
      "name": "string",
      "slug": "string",
      "type": "string",
      "variables": "array",
      "content_options": "object"
    }
  ]
}
GET /api/v1/mobile/print/printers

Listar impresoras

Lista las impresoras con su estado y su indicador de impresora por defecto.

Sin parámetros.

Ordenadas primero por la impresora por defecto y luego por name. Sin paginación.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/print/printers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": "integer",
      "name": "string",
      "ip_address": "string",
      "status": "string",
      "is_default": "boolean",
      "printer_type": "string",
      "location": "string",
      "last_heartbeat_at": "datetime"
    }
  ]
}
GET /api/v1/mobile/print/jobs

Listar trabajos de impresión

Devuelve los trabajos de impresión recientes con su estado en vivo para la pantalla de monitoreo de impresión móvil.

Sin parámetros.

Solo lectura. Los 50 trabajos más recientes (orderByDesc created_at, limit 50). Sin paginación.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/print/jobs" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": 1,
      "status": "pending",
      "template": "Etiqueta RFID de Tag",
      "printer": "Zebra ZD421 - Oficina",
      "source": "mobile",
      "attempts": 0,
      "error_message": null,
      "created_at": "2026-07-08T03:04:49-06:00",
      "completed_at": null
    }
  ]
}
GET /api/v1/mobile/rfid-portals

Listar portales RFID

Lista todos los portales RFID con un resumen de estado/en línea para la app móvil.

Sin parámetros.

Ordenados por name. Incluye portales inactivos. Sin paginación.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/rfid-portals" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": "integer",
      "name": "string",
      "slug": "string",
      "status": "string",
      "is_online": "boolean",
      "is_active": "boolean",
      "reader_brand": "string",
      "reader_model": "string",
      "last_heartbeat_at": "datetime (ISO8601)",
      "antenna_count": "integer",
      "mode": "string"
    }
  ]
}
GET /api/v1/mobile/rfid-portals/{portal}/live

Obtener mobile

Devuelve los eventos recientes de un portal RFID (últimos 5 minutos) junto con un encabezado compacto de estado del portal.

Parámetros de ruta

portal requerido integer Id del portal; resuelto por route model binding implícito (404 si no se encuentra).
Los eventos se limitan a los últimos 5 minutos (recent(5)), del más nuevo al más antiguo, con un tope de 100.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/mobile/rfid-portals/{portal}/live" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "portal": "object",
    "events": "array",
    "event_count": "integer"
  }
}
GET /api/v1/auth/me

Perfil del token actual

Devuelve el perfil y los roles del usuario autenticado.

Sin parámetros.

Registrado dentro del grupo /api/v1, por lo que la ruta efectiva es /api/v1/auth/me (no /api/auth/me). Devuelve el usuario autenticado por el guard api (Passport).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/auth/me" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": 2,
    "name": "Operador Demo",
    "email": "operador@demo.chainlink.mx",
    "username": "operador",
    "roles": [
      "Operador"
    ],
    "avatar_url": null
  }
}
GET /api/v1/rfid-portals/status

Listar rfid portals

Lista el estado de los portales RFID (solo portales activos) autenticada por usuario.

Sin parámetros.

Solo portales activos (RfidPortal::active()). Distinta del GET con autenticación por dispositivo en el mismo controlador; esta requiere un token de usuario. Sin paginación.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/rfid-portals/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "id": "integer",
      "name": "string",
      "status": "string",
      "is_online": "boolean",
      "last_heartbeat": "datetime (ISO8601)",
      "brand": "string",
      "mode": "string"
    }
  ]
}
GET /api/v1/discovery

Listar discovery

Descubrimiento público de tenant: dado un dominio, devuelve las URLs base de API/OAuth, branding, features y la configuración de arranque móvil para que la app se autoconfigure antes del login.

Parámetros de consulta

domain requerido string Dominio/host del tenant a resolver (p. ej. demo.chainlink.mx). 422 si está ausente, 404 si el dominio es desconocido o el tenant está ausente o no está 'active'.
Único endpoint público del grupo: sin auth:api, sin feature:api.public.enabled. Errores: 422 si falta el dominio, 404 si el dominio es desconocido o el tenant está inactivo/ausente. Las fallas al resolver password_client_id se registran en log y se devuelven como null.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/discovery" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "api_base_url": "string",
    "oauth_url": "string",
    "name": "string",
    "branding": "object",
    "features": "string[]",
    "mobile": "object"
  }
}
GET /api/v1/device/print/pending

Listar device

Consulta (polling) los trabajos de impresión pendientes que el dispositivo de impresión que llama puede reclamar.

Parámetros de consulta

printer_id integer Restringe los trabajos pendientes a un id de impresora específico.
limit integer Máximo de trabajos a devolver.
Esta ruta es un GET (Route::get). Los trabajos se acotan a los no asignados o ya enrutados a este token de dispositivo (PrintDispatchService::getPendingJobs).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/device/print/pending" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": [
    {
      "data[].id": "integer",
      "data[].zpl_content": "string",
      "data[].printer_ip": "string",
      "data[].printer_id": "integer",
      "data[].priority": "integer",
      "data[].status": "string",
      "data[].created_at": "datetime (ISO8601)",
      "meta.count": "integer",
      "meta.device": "string"
    }
  ]
}
POST /api/v1/device/print/{jobId}/claim

Crear device

Reclama de forma atómica un trabajo de impresión pendiente para este dispositivo.

Parámetros de ruta

jobId requerido integer Id del trabajo a reclamar. 404 si no está pendiente o está enrutado a otro dispositivo.
Devuelve 409 {error:'already_claimed'} cuando otro dispositivo ganó la contención (claimJob devolvió null). Un dispositivo solo puede reclamar trabajos sin asignar o enrutados a él.
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/print/{jobId}/claim" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.zpl_content": "string",
    "data.printer_ip": "string",
    "data.status": "string"
  }
}
POST /api/v1/device/print/{jobId}/complete

Crear device

Marca como completado un trabajo de impresión reclamado.

Parámetros de ruta

jobId requerido integer Id del trabajo a completar. 404 salvo que este dispositivo lo haya reclamado previamente y esté en sent/printing.
Solo el dispositivo que reclamó el trabajo puede completarlo.
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/print/{jobId}/complete" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.status": "string",
    "data.completed_at": "datetime (ISO8601)"
  }
}
POST /api/v1/device/print/{jobId}/failed

Crear device

Reporta que un trabajo de impresión reclamado falló (con conteo de reintentos).

Parámetros de ruta

jobId requerido integer Id del trabajo que falló. 404 salvo que este dispositivo lo haya reclamado y esté en sent/printing.

Cuerpo (JSON)

error_message requerido string Motivo de falla legible que se registra en el trabajo.
Solo el dispositivo que lo reclamó puede reportar la falla. El reintento lo decide PrintDispatchService::failJob.
Cuerpo del request
{
  "error_message": "<error_message>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/print/{jobId}/failed" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "error_message": "<error_message>"
}'
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.status": "string",
    "data.attempts": "integer",
    "data.max_attempts": "integer",
    "data.will_retry": "boolean"
  }
}
POST /api/v1/device/print/heartbeat

Crear device

Heartbeat del dispositivo de impresión; refresca el last-seen, combina las capacidades y devuelve el número de trabajos reclamables.

Cuerpo (JSON)

capabilities object Mapa de capacidades opcional a combinar con el token de dispositivo.
Actualiza device_token.last_seen_at y combina las capacidades.
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/print/heartbeat" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "status": "string",
    "server_time": "datetime (ISO8601)",
    "pending_jobs": "integer"
  }
}
POST /api/v1/device/print/register

Crear device

Registra o actualiza la impresora física que gestiona este dispositivo (idempotente por ip_address). Lo usa el asistente de configuración de escritorio.

Cuerpo (JSON)

name requerido string Nombre visible de la impresora.
ip_address requerido string IP de la impresora; clave única para updateOrCreate (idempotente).
port integer Puerto TCP; por defecto 9100.
printer_type string Tipo de driver; por defecto 'zebra_zpl'.
location string Etiqueta de ubicación física.
is_default boolean Cuando es true, marca esta impresora como la predeterminada del tenant tras guardar.
capabilities array Lista de capacidades de la impresora; por defecto [].
model string Modelo de la impresora; se incorpora a description.
serial string Serie de la impresora; se incorpora a description como 'SN ...'.
Idempotente mediante Printer::updateOrCreate usando ip_address como clave; asigna connection_type=tcp, status=online, device_token_id, last_heartbeat_at=now. Devuelve 201.
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "ip_address": "<ip_address>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/print/register" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "ip_address": "<ip_address>"
}'
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.name": "string",
    "data.ip_address": "string",
    "data.port": "integer",
    "data.is_default": "boolean",
    "data.status": "string"
  }
}
POST /api/v1/device/rfid/ingest

Crear device

Ingiere un payload crudo de lectura RFID del portal asignado al dispositivo; resuelve los EPC a etiquetas/existencias.

Cuerpo (JSON)

(raw body) requerido object Payload de escaneo específico del lector (EPCs, antena, RSSI, etc.). La forma depende del driver del lector del portal; se procesa aguas abajo, no se valida aquí.
El portal se resuelve por device_token_id (debe estar activo); de lo contrario devuelve 404 {error:'no_portal_assigned'}. Este es el destino del webhook del callback_url generado al momento del registro.
Cuerpo del request
{
  "(raw body)": "<(raw body)>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/rfid/ingest" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "(raw body)": "<(raw body)>"
}'
Respuesta (ejemplo)
{
  "data": {
    "ok": "boolean",
    "received": "integer",
    "portal": "string",
    "timestamp": "datetime (ISO8601)"
  }
}
POST /api/v1/device/rfid/heartbeat

Crear device

Heartbeat del dispositivo RFID; marca el portal asignado como en línea y refresca el last-seen.

Sin parámetros.

Llama a portal->markOnline() cuando hay un portal vinculado y a device_token->touchLastSeen(). Sin parámetros en el cuerpo de la solicitud.
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/rfid/heartbeat" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "status": "string",
    "server_time": "datetime (ISO8601)",
    "portal_id": "integer"
  }
}
POST /api/v1/device/rfid/register

Crear device

Registra un nuevo portal RFID para este dispositivo, generando una URL de callback y un secreto de webhook, y devuelve los pasos de autoconfiguración del driver.

Cuerpo (JSON)

name requerido string Nombre del portal; el slug se deriva como slug(name)+'-'+random(4).
reader_brand requerido string Marca del lector RFID.
reader_model string Modelo del lector.
reader_host requerido string Host/IP del lector.
reader_port integer Puerto del lector; por defecto 5084 (LLRP).
connection_protocol requerido string Cómo se comunican el servidor y el lector.
mode string Modo de operación del portal; por defecto 'tunnel_verification'.
antennas array Lista opcional de configuración de antenas.
antennas.*.port integer Número de puerto de la antena (requerido cuando se proporcionan antenas).
antennas.*.name string Etiqueta de la antena.
antennas.*.power_dbm integer Potencia de la antena en dBm.
antennas.*.enabled boolean Si la antena está habilitada.
Crea un RfidPortal (status 'configuring', is_active true) vinculado al token de dispositivo; el callback_url usa el token en texto plano de Bearer / X-Device-Token / ?device_token. Devuelve 201. El driver se resuelve mediante ReaderDriverFactory.
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "reader_brand": "<reader_brand>",
  "reader_host": "<reader_host>",
  "connection_protocol": "<connection_protocol>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/device/rfid/register" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "reader_brand": "<reader_brand>",
  "reader_host": "<reader_host>",
  "connection_protocol": "<connection_protocol>"
}'
Respuesta (ejemplo)
{
  "data": {
    "data.id": "integer",
    "data.name": "string",
    "data.slug": "string",
    "data.callback_url": "string",
    "data.webhook_secret": "string",
    "data.status": "string",
    "data.supports_auto_configuration": "boolean",
    "data.configuration_steps": "array"
  }
}

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

← Volver al inicio de Developers