Chainlink Developers

Clientes y proveedores

Administra el padrón de clientes y proveedores del tenant.

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

Listar clientes

Devuelve un listado paginado de clientes, con filtro opcional por nombre.

Parámetros de consulta

search string Filtro por subcadena, sin distinguir mayúsculas/minúsculas, aplicado al nombre del cliente (WHERE name LIKE %search%). Sin validación; solo se usa cuando no está vacío.
per_page integer Tamaño de página para la paginación. Los valores menores a 1 se ajustan a 1 y los mayores a 100 se ajustan a 100. Por defecto 25.
page integer Número de página del paginador estándar de Laravel (empezando en 1).
Protegido por auth:api + feature:api.public.enabled (cualquier token autenticado; las lecturas no requieren permiso). Los resultados se ordenan por name ASC. Devuelve la serialización cruda del modelo Eloquent (sin API Resource ni $hidden). Los accessors de FormattedDates NO se agregan, por lo que no aparecen. El tenant se resuelve a partir del subdominio de la petición.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/clients" \
  -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/clients?page=1",
    "last": "https://demo.chainlink.mx/api/v1/clients?page=1",
    "prev": null,
    "next": null
  }
}
GET /api/v1/clients/{client}

Obtener cliente

Obtiene un cliente individual por su id.

Parámetros de ruta

client requerido integer Id del cliente. Se resuelve mediante route-model binding de Eloquent; 404 si no se encuentra. Los clientes con soft delete no se resuelven.
Solo lectura; no requiere permiso más allá de la autenticación. Devuelve el modelo crudo (sin API Resource). No se cargan relaciones (se omiten ventas/transacciones).
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/clients/{client}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "document_type": "string(1)",
    "document_id": "integer",
    "name": "string",
    "email": "string",
    "phone": "string",
    "last_purchase": "string(datetime)",
    "total_purchases": "integer",
    "total_paid": "decimal(10,2)",
    "balance": "decimal",
    "created_at": "string(datetime)",
    "updated_at": "string(datetime)",
    "deleted_at": "string(datetime)",
    "created_by": "integer",
    "updated_by": "integer",
    "deleted_by": "integer"
  }
}
POST /api/v1/clients exits.manage

Crear cliente

Crea un cliente.

Cuerpo (JSON)

name requerido string Nombre visible del cliente.
document_type string Prefijo de tipo de documento de exactamente un carácter (por ejemplo 'V'). Por defecto 'V' en la base de datos si se omite.
document_id requerido integer Número de documento de identidad/fiscal; debe ser único entre los clientes.
email string Dirección de correo electrónico válida.
phone string Número de teléfono, hasta 50 caracteres.
La escritura requiere api.permission:exits.manage (mapeado por EnsureApiPermission al mismo permiso que aplica la app web). La validación es inline con $request->validate (sin clase FormRequest). Un fallo de validación devuelve 422 con {message, errors}. last_purchase/totals/balance no se aceptan desde la petición (no están en $fillable).
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "document_id": 1,
  "email": "<email>",
  "phone": "<phone>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/clients" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "document_id": 1,
  "email": "<email>",
  "phone": "<phone>"
}'
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "name": "string",
    "document_type": "string(1)",
    "document_id": "integer",
    "email": "string",
    "phone": "string",
    "total_purchases": "integer",
    "total_paid": "decimal(10,2)",
    "balance": "decimal",
    "created_at": "string(datetime)",
    "updated_at": "string(datetime)"
  }
}
PUT /api/v1/clients/{client} exits.manage

Actualizar cliente

Actualiza un cliente (mediante PUT o PATCH).

Parámetros de ruta

client requerido integer Id del cliente a actualizar; 404 si no se encuentra.

Cuerpo (JSON)

name string Nuevo nombre; se valida solo cuando está presente.
document_type string Tipo de documento de un solo carácter.
document_id integer Número de documento; la verificación de unicidad ignora el registro del propio cliente.
email string Correo electrónico de contacto.
phone string Teléfono de contacto.
Acepta PUT y PATCH (update de apiResource). La escritura requiere api.permission:exits.manage. Las reglas 'sometimes' implican que solo se validan/actualizan los campos enviados; document_type/email/phone siempre se evalúan (nullable). 422 en caso de error de validación.
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}
cURL
curl -X PUT "https://tu-empresa.chainlink.mx/api/v1/clients/{client}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}'
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "name": "string",
    "document_type": "string(1)",
    "document_id": "integer",
    "email": "string",
    "phone": "string",
    "updated_at": "string(datetime)"
  }
}
DELETE /api/v1/clients/{client} exits.manage

Eliminar cliente

Elimina un cliente mediante soft delete.

Parámetros de ruta

client requerido integer Id del cliente a eliminar; 404 si no se encuentra.
Soft delete (Client usa SoftDeletes + userstamps suaves); el registro se conserva con deleted_at/deleted_by establecidos. La escritura requiere api.permission:exits.manage.
cURL
curl -X DELETE "https://tu-empresa.chainlink.mx/api/v1/clients/{client}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
GET /api/v1/providers

Listar proveedores

Devuelve un listado paginado de proveedores, con filtro opcional por nombre.

Parámetros de consulta

search string Filtro por subcadena, sin distinguir mayúsculas/minúsculas, sobre el nombre del proveedor (WHERE name LIKE %search%).
per_page integer Tamaño de página; ajustado al rango 1..100, por defecto 25.
page integer Número de página del paginador (empezando en 1).
Protegido por auth:api + feature:api.public.enabled; las lecturas no requieren permiso. Ordenado por name ASC. Serialización cruda del modelo (sin API Resource ni $hidden). El tenant se resuelve a partir del subdominio.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/providers" \
  -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/providers?page=1",
    "last": "https://demo.chainlink.mx/api/v1/providers?page=1",
    "prev": null,
    "next": null
  }
}
GET /api/v1/providers/{provider}

Obtener proveedor

Obtiene un proveedor individual por su id.

Parámetros de ruta

provider requerido integer Id del proveedor; 404 si no se encuentra. Los registros con soft delete no se resuelven.
Solo lectura; no requiere permiso más allá de la autenticación. Modelo crudo (sin API Resource). Las relaciones (transacciones/recepciones) no se cargan.
cURL
curl -X GET "https://tu-empresa.chainlink.mx/api/v1/providers/{provider}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "name": "string",
    "description": "string",
    "paymentinfo": "string",
    "email": "string",
    "phone": "string",
    "created_at": "string(datetime)",
    "updated_at": "string(datetime)",
    "deleted_at": "string(datetime)",
    "created_by": "integer",
    "updated_by": "integer",
    "deleted_by": "integer"
  }
}
POST /api/v1/providers entries.manage

Crear proveedor

Crea un proveedor.

Cuerpo (JSON)

name requerido string Nombre visible del proveedor.
description string Descripción de texto libre, hasta 1000 caracteres.
email string Correo electrónico de contacto válido.
phone string Número de teléfono, hasta 50 caracteres.
paymentinfo string Datos de pago, hasta 1000 caracteres.
La escritura requiere api.permission:entries.manage. Validación inline con $request->validate (sin FormRequest). No hay restricción de unicidad sobre el nombre/email del proveedor. 422 en caso de error de validación con {message, errors}.
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}
cURL
curl -X POST "https://tu-empresa.chainlink.mx/api/v1/providers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}'
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "name": "string",
    "description": "string",
    "paymentinfo": "string",
    "email": "string",
    "phone": "string",
    "created_at": "string(datetime)",
    "updated_at": "string(datetime)"
  }
}
PUT /api/v1/providers/{provider} entries.manage

Actualizar proveedor

Actualiza un proveedor (mediante PUT o PATCH).

Parámetros de ruta

provider requerido integer Id del proveedor a actualizar; 404 si no se encuentra.

Cuerpo (JSON)

name string Nuevo nombre; se valida solo cuando está presente.
description string Descripción.
email string Correo electrónico de contacto.
phone string Teléfono de contacto.
paymentinfo string Datos de pago.
Acepta PUT y PATCH. La escritura requiere api.permission:entries.manage. Solo 'name' usa 'sometimes'; los demás campos siempre se evalúan (nullable), por lo que enviar null los limpia. 422 en caso de error de validación.
Cuerpo del request
{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}
cURL
curl -X PUT "https://tu-empresa.chainlink.mx/api/v1/providers/{provider}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Producto de ejemplo",
  "email": "<email>",
  "phone": "<phone>"
}'
Respuesta (ejemplo)
{
  "data": {
    "id": "integer",
    "name": "string",
    "description": "string",
    "paymentinfo": "string",
    "email": "string",
    "phone": "string",
    "updated_at": "string(datetime)"
  }
}
DELETE /api/v1/providers/{provider} entries.manage

Eliminar proveedor

Elimina un proveedor mediante soft delete.

Parámetros de ruta

provider requerido integer Id del proveedor a eliminar; 404 si no se encuentra.
Soft delete (Provider usa SoftDeletes + userstamps suaves); se establecen deleted_at/deleted_by. La escritura requiere api.permission:entries.manage.
cURL
curl -X DELETE "https://tu-empresa.chainlink.mx/api/v1/providers/{provider}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

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

← Volver al inicio de Developers