Tablas
Cada tabla está estructurada para soportar consultas eficientes e integridad de los datos, alineándose con el compromiso de Midaz con la escalabilidad y la flexibilidad.
Tabla: organization
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la organización. |
| legalName | text | Razón social de la organización. |
| parentOrganizationId | uuid | Identificador único de la organización padre. |
| doingBusinessAs | text | Nombre comercial de la organización. |
| legalDocument | text | Documento legal de la organización. |
| status | jsonb | Información sobre el estado. |
| address | jsonb | Información sobre la dirección de la organización. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: ledger
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único del ledger. |
| organizationId | uuid | Identificador único de la organización. |
| name | text | Nombre del ledger. |
| status | jsonb | Información sobre el estado. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: asset
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único del activo. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| name | text | Nombre del activo. |
| type | enum | Tipo de Activo (currency - moneda, crypto - cripto, commodity - materia prima, others - otros). |
| code | text | Código utilizado para referirse al activo. |
| status | text | Información sobre el estado. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: account-type
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único del tipo de cuenta. |
| ledgerId | uuid | Identificador único del ledger. |
| name | text | Nombre del tipo de cuenta. |
| description | text | Descripción del tipo de cuenta. |
| keyValue | text | Valor personalizado definido por el usuario para identificar el tipo de cuenta. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: account
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la cuenta. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| assetCode | text | Código utilizado para referirse al activo. |
| name | text | Nombre de la cuenta. |
| alias | text | Identificador único y fácil de usar para la cuenta. |
| type | text | Tipo de cuenta. |
| parentAccountId | uuid | Identificador único de la cuenta principal. |
| entityId | text | Identificador único de la entidad responsable de la cuenta. |
| portfolioId | uuid | Identificador único de la cartera. |
| segmentId | uuid | Identificador único del segmento. |
| status | jsonb | Información sobre el estado. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: portfolio
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la cartera. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| entityId | text | Identificador único del usuario responsable de la cartera. |
| name | text | Nombre de la cartera. |
| status | jsonb | Información sobre el estado. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: segment
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único del segmento. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| name | text | Nombre del segmento. |
| status | jsonb | Información sobre el estado. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| created_at | timestamptz | Marca de tiempo de la creación (UTC). |
| updated_at | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deleted_at | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: balance
| Columna | Tipo | Descripción |
|---|---|---|
| id | text | Identificador único del saldo. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| accountId | uuid | Identificador único de la cuenta. |
| alias | text | Alias de la cuenta utilizado en la operación. |
| assetCode | text | Código utilizado para referirse al activo. |
| available | text | Saldo disponible anterior. |
| onHold | text | Monto en espera reservado. |
| version | integer | Versión del saldo, que se actualiza con cada transacción. |
| accountType | text | Tipo de cuenta. |
| allowSending | boolean | Si es verdadero, indica que se permite enviar transacciones. |
| allowReceiving | boolean | Si es verdadero, indica que se permite recibir transacciones. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: operation-route
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la ruta de operación. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| title | text | Texto breve que resume el propósito de la operación. Se utiliza como nota de entrada para la identificación. |
| description | text | Descripción detallada del propósito y uso de la Ruta de Operación. |
| type | text | Tipo de operación (débito o crédito). |
| account | jsonb | Define la regla para seleccionar la cuenta que participará en la operación (débito o crédito). |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: operation
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la ruta de transacción. |
| transactionId | uuid | Identificador único de la transacción. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| accountId | uuid | Identificador único de la cuenta de la que se desea recuperar los saldos. |
| balanceId | uuid | Identificador único del saldo. |
| accountAlias | text | Alias de la cuenta utilizado en la operación. |
| description | text | Descripción de la transacción. |
| type | text | Tipo de la operación (débito o crédito). |
| assetCode | text | Nombre del activo utilizado en la operación. |
| chartOfAccounts | text | [Obsoleto] Nombre del plan de cuentas al que pertenece la operación. |
| route | text | Nombre del grupo del plan de cuentas que categoriza la operación bajo un grupo específico. |
| amount | jsonb | Objeto que contiene información sobre el monto utilizado en la operación. |
| balance | jsonb | Objeto que contiene información sobre el saldo antes de la operación. |
| balanceAfter | jsonb | Objeto que contiene información sobre el saldo después de la operación. |
| status | jsonb | Estado de la transacción (pendiente, completada, revertida). |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: transaction-route
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la ruta de transacción. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| title | text | Texto breve que resume el propósito de la transacción. Se utiliza como nota de entrada para la identificación. |
| description | text | Descripción de la ruta de transacción. |
| operationRoutes | array | Lista de IDs de rutas de operación que definen la lógica de débito y crédito para la transacción. |
| metadata | object | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Tabla: transaction
| Columna | Tipo | Descripción |
|---|---|---|
| id | uuid | Identificador único de la transacción. |
| organizationId | uuid | Identificador único de la organización. |
| ledgerId | uuid | Identificador único del ledger. |
| description | text | Descripción de la transacción. |
| route | text | Nombre del grupo del plan de cuentas que categoriza la operación bajo un grupo específico. |
| status | jsonb | Información sobre el estado. |
| amount | text | Monto enviado. |
| assetCode | text | Código utilizado para referirse al Activo. |
| chartOfAccountsGroupName | text | [Obsoleto] Nombre del grupo utilizado para categorizar las operaciones de una transacción bajo el mismo grupo. |
| source | array | Lista de cuentas utilizadas como origen. |
| destination | array | Lista de cuentas utilizadas como destino. |
| operations | array | Lista de operaciones en la transacción. |
| metadata | jsonb | Pares clave-valor para añadir como metadatos. |
| createdAt | timestamptz | Marca de tiempo de la creación (UTC). |
| updatedAt | timestamptz | Marca de tiempo de la última actualización (UTC). |
| deletedAt | timestamptz | Marca de tiempo de la eliminación lógica, si aplica (UTC). |
Modelo de datos
En la Figura 1, puedes encontrar una representación visual de las tablas centrales en Midaz y sus relaciones. El diagrama ayuda a los desarrolladores y administradores de bases de datos a comprender cómo las diferentes entidades están interconectadas dentro del sistema, sirviendo como guía para la gestión e integración eficiente de datos.

Figura 1. Tablas de Midaz y sus relaciones.

