Saltearse al contenido

Estructura de entidades

Una entidad representa un modelo de datos o una tabla dentro del sistema, encapsulando su estructura, campos y relaciones con otras entidades. Las entidades son estructuras de datos fundamentales en la aplicación, que permiten guardar, recuperar y manipular registros de datos.

Para crear una entidad desde cero, es necesario definir sus propiedades, campos y relaciones. A continuación se presentan las propiedades clave de una entidad:

CampoTipoDescripción
auditedbooleanIndica si los cambios en los registros de la entidad deben ser registrados para fines de auditoría.
read_onlybooleanCuando es verdadero, impide cualquier modificación en los registros de la entidad a través de todo el sistema.
importablebooleanIndica si los registros de esta entidad pueden ser importados desde una fuente externa.
show_on_menubooleanDetermina si esta entidad aparecerá como un elemento en el menú de navegación principal.
schemastringEsquema de la base de datos donde se encuentra la tabla de la entidad. (las entidades internas usarán public)
datasourcestringIdentificador de la conexión a la base de datos que esta entidad debe usar.
object_namestringNombre técnico interno del objeto de la entidad, que a menudo corresponde al nombre de la tabla de la base de datos.
object_labelstringNombre legible por humanos para la entidad, utilizado para fines de visualización en la interfaz de usuario.
fieldsArray<Field>Arreglo de objetos que definen los atributos de la entidad.
list_asArray<string>Arreglo de nombres de campos que se mostrarán por defecto en las vistas de lista para esta entidad.
relationshipsArray<Relationship>Arreglo de objetos, cada uno definiendo una relación (por ejemplo, muchos a uno) con otra entidad.

Ejemplo de payload del endpoint de la entidad

Sección titulada «Ejemplo de payload del endpoint de la entidad»

Al trabajar con llamadas a la API, es esencial comprender la estructura del payload al crear o actualizar una entidad. A continuación se muestra un ejemplo de un payload JSON para una entidad:

{
"audited": true,
"read_only": false,
"importable": true,
"show_on_menu": true,
"schema": "dasec",
"datasource": "",
"object_name": "entity",
"object_label": "Entity",
"fields": [],
"list_as": [],
"relationships": []
}
CampoTipoValor por DefectoRequeridoDescripción
lennumber0Longitud del campo (para cadenas, etc).
sizenumber0Tamaño del campo (para numéricos, etc).
precisionnumber0Precisión para campos decimales.
commentsstring""NoComentarios o notas sobre el campo.
groupstring""NoGrupo al que pertenece el campo.
helpstring""NoTexto de ayuda para el campo.
labelstringEtiqueta para fines de visualización.
namestringNombre interno del campo.
schemastringpublicNoNo se usa, por defecto es public, no modificar.
typestringintegerTipo de dato del campo.
regexstring""NoExpresión regular para validación.
default_expstring""NoExpresión para el valor por defecto.
options_expstring""NoExpresión para generar opciones.
auditedbooleantrueNoIndica si los cambios en el campo son auditados.
importablebooleanfalseNoIndica si el campo puede ser importado.
reportablebooleanfalseNoIndica si el campo es reportable.
visiblebooleantrueNoDetermina si el campo es visible en la interfaz de usuario.
auto_incrementbooleanfalseNoSi es verdadero, el campo se autoincrementa.
default_valueanynullNoValor por defecto para el campo.
editablebooleantrueNoSi es verdadero, el campo es editable.
indexablebooleantrueNoSi es verdadero, el campo es indexable.
inline_editbooleanfalseNoSi es verdadero, el campo puede ser editado en línea.
readonlybooleanfalseNoSi es verdadero, el campo es de solo lectura.
requiredbooleantrueNoSi es verdadero, el campo es requerido.
searchablebooleantrueNoSi es verdadero, el campo es buscable.
uniquebooleanfalseNoSi es verdadero, el campo debe ser único.
optionsArray<Option>[]NoLista de opciones para campos de selección.

Los siguientes tipos de campo son soportados:

TipoValor (clave)Descripción
Fecha y horadatetimeValor de fecha y hora
FechadateValor de fecha
HoratimeValor de hora
TextotextTexto largo
CadenastringTexto corto o cadena
OpciónoptionOpción seleccionable
NúmeronumberValor numérico
DecimaldecimalNúmero decimal
EnterointegerNúmero entero
ArrayarrayArreglo de valores
BooleanobooleanValor verdadero/falso
ArchivofileCarga de archivo
ImagenimageCarga de imagen
{
"len": 0,
"size": 0,
"precision": 0,
"comments": "",
"group": "",
"help": "",
"label": "Field",
"name": "field",
"schema": "public",
"type": "integer",
"regex": "",
"options": [],
"default_exp": "",
"options_exp": "",
"audited": true,
"importable": false,
"reportable": false,
"visible": true,
"auto_increment": false,
"default_value": null,
"editable": true,
"indexable": true,
"inline_edit": false,
"readonly": false,
"required": true,
"searchable": true,
"unique": true
}
CampoTipoValor por DefectoRequeridoDescripción
relation_namestringNombre interno de la relación.
namestringIgual que relation_name, por compatibilidad.
labelstringEtiqueta legible por humanos para la relación.
relationship_typestringTipo de relación que la entidad tiene con otra. (type)
typestringuno a uno, muchos a uno, uno a muchos, muchos a muchos.
l_entitystringID de la entidad izquierda
l_keystringLa columna en la entidad izquierda de la relación.
r_entitystringID de la entidad derecha
r_keystringClave en la entidad derecha.
dependencystring""NoSi esta relación depende de una tercera entidad, establecer.
dependency_relationstring""NoRelación de la que depende la tercera entidad, si existe.

Ejemplo de payload del endpoint de relación

Sección titulada «Ejemplo de payload del endpoint de relación»
{
"relation_name": "RS_00000000-0000-0000-AAAA-0123456789AB.right_id_00000000-0000-0000-BBBB-0123456789AB.id",
"name": "RS_00000000-0000-0000-AAAA-0123456789AB.right_id_00000000-0000-0000-BBBB-0123456789AB.id",
"label": "menu_has_category_menu -> menu",
"relationship_type": "many-to-one",
"type": "many-to-one",
"l_entity": "00000000-0000-0000-AAAA-0123456789AB",
"l_key": "right_id",
"r_entity": "00000000-0000-0000-BBBB-0123456789AB",
"r_key": "id",
"dependency": "",
"dependency_relation": ""
}

Crea una nueva entidad. Almacenada para ser manipulada en el Studio.

Endpoint:

POST /api/v1/entities?version=:version
<Entity>

Ejemplo de Respuesta:

{
"status": 201,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Entity> } ]
}

Actualiza una entidad existente. Almacenada para ser manipulada en el Studio.

Endpoint:

PUT /api/v1/entities/:entity?version=:version

Ejemplo de Petición:

{
"audited": true,
"importable": true,
"readOnly": false,
"showOnMenu": true,
"datasource": "",
"listAs": []
}

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Entity> } ]
}

Elimina una entidad existente.

Endpoint:

DELETE /api/v1/entities/:entity?version=:version

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string"
}

Devuelve los campos de la entidad.

Endpoint:

GET /api/v1/entities/:entity/fields?page=:page&limit=:limit?&version=:version

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Field> } ],
"pagination": { <Pagination> }
}

Añade un campo en el campo JSON de la entidad.

Endpoint:

POST /api/v1/entities/:entity/fields?version=:version
<Field>

Ejemplo de Respuesta:

{
"status": 201,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Field> } ]
}

Actualiza un campo en el campo JSON de la entidad.

Endpoint:

PUT /api/v1/entities/:entity/fields/:field?version=:version
<Field>

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Field> } ]
}

Elimina un campo en el campo JSON de la entidad.

Endpoint:

DELETE /api/v1/entities/:entity/fields/:field?version=:version

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string"
}

Devuelve las relaciones de la entidad.

Endpoint:

GET /api/v1/entities/:entity/relationships?page=:page&limit=:limit&direct=:direct&version=:version

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Relationship> } ],
"pagination": { <Pagination> }
}

Crea una relación en el archivo JSON de la entidad y sus datos en la base de datos.

Endpoint:

POST /api/v1/entities/relationships?version=:version
<Relationship>

Ejemplo de Respuesta:

{
"status": 201,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Relationship> } ]
}

Actualiza una relación en el archivo JSON de la entidad y sus datos en la base de datos.

Endpoint:

PUT /api/v1/entities/:entity/relationships/:relationship?version=:version
<Relationship>

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string",
"data": [ { <Relationship> } ],
"pagination": { <Pagination> }
}

Elimina una relación en el archivo JSON de la entidad y sus datos en la base de datos.

Endpoint:

DELETE /api/v1/entities/:entity/relationships/:relationship?version=:version

Ejemplo de Respuesta:

{
"status": 200,
"error": false,
"message": "string",
"entityName": "string"
}
Obtener un atributo o configuración de una entidad
Sección titulada «Obtener un atributo o configuración de una entidad»

Obtiene un atributo o configuración de una entidad.

Endpoint:

GET /api/v1/entities/:entity/:attribute

Código de Respuesta:

  • 200: OK