Referencia

Recurso

CRUD

Operaciones de lectura y escritura

5 endpoints · base http://localhost/api/v1

¿Prefieres Postman?Colección·Environment·Cómo usarla
get
/{modelo}

Listar registros

Lista paginada. Multi-tenant: si el modelo tiene campo empresa, filtra automaticamente por la empresa del token.

🔒 Bearer tokenhttp://localhost/api/v1/{modelo}

Parámetros

NombreEnTipoDescripción
modelo*pathstring
pagequeryinteger
per_pagequeryinteger
sortquerystringCampo para ordenar
orderquerystring (asc | desc)
searchquerystringBusqueda en campos de texto
leanquerystring (true | false)true = sin resolver relaciones (_str)

Respuestas

200Lista de registros con paginacion y relaciones resueltas
CampoTipoDescripción
dataobject[]
metaobject
meta.modelstring
meta.totalinteger
meta.pageinteger
meta.per_pageinteger
meta.pagesinteger
errorsnull
401Token invalido, expirado o faltante
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Se requiere header Authorization: Bearer <token>"
    }
  ]
}
post
/{modelo}

Crear registro

Crea un nuevo registro. ID auto-asignado. Multi-tenant: empresa se asigna automaticamente del token.

🔒 Bearer tokenhttp://localhost/api/v1/{modelo}

Parámetros

NombreEnTipoDescripción
modelo*pathstring

Cuerpo

Sin propiedades documentadas.

{
  "nombre": "Real Brasileno",
  "abreviatura": "BRL",
  "codigo_sat": "BRL",
  "decimales": 2
}

Respuestas

201Registro creado
CampoTipoDescripción
dataobject
Registro con campos + to_str + {fk}_str para relaciones resueltas
metaobject
meta.modelstring
errorsnull
401Token invalido, expirado o faltante
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Se requiere header Authorization: Bearer <token>"
    }
  ]
}
422Error de validacion
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNIQUE",
      "message": "Registro duplicado",
      "field": null
    }
  ]
}
delete
/{modelo}/{id}

Eliminar registro

Verifica dependencias antes de eliminar. Si hay registros que referencian este, retorna 409 con el detalle.

🔒 Bearer tokenhttp://localhost/api/v1/{modelo}/{id}

Parámetros

NombreEnTipoDescripción
modelo*pathstring
id*pathstring

Respuestas

200Registro eliminado
{
  "data": {
    "deleted": true,
    "id": "10"
  },
  "meta": {
    "model": "Moneda"
  },
  "errors": null
}
401Token invalido, expirado o faltante
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Se requiere header Authorization: Bearer <token>"
    }
  ]
}
404Registro no encontrado (o no pertenece a la empresa del token)
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Record not found with id: 99"
    }
  ]
}
409No se puede eliminar — tiene registros dependientes
{
  "data": null,
  "meta": {
    "model": "Moneda"
  },
  "errors": [
    {
      "code": "HAS_DEPENDENTS",
      "message": "No se puede eliminar: tiene 108672 registros dependientes",
      "dependents": {
        "Venta": 9448,
        "Compra": 917,
        "Poliza": 265
      }
    }
  ]
}
get
/{modelo}/{id}

Obtener un registro

Multi-tenant: verifica que el registro pertenece a la empresa del token.

🔒 Bearer tokenhttp://localhost/api/v1/{modelo}/{id}

Parámetros

NombreEnTipoDescripción
modelo*pathstring
id*pathstring
leanquerystring (true | false)

Respuestas

200Registro encontrado
CampoTipoDescripción
dataobject
Registro con campos + to_str + {fk}_str para relaciones resueltas
metaobject
meta.modelstring
errorsnull
401Token invalido, expirado o faltante
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Se requiere header Authorization: Bearer <token>"
    }
  ]
}
404Registro no encontrado (o no pertenece a la empresa del token)
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Record not found with id: 99"
    }
  ]
}
put
/{modelo}/{id}

Actualizar registro (parcial)

Solo los campos enviados se actualizan.

🔒 Bearer tokenhttp://localhost/api/v1/{modelo}/{id}

Parámetros

NombreEnTipoDescripción
modelo*pathstring
id*pathstring

Cuerpo

Sin propiedades documentadas.

{
  "nombre": "Nombre actualizado"
}

Respuestas

200Registro actualizado
CampoTipoDescripción
dataobject
Registro con campos + to_str + {fk}_str para relaciones resueltas
metaobject
meta.modelstring
errorsnull
401Token invalido, expirado o faltante
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Se requiere header Authorization: Bearer <token>"
    }
  ]
}
404Registro no encontrado (o no pertenece a la empresa del token)
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Record not found with id: 99"
    }
  ]
}
422Error de validacion
CampoTipoDescripción
datanull
metaobject
errorsobject[]
errors[].codestring
errors[].messagestring
errors[].fieldstring
{
  "data": null,
  "meta": {},
  "errors": [
    {
      "code": "UNIQUE",
      "message": "Registro duplicado",
      "field": null
    }
  ]
}