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.
Propiedades de una Entidad
Sección titulada «Propiedades de una Entidad»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:
| Campo | Tipo | Descripción |
|---|---|---|
audited | boolean | Indica si los cambios en los registros de la entidad deben ser registrados para fines de auditoría. |
read_only | boolean | Cuando es verdadero, impide cualquier modificación en los registros de la entidad a través de todo el sistema. |
importable | boolean | Indica si los registros de esta entidad pueden ser importados desde una fuente externa. |
show_on_menu | boolean | Determina si esta entidad aparecerá como un elemento en el menú de navegación principal. |
schema | string | Esquema de la base de datos donde se encuentra la tabla de la entidad. (las entidades internas usarán public) |
datasource | string | Identificador de la conexión a la base de datos que esta entidad debe usar. |
object_name | string | Nombre técnico interno del objeto de la entidad, que a menudo corresponde al nombre de la tabla de la base de datos. |
object_label | string | Nombre legible por humanos para la entidad, utilizado para fines de visualización en la interfaz de usuario. |
fields | Array<Field> | Arreglo de objetos que definen los atributos de la entidad. |
list_as | Array<string> | Arreglo de nombres de campos que se mostrarán por defecto en las vistas de lista para esta entidad. |
relationships | Array<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": []}Propiedades de un Campo
Sección titulada «Propiedades de un Campo»| Campo | Tipo | Valor por Defecto | Requerido | Descripción |
|---|---|---|---|---|
len | number | 0 | Sí | Longitud del campo (para cadenas, etc). |
size | number | 0 | Sí | Tamaño del campo (para numéricos, etc). |
precision | number | 0 | Sí | Precisión para campos decimales. |
comments | string | "" | No | Comentarios o notas sobre el campo. |
group | string | "" | No | Grupo al que pertenece el campo. |
help | string | "" | No | Texto de ayuda para el campo. |
label | string | Sí | Etiqueta para fines de visualización. | |
name | string | Sí | Nombre interno del campo. | |
schema | string | public | No | No se usa, por defecto es public, no modificar. |
type | string | integer | Sí | Tipo de dato del campo. |
regex | string | "" | No | Expresión regular para validación. |
default_exp | string | "" | No | Expresión para el valor por defecto. |
options_exp | string | "" | No | Expresión para generar opciones. |
audited | boolean | true | No | Indica si los cambios en el campo son auditados. |
importable | boolean | false | No | Indica si el campo puede ser importado. |
reportable | boolean | false | No | Indica si el campo es reportable. |
visible | boolean | true | No | Determina si el campo es visible en la interfaz de usuario. |
auto_increment | boolean | false | No | Si es verdadero, el campo se autoincrementa. |
default_value | any | null | No | Valor por defecto para el campo. |
editable | boolean | true | No | Si es verdadero, el campo es editable. |
indexable | boolean | true | No | Si es verdadero, el campo es indexable. |
inline_edit | boolean | false | No | Si es verdadero, el campo puede ser editado en línea. |
readonly | boolean | false | No | Si es verdadero, el campo es de solo lectura. |
required | boolean | true | No | Si es verdadero, el campo es requerido. |
searchable | boolean | true | No | Si es verdadero, el campo es buscable. |
unique | boolean | false | No | Si es verdadero, el campo debe ser único. |
options | Array<Option> | [] | No | Lista de opciones para campos de selección. |
Tipos de campo soportados
Sección titulada «Tipos de campo soportados»Los siguientes tipos de campo son soportados:
| Tipo | Valor (clave) | Descripción |
|---|---|---|
| Fecha y hora | datetime | Valor de fecha y hora |
| Fecha | date | Valor de fecha |
| Hora | time | Valor de hora |
| Texto | text | Texto largo |
| Cadena | string | Texto corto o cadena |
| Opción | option | Opción seleccionable |
| Número | number | Valor numérico |
| Decimal | decimal | Número decimal |
| Entero | integer | Número entero |
| Array | array | Arreglo de valores |
| Booleano | boolean | Valor verdadero/falso |
| Archivo | file | Carga de archivo |
| Imagen | image | Carga de imagen |
Ejemplo de payload del endpoint de campo
Sección titulada «Ejemplo de payload del endpoint de campo»{ "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}Propiedades de una Relación
Sección titulada «Propiedades de una Relación»| Campo | Tipo | Valor por Defecto | Requerido | Descripción |
|---|---|---|---|---|
relation_name | string | Sí | Nombre interno de la relación. | |
name | string | Sí | Igual que relation_name, por compatibilidad. | |
label | string | Sí | Etiqueta legible por humanos para la relación. | |
relationship_type | string | Sí | Tipo de relación que la entidad tiene con otra. (type) | |
type | string | Sí | uno a uno, muchos a uno, uno a muchos, muchos a muchos. | |
l_entity | string | Sí | ID de la entidad izquierda | |
l_key | string | Sí | La columna en la entidad izquierda de la relación. | |
r_entity | string | Sí | ID de la entidad derecha | |
r_key | string | Sí | Clave en la entidad derecha. | |
dependency | string | "" | No | Si esta relación depende de una tercera entidad, establecer. |
dependency_relation | string | "" | No | Relació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": ""}Endpoints para gestionar entidades
Sección titulada «Endpoints para gestionar entidades»Crear una nueva entidad
Sección titulada «Crear una nueva entidad»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> } ]}
Actualizar una entidad
Sección titulada «Actualizar una entidad»Actualiza una entidad existente. Almacenada para ser manipulada en el Studio.
Endpoint:
PUT /api/v1/entities/:entity?version=:versionEjemplo 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> } ]}
Eliminar una entidad
Sección titulada «Eliminar una entidad»Elimina una entidad existente.
Endpoint:
DELETE /api/v1/entities/:entity?version=:versionEjemplo de Respuesta:
{"status": 200,"error": false,"message": "string","entityName": "string"}
Endpoints para gestionar campos
Sección titulada «Endpoints para gestionar campos»Obtener campos de la entidad
Sección titulada «Obtener campos de la entidad»Devuelve los campos de la entidad.
Endpoint:
GET /api/v1/entities/:entity/fields?page=:page&limit=:limit?&version=:versionEjemplo de Respuesta:
{"status": 200,"error": false,"message": "string","entityName": "string","data": [ { <Field> } ],"pagination": { <Pagination> }}
Añadir un campo a una entidad
Sección titulada «Añadir un campo a una entidad»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> } ]}
Actualizar un campo
Sección titulada «Actualizar un campo»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> } ]}
Eliminar un campo
Sección titulada «Eliminar un campo»Elimina un campo en el campo JSON de la entidad.
Endpoint:
DELETE /api/v1/entities/:entity/fields/:field?version=:versionEjemplo de Respuesta:
{"status": 200,"error": false,"message": "string","entityName": "string"}
Endpoints para gestionar relaciones
Sección titulada «Endpoints para gestionar relaciones»Devuelve las relaciones de la entidad.
Obtener relaciones de la entidad
Sección titulada «Obtener relaciones de la entidad»Endpoint:
GET /api/v1/entities/:entity/relationships?page=:page&limit=:limit&direct=:direct&version=:versionEjemplo de Respuesta:
{"status": 200,"error": false,"message": "string","entityName": "string","data": [ { <Relationship> } ],"pagination": { <Pagination> }}
Crear una relación
Sección titulada «Crear una relación»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> } ]}
Actualizar una relación
Sección titulada «Actualizar una relación»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> }}
Eliminar una relación
Sección titulada «Eliminar una relación»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=:versionEjemplo de Respuesta:
{"status": 200,"error": false,"message": "string","entityName": "string"}
Otros endpoints
Sección titulada «Otros endpoints»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/:attributeCódigo de Respuesta:
- 200: OK