@hablala/api-contract 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +906 -11
  2. package/openapi.json +1261 -56
  3. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -67,6 +67,46 @@ interface paths {
67
67
  patch?: never;
68
68
  trace?: never;
69
69
  };
70
+ "/v1/actions/{slug}": {
71
+ parameters: {
72
+ query?: never;
73
+ header?: never;
74
+ path?: never;
75
+ cookie?: never;
76
+ };
77
+ get?: never;
78
+ put?: never;
79
+ /**
80
+ * Ejecutar una action transaccional
81
+ * @description Corre los steps de la action `slug` en UNA transacción (todo-o-nada), interpolando el input, y devuelve los records creados por step. `create_rental`/`register_return` y similares. Gate: records:create.
82
+ */
83
+ post: operations["post /v1/actions/{slug}"];
84
+ delete?: never;
85
+ options?: never;
86
+ head?: never;
87
+ patch?: never;
88
+ trace?: never;
89
+ };
90
+ "/v1/aggregate": {
91
+ parameters: {
92
+ query?: never;
93
+ header?: never;
94
+ path?: never;
95
+ cookie?: never;
96
+ };
97
+ get?: never;
98
+ put?: never;
99
+ /**
100
+ * Ejecutar una aggregation query
101
+ * @description Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. Reemplaza los reportes que serían RPCs de SQL por-tenant.
102
+ */
103
+ post: operations["post /v1/aggregate"];
104
+ delete?: never;
105
+ options?: never;
106
+ head?: never;
107
+ patch?: never;
108
+ trace?: never;
109
+ };
70
110
  "/v1/device-links": {
71
111
  parameters: {
72
112
  query?: never;
@@ -224,6 +264,26 @@ interface paths {
224
264
  patch?: never;
225
265
  trace?: never;
226
266
  };
267
+ "/v1/invitations": {
268
+ parameters: {
269
+ query?: never;
270
+ header?: never;
271
+ path?: never;
272
+ cookie?: never;
273
+ };
274
+ get?: never;
275
+ put?: never;
276
+ /**
277
+ * Invitar a un operador por email (bootstrap del equipo, credencial de máquina)
278
+ * @description Crea una invitación por **email** con un rol opcional (`{"invitation": {"email": "…", "role_id": "role_…"}}`). Al aceptarla, la persona queda como miembro de la organización y podrá iniciar sesión como operador (member session `mem_…`). La org sale del token (org-less), como el resto de la superficie de máquina. Requiere el permiso `invitations:create` (preset `team_admin`).
279
+ */
280
+ post: operations["post /v1/invitations"];
281
+ delete?: never;
282
+ options?: never;
283
+ head?: never;
284
+ patch?: never;
285
+ trace?: never;
286
+ };
227
287
  "/v1/invitations/accept": {
228
288
  parameters: {
229
289
  query?: never;
@@ -1067,6 +1127,90 @@ interface paths {
1067
1127
  patch?: never;
1068
1128
  trace?: never;
1069
1129
  };
1130
+ "/v1/members": {
1131
+ parameters: {
1132
+ query?: never;
1133
+ header?: never;
1134
+ path?: never;
1135
+ cookie?: never;
1136
+ };
1137
+ get?: never;
1138
+ put?: never;
1139
+ /**
1140
+ * Dar de alta un operador directo (sin invitación)
1141
+ * @description Crea al operador y su membresía ACTIVA al instante. Devuelve un `passwordSetupToken` para que la persona fije su contraseña (no se comparte ninguna contraseña generada). Requiere `organization_memberships:create` (preset `team_admin`).
1142
+ */
1143
+ post: operations["post /v1/members"];
1144
+ delete?: never;
1145
+ options?: never;
1146
+ head?: never;
1147
+ patch?: never;
1148
+ trace?: never;
1149
+ };
1150
+ "/v1/members/me": {
1151
+ parameters: {
1152
+ query?: never;
1153
+ header?: never;
1154
+ path?: never;
1155
+ cookie?: never;
1156
+ };
1157
+ /**
1158
+ * El miembro autenticado (quién soy)
1159
+ * @description Devuelve el miembro de la member session actual: id, email, nombre visible y sus roles. El equivalente a `getCurrentUser` de una app interna.
1160
+ */
1161
+ get: operations["get /v1/members/me"];
1162
+ put?: never;
1163
+ post?: never;
1164
+ delete?: never;
1165
+ options?: never;
1166
+ head?: never;
1167
+ patch?: never;
1168
+ trace?: never;
1169
+ };
1170
+ "/v1/members/session": {
1171
+ parameters: {
1172
+ query?: never;
1173
+ header?: never;
1174
+ path?: never;
1175
+ cookie?: never;
1176
+ };
1177
+ get?: never;
1178
+ put?: never;
1179
+ /**
1180
+ * Iniciar sesión de un miembro de la organización (login)
1181
+ * @description Autentica a un miembro humano (empleado que opera la org) por email+password y devuelve un member session token (`mem_…`) que porta su rol. La organización sale de la API key de la app. Es el login de operador de una app interna (patrón Organizations+Members).
1182
+ */
1183
+ post: operations["post /v1/members/session"];
1184
+ /**
1185
+ * Cerrar la sesión de miembro (logout)
1186
+ * @description Revoca el member session token. Idempotente.
1187
+ */
1188
+ delete: operations["delete /v1/members/session"];
1189
+ options?: never;
1190
+ head?: never;
1191
+ patch?: never;
1192
+ trace?: never;
1193
+ };
1194
+ "/v1/members/session/refresh": {
1195
+ parameters: {
1196
+ query?: never;
1197
+ header?: never;
1198
+ path?: never;
1199
+ cookie?: never;
1200
+ };
1201
+ get?: never;
1202
+ put?: never;
1203
+ /**
1204
+ * Renovar la sesión de miembro
1205
+ * @description Rota el member session token: revoca el actual y emite uno nuevo para la misma membresía (patrón WorkOS refresh). Autenticado por el `mem_` actual.
1206
+ */
1207
+ post: operations["post /v1/members/session/refresh"];
1208
+ delete?: never;
1209
+ options?: never;
1210
+ head?: never;
1211
+ patch?: never;
1212
+ trace?: never;
1213
+ };
1070
1214
  "/v1/oauth/device/code": {
1071
1215
  parameters: {
1072
1216
  query?: never;
@@ -1670,6 +1814,26 @@ interface paths {
1670
1814
  patch: operations["patch /v1/organizations/{organization_id}/agents/{id}"];
1671
1815
  trace?: never;
1672
1816
  };
1817
+ "/v1/organizations/{organization_id}/aggregate": {
1818
+ parameters: {
1819
+ query?: never;
1820
+ header?: never;
1821
+ path?: never;
1822
+ cookie?: never;
1823
+ };
1824
+ get?: never;
1825
+ put?: never;
1826
+ /**
1827
+ * Ejecutar una aggregation query
1828
+ * @description Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. Reemplaza los reportes que serían RPCs de SQL por-tenant.
1829
+ */
1830
+ post: operations["post /v1/organizations/{organization_id}/aggregate"];
1831
+ delete?: never;
1832
+ options?: never;
1833
+ head?: never;
1834
+ patch?: never;
1835
+ trace?: never;
1836
+ };
1673
1837
  "/v1/organizations/{organization_id}/api-keys": {
1674
1838
  parameters: {
1675
1839
  query?: never;
@@ -3750,6 +3914,26 @@ interface paths {
3750
3914
  patch: operations["patch /v1/policies/{id}"];
3751
3915
  trace?: never;
3752
3916
  };
3917
+ "/v1/public/aggregate": {
3918
+ parameters: {
3919
+ query?: never;
3920
+ header?: never;
3921
+ path?: never;
3922
+ cookie?: never;
3923
+ };
3924
+ get?: never;
3925
+ put?: never;
3926
+ /**
3927
+ * Agregar por la Data API pública (reportes)
3928
+ * @description Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), autenticado por una API key. Bajo el MISMO default-deny que la lectura: solo agrega lo que las policies exponen al principal `public`/`end_user`.
3929
+ */
3930
+ post: operations["post /v1/public/aggregate"];
3931
+ delete?: never;
3932
+ options?: never;
3933
+ head?: never;
3934
+ patch?: never;
3935
+ trace?: never;
3936
+ };
3753
3937
  "/v1/public/end-users": {
3754
3938
  parameters: {
3755
3939
  query?: never;
@@ -3794,6 +3978,26 @@ interface paths {
3794
3978
  patch?: never;
3795
3979
  trace?: never;
3796
3980
  };
3981
+ "/v1/public/me/aggregate": {
3982
+ parameters: {
3983
+ query?: never;
3984
+ header?: never;
3985
+ path?: never;
3986
+ cookie?: never;
3987
+ };
3988
+ get?: never;
3989
+ put?: never;
3990
+ /**
3991
+ * Agregar por la Data API pública (reportes)
3992
+ * @description Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), autenticado por una API key. Bajo el MISMO default-deny que la lectura: solo agrega lo que las policies exponen al principal `public`/`end_user`.
3993
+ */
3994
+ post: operations["post /v1/public/me/aggregate"];
3995
+ delete?: never;
3996
+ options?: never;
3997
+ head?: never;
3998
+ patch?: never;
3999
+ trace?: never;
4000
+ };
3797
4001
  "/v1/public/me/checkout": {
3798
4002
  parameters: {
3799
4003
  query?: never;
@@ -4121,6 +4325,23 @@ interface paths {
4121
4325
  patch?: never;
4122
4326
  trace?: never;
4123
4327
  };
4328
+ "/v1/roles": {
4329
+ parameters: {
4330
+ query?: never;
4331
+ header?: never;
4332
+ path?: never;
4333
+ cookie?: never;
4334
+ };
4335
+ /** Listar los roles de la organización (para asignar al invitar) */
4336
+ get: operations["get /v1/roles"];
4337
+ put?: never;
4338
+ post?: never;
4339
+ delete?: never;
4340
+ options?: never;
4341
+ head?: never;
4342
+ patch?: never;
4343
+ trace?: never;
4344
+ };
4124
4345
  "/v1/sso/callback": {
4125
4346
  parameters: {
4126
4347
  query?: never;
@@ -4910,6 +5131,14 @@ interface components {
4910
5131
  * @description Las secciones declarables de una cuenta (ADR-027). El `kind` fija la SUPERFICIE: una `organization` declara el diccionario (objects…), la mensajería (spaces/channels) y el acceso (roles, sso, domains, invitations); un `individual` declara su `profile` y su `privacy` (singletons). Cada sección es opcional (ausente = no gestionada). Gobernanza: la mayoría es AUTORITATIVA (lo no declarado se archiva — policies/roles/sso se BORRAN); son ADITIVAS (siembra, no expulsa) los `initialMembers` de un canal, los `domains` y las `invitations` — lifecycle, no estado deseado. Los datos (records/mensajes) no son configuración.
4911
5132
  */
4912
5133
  AccountManifestSections: {
5134
+ actions?: components["schemas"]["ManifestAction"][] | {
5135
+ items: components["schemas"]["ManifestAction"][];
5136
+ /**
5137
+ * @description `authoritative` (default): lo no declarado se archiva/borra. `additive`: solo crea/actualiza lo declarado, sin expulsar lo demás (least astonishment).
5138
+ * @enum {string}
5139
+ */
5140
+ mode?: "authoritative" | "additive";
5141
+ };
4913
5142
  agents?: components["schemas"]["ManifestAgent"][] | {
4914
5143
  items: components["schemas"]["ManifestAgent"][];
4915
5144
  /**
@@ -5019,6 +5248,23 @@ interface components {
5019
5248
  mode?: "authoritative" | "additive";
5020
5249
  };
5021
5250
  };
5251
+ /**
5252
+ * ActionRunRequest
5253
+ * @description Input de una action transaccional. `input` es el mapa que interpolan los steps (`{{input.…}}`, y `{{item.…}}` en los steps con for_each).
5254
+ */
5255
+ ActionRunRequest: {
5256
+ /** @description Clave natural para reintentos seguros (se propaga a cada step creado). */
5257
+ idempotency_key?: string;
5258
+ /** @description Los valores de entrada de la action (forma libre, definida por sus steps). */
5259
+ input?: Record<string, never>;
5260
+ };
5261
+ /** ActionRunResponse */
5262
+ ActionRunResponse: {
5263
+ data: {
5264
+ /** @description Por step_id, el/los records creados (`{id, properties}`). Un step con for_each devuelve una lista; uno simple, un objeto. */
5265
+ results: Record<string, never>;
5266
+ };
5267
+ };
5022
5268
  /**
5023
5269
  * AddMemberRequest
5024
5270
  * @description Añade un usuario del tenant a una conversación (invitar a un canal).
@@ -5146,6 +5392,43 @@ interface components {
5146
5392
  AgentsResponse: {
5147
5393
  data: components["schemas"]["Agent"][];
5148
5394
  };
5395
+ /**
5396
+ * AggregateQueryRequest
5397
+ * @description Aggregation query: agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. El par canónico measures + dimensions del semantic layer (Cube.dev).
5398
+ */
5399
+ AggregateQueryRequest: {
5400
+ /** @description Los attributes por los que agrupar (GROUP BY). */
5401
+ dimensions?: {
5402
+ /** @description Slug del attribute a agrupar. */
5403
+ attr: string;
5404
+ /**
5405
+ * @description Solo para date/timestamp (time dimension): trunca el valor a ese bucket.
5406
+ * @enum {string}
5407
+ */
5408
+ granularity?: "day" | "week" | "month" | "quarter" | "year";
5409
+ }[];
5410
+ /** @description Las agregaciones a calcular (al menos una). */
5411
+ measures: {
5412
+ /** @description Alias de salida (default: `count` o `<fn>_<attr>`). */
5413
+ as?: string;
5414
+ /** @description Slug del attribute a agregar (number para sum/avg; number/date/timestamp para min/max). Omitido solo en `count`. */
5415
+ attr?: string;
5416
+ /**
5417
+ * @description La función de agregación. `count` no lleva `attr`.
5418
+ * @enum {string}
5419
+ */
5420
+ fn: "count" | "sum" | "avg" | "min" | "max";
5421
+ }[];
5422
+ /** @description Slug del objeto raíz (requerido). */
5423
+ object: string;
5424
+ /** @description Mismo formato que en la consulta puntual: filtra ANTES de agregar. */
5425
+ where?: Record<string, never>[];
5426
+ };
5427
+ /** AggregateResultResponse */
5428
+ AggregateResultResponse: {
5429
+ /** @description Un grupo por combinación de dimensions (o un solo grupo con los totales si no hay dimensions). Cada grupo es un mapa: cada dimension por su slug y cada measure por su alias de salida. */
5430
+ data: Record<string, never>[];
5431
+ };
5149
5432
  /**
5150
5433
  * ApiKey
5151
5434
  * @description Metadatos de una API key de la Public API. El secreto en claro NO se incluye aquí — solo se devuelve una vez, al crearla.
@@ -5259,6 +5542,8 @@ interface components {
5259
5542
  /** @description Record del diccionario ligado a la cita (un record del diccionario, p. ej. contact), opaco. */
5260
5543
  recordId?: string | null;
5261
5544
  rescheduledFromId?: string | null;
5545
+ /** @description Capacidad del slot: cuántas citas solapadas del mismo organizador caben a la vez (Cal.com seats per time slot). 1 = no-solape estricto; N = hasta N concurrentes. */
5546
+ seatsPerSlot?: number;
5262
5547
  /** Format: date-time */
5263
5548
  startsAt: string;
5264
5549
  /** @enum {string} */
@@ -5275,6 +5560,8 @@ interface components {
5275
5560
  metadata?: Record<string, never>;
5276
5561
  organizerId?: string;
5277
5562
  recordId?: string;
5563
+ /** @description Capacidad del slot (default 1 = no-solape estricto). N permite hasta N citas solapadas del mismo organizador (aforo, clases, atención en paralelo). */
5564
+ seatsPerSlot?: number;
5278
5565
  /** Format: date-time */
5279
5566
  startsAt: string;
5280
5567
  /** @enum {string} */
@@ -6736,6 +7023,24 @@ interface components {
6736
7023
  organization: components["schemas"]["ClaimableOrganization"];
6737
7024
  };
6738
7025
  };
7026
+ /**
7027
+ * ManifestAction
7028
+ * @description Una action transaccional del tenant declarada (sección `actions/`), identificada por `slug`. Ejecuta sus `steps` en UNA transacción (todo-o-nada) al invocar `POST /v1/actions/:slug`: crear una cabecera + N líneas de forma atómica (el caso `create_rental` de una app interna). Cada step declara un `object` del diccionario y las `properties` a escribir, con interpolación `{{input.…}}`, `{{steps.<id>.id}}` (ref entre steps) y `{{item.…}}` en un step con `for_each`. Sección AUTORITATIVA: retirarla del manifiesto la archiva. `description`/`synonyms` son el contexto con el que los agentes LLM la descubren vía MCP (obligatoria la descripción, como el resto del diccionario).
7029
+ */
7030
+ ManifestAction: {
7031
+ /** @description Qué hace la action (contexto para humanos y agentes LLM). Obligatoria al crear. */
7032
+ description?: string;
7033
+ /** @description Identidad estable snake_case, única por organización (match key). */
7034
+ slug: string;
7035
+ /** @description Lista NO vacía de pasos. Cada paso: `id` (opcional, para refs `{{steps.<id>.id}}`), `object` (slug del diccionario), `properties` (mapa slug→valor con interpolación) y opcionalmente `for_each` (una ruta del input que expande el step en N records). */
7036
+ steps: {
7037
+ [key: string]: unknown;
7038
+ }[];
7039
+ /** @description Sinónimos para el descubrimiento por búsqueda/LLM. */
7040
+ synonyms?: string[];
7041
+ /** @description Nombre visible; si se omite, se deriva del slug. */
7042
+ title?: string;
7043
+ };
6739
7044
  /**
6740
7045
  * ManifestAgent
6741
7046
  * @description Un agente de IA declarado, identificado por `handle`. Archivar (no declararlo) lo revoca. `ownerUserId` (id público `user_…`) es obligatorio al crear con un access token de máquina; con un usuario, el creador es el dueño por defecto.
@@ -7146,6 +7451,45 @@ interface components {
7146
7451
  MediaResponse: {
7147
7452
  data: components["schemas"]["MediaItem"][];
7148
7453
  };
7454
+ /**
7455
+ * Member
7456
+ * @description Un miembro de la organización: identidad legible + sus roles (sin secretos).
7457
+ */
7458
+ Member: {
7459
+ displayName?: string | null;
7460
+ email?: string | null;
7461
+ /** @description Id de la membresía (`mbr_…`). */
7462
+ id: string;
7463
+ /** @description Los roles del miembro por nombre (owner/admin/member o custom). */
7464
+ roles: string[];
7465
+ };
7466
+ /**
7467
+ * MemberLoginRequest
7468
+ * @description Credenciales de un miembro (empleado que opera la org). La organización sale de la API key.
7469
+ */
7470
+ MemberLoginRequest: {
7471
+ /** Format: email */
7472
+ email: string;
7473
+ /** Format: password */
7474
+ password: string;
7475
+ };
7476
+ /** MemberResponse */
7477
+ MemberResponse: {
7478
+ data: components["schemas"]["Member"];
7479
+ };
7480
+ /** MemberSession */
7481
+ MemberSession: {
7482
+ /** Format: date-time */
7483
+ expiresAt?: string | null;
7484
+ member: components["schemas"]["Member"];
7485
+ prefix?: string | null;
7486
+ /** @description El member session token en claro (`mem_…`), legible SOLO en esta respuesta. */
7487
+ token: string;
7488
+ };
7489
+ /** MemberSessionResponse */
7490
+ MemberSessionResponse: {
7491
+ data: components["schemas"]["MemberSession"];
7492
+ };
7149
7493
  /** Membership */
7150
7494
  Membership: {
7151
7495
  /** @description Avatar override para esta org; `null` usa el global del usuario. */
@@ -7808,6 +8152,40 @@ interface components {
7808
8152
  /** @description Destino de la subida. */
7809
8153
  url: string;
7810
8154
  };
8155
+ /**
8156
+ * ProvisionMemberInput
8157
+ * @description Datos para dar de alta un operador DIRECTO (sin invitación por email): queda miembro activo al instante y establece su contraseña por el link de set-password de la respuesta.
8158
+ */
8159
+ ProvisionMemberInput: {
8160
+ /**
8161
+ * Format: email
8162
+ * @description Email del operador. Si ya existe un usuario con ese email, se reutiliza.
8163
+ */
8164
+ email: string;
8165
+ /** @description Nombre del rol a asignar (p. ej. `operator`). Opcional. */
8166
+ role?: string | null;
8167
+ };
8168
+ /** ProvisionMemberRequest */
8169
+ ProvisionMemberRequest: {
8170
+ member: components["schemas"]["ProvisionMemberInput"];
8171
+ };
8172
+ /**
8173
+ * ProvisionMemberResponse
8174
+ * @description El operador dado de alta. `passwordSetupToken` es el token de un solo uso con el que la persona establece SU contraseña (nunca se le comparte una contraseña generada). `userCreated` indica si el usuario nació con esta alta o ya existía (en cuyo caso su contraseña no se toca).
8175
+ */
8176
+ ProvisionMemberResponse: {
8177
+ data: {
8178
+ displayName?: string | null;
8179
+ email?: string | null;
8180
+ /** @description Id de la membresía (`mbr_…`). */
8181
+ id: string;
8182
+ /** @description Token de set-password (un solo uso). Entrégaselo a la persona para que fije su contraseña vía el flujo de reset. NO es una contraseña. */
8183
+ passwordSetupToken: string;
8184
+ roles: string[];
8185
+ /** @description `true` si el usuario nació con esta alta; `false` si ya existía. */
8186
+ userCreated: boolean;
8187
+ };
8188
+ };
7811
8189
  /**
7812
8190
  * PublicOrganization
7813
8191
  * @description Identidad PÚBLICA del tenant (la org del token) — el paralelo horizontal del `shop`/`brand` de Shopify. Deja al cliente pintar su chrome (nombre, logo) y conocer su `endUserObjectSlug` sin hardcodear la marca. NUNCA incluye la PII legal del negocio.
@@ -8929,31 +9307,34 @@ interface operations {
8929
9307
  };
8930
9308
  };
8931
9309
  };
8932
- "post /v1/device-links": {
9310
+ "post /v1/actions/{slug}": {
8933
9311
  parameters: {
8934
9312
  query?: never;
8935
9313
  header?: never;
8936
- path?: never;
9314
+ path: {
9315
+ /** @description Slug de la action a ejecutar. */
9316
+ slug: string;
9317
+ };
8937
9318
  cookie?: never;
8938
9319
  };
8939
- /** @description Contexto del navegador */
9320
+ /** @description Input de la action */
8940
9321
  requestBody?: {
8941
9322
  content: {
8942
- "application/json": components["schemas"]["DeviceLinkCreateRequest"];
9323
+ "application/json": components["schemas"]["ActionRunRequest"];
8943
9324
  };
8944
9325
  };
8945
9326
  responses: {
8946
- /** @description linkCode para el QR */
8947
- 201: {
9327
+ /** @description Resultado por step */
9328
+ 200: {
8948
9329
  headers: {
8949
9330
  [name: string]: unknown;
8950
9331
  };
8951
9332
  content: {
8952
- "application/json": components["schemas"]["DeviceLinkCreateResponse"];
9333
+ "application/json": components["schemas"]["ActionRunResponse"];
8953
9334
  };
8954
9335
  };
8955
- /** @description Datos inválidos */
8956
- 422: {
9336
+ /** @description Sin permiso */
9337
+ 403: {
8957
9338
  headers: {
8958
9339
  [name: string]: unknown;
8959
9340
  };
@@ -8961,8 +9342,112 @@ interface operations {
8961
9342
  "application/json": components["schemas"]["Error"];
8962
9343
  };
8963
9344
  };
8964
- };
8965
- };
9345
+ /** @description Action desconocida */
9346
+ 404: {
9347
+ headers: {
9348
+ [name: string]: unknown;
9349
+ };
9350
+ content: {
9351
+ "application/json": components["schemas"]["Error"];
9352
+ };
9353
+ };
9354
+ /** @description Fallo de un step (rollback total) */
9355
+ 422: {
9356
+ headers: {
9357
+ [name: string]: unknown;
9358
+ };
9359
+ content: {
9360
+ "application/json": components["schemas"]["Error"];
9361
+ };
9362
+ };
9363
+ };
9364
+ };
9365
+ "post /v1/aggregate": {
9366
+ parameters: {
9367
+ query?: never;
9368
+ header?: never;
9369
+ path?: never;
9370
+ cookie?: never;
9371
+ };
9372
+ /** @description Aggregation query */
9373
+ requestBody?: {
9374
+ content: {
9375
+ "application/json": components["schemas"]["AggregateQueryRequest"];
9376
+ };
9377
+ };
9378
+ responses: {
9379
+ /** @description Grupos agregados */
9380
+ 200: {
9381
+ headers: {
9382
+ [name: string]: unknown;
9383
+ };
9384
+ content: {
9385
+ "application/json": components["schemas"]["AggregateResultResponse"];
9386
+ };
9387
+ };
9388
+ /** @description Sin permiso */
9389
+ 403: {
9390
+ headers: {
9391
+ [name: string]: unknown;
9392
+ };
9393
+ content: {
9394
+ "application/json": components["schemas"]["Error"];
9395
+ };
9396
+ };
9397
+ /** @description Objeto desconocido */
9398
+ 404: {
9399
+ headers: {
9400
+ [name: string]: unknown;
9401
+ };
9402
+ content: {
9403
+ "application/json": components["schemas"]["Error"];
9404
+ };
9405
+ };
9406
+ /** @description Consulta inválida */
9407
+ 422: {
9408
+ headers: {
9409
+ [name: string]: unknown;
9410
+ };
9411
+ content: {
9412
+ "application/json": components["schemas"]["Error"];
9413
+ };
9414
+ };
9415
+ };
9416
+ };
9417
+ "post /v1/device-links": {
9418
+ parameters: {
9419
+ query?: never;
9420
+ header?: never;
9421
+ path?: never;
9422
+ cookie?: never;
9423
+ };
9424
+ /** @description Contexto del navegador */
9425
+ requestBody?: {
9426
+ content: {
9427
+ "application/json": components["schemas"]["DeviceLinkCreateRequest"];
9428
+ };
9429
+ };
9430
+ responses: {
9431
+ /** @description linkCode para el QR */
9432
+ 201: {
9433
+ headers: {
9434
+ [name: string]: unknown;
9435
+ };
9436
+ content: {
9437
+ "application/json": components["schemas"]["DeviceLinkCreateResponse"];
9438
+ };
9439
+ };
9440
+ /** @description Datos inválidos */
9441
+ 422: {
9442
+ headers: {
9443
+ [name: string]: unknown;
9444
+ };
9445
+ content: {
9446
+ "application/json": components["schemas"]["Error"];
9447
+ };
9448
+ };
9449
+ };
9450
+ };
8966
9451
  "get /v1/device-links/{link_code}": {
8967
9452
  parameters: {
8968
9453
  query?: never;
@@ -9222,6 +9707,49 @@ interface operations {
9222
9707
  };
9223
9708
  };
9224
9709
  };
9710
+ "post /v1/invitations": {
9711
+ parameters: {
9712
+ query?: never;
9713
+ header?: never;
9714
+ path?: never;
9715
+ cookie?: never;
9716
+ };
9717
+ /** @description Datos de la invitación */
9718
+ requestBody?: {
9719
+ content: {
9720
+ "application/json": components["schemas"]["InvitationRequest"];
9721
+ };
9722
+ };
9723
+ responses: {
9724
+ /** @description Invitación creada */
9725
+ 201: {
9726
+ headers: {
9727
+ [name: string]: unknown;
9728
+ };
9729
+ content: {
9730
+ "application/json": components["schemas"]["InvitationResponse"];
9731
+ };
9732
+ };
9733
+ /** @description Sin permiso */
9734
+ 403: {
9735
+ headers: {
9736
+ [name: string]: unknown;
9737
+ };
9738
+ content: {
9739
+ "application/json": components["schemas"]["Error"];
9740
+ };
9741
+ };
9742
+ /** @description Error de validación */
9743
+ 422: {
9744
+ headers: {
9745
+ [name: string]: unknown;
9746
+ };
9747
+ content: {
9748
+ "application/json": components["schemas"]["Error"];
9749
+ };
9750
+ };
9751
+ };
9752
+ };
9225
9753
  "post /v1/invitations/accept": {
9226
9754
  parameters: {
9227
9755
  query?: never;
@@ -10842,6 +11370,168 @@ interface operations {
10842
11370
  };
10843
11371
  };
10844
11372
  };
11373
+ "post /v1/members": {
11374
+ parameters: {
11375
+ query?: never;
11376
+ header?: never;
11377
+ path?: never;
11378
+ cookie?: never;
11379
+ };
11380
+ /** @description Datos del operador */
11381
+ requestBody?: {
11382
+ content: {
11383
+ "application/json": components["schemas"]["ProvisionMemberRequest"];
11384
+ };
11385
+ };
11386
+ responses: {
11387
+ /** @description Operador dado de alta */
11388
+ 201: {
11389
+ headers: {
11390
+ [name: string]: unknown;
11391
+ };
11392
+ content: {
11393
+ "application/json": components["schemas"]["ProvisionMemberResponse"];
11394
+ };
11395
+ };
11396
+ /** @description Sin permiso */
11397
+ 403: {
11398
+ headers: {
11399
+ [name: string]: unknown;
11400
+ };
11401
+ content: {
11402
+ "application/json": components["schemas"]["Error"];
11403
+ };
11404
+ };
11405
+ /** @description Error de validación */
11406
+ 422: {
11407
+ headers: {
11408
+ [name: string]: unknown;
11409
+ };
11410
+ content: {
11411
+ "application/json": components["schemas"]["Error"];
11412
+ };
11413
+ };
11414
+ };
11415
+ };
11416
+ "get /v1/members/me": {
11417
+ parameters: {
11418
+ query?: never;
11419
+ header?: never;
11420
+ path?: never;
11421
+ cookie?: never;
11422
+ };
11423
+ requestBody?: never;
11424
+ responses: {
11425
+ /** @description El miembro actual */
11426
+ 200: {
11427
+ headers: {
11428
+ [name: string]: unknown;
11429
+ };
11430
+ content: {
11431
+ "application/json": components["schemas"]["MemberResponse"];
11432
+ };
11433
+ };
11434
+ /** @description Sesión inválida */
11435
+ 401: {
11436
+ headers: {
11437
+ [name: string]: unknown;
11438
+ };
11439
+ content: {
11440
+ "application/json": components["schemas"]["Error"];
11441
+ };
11442
+ };
11443
+ };
11444
+ };
11445
+ "post /v1/members/session": {
11446
+ parameters: {
11447
+ query?: never;
11448
+ header?: never;
11449
+ path?: never;
11450
+ cookie?: never;
11451
+ };
11452
+ /** @description Credenciales del miembro */
11453
+ requestBody?: {
11454
+ content: {
11455
+ "application/json": components["schemas"]["MemberLoginRequest"];
11456
+ };
11457
+ };
11458
+ responses: {
11459
+ /** @description Sesión de miembro */
11460
+ 201: {
11461
+ headers: {
11462
+ [name: string]: unknown;
11463
+ };
11464
+ content: {
11465
+ "application/json": components["schemas"]["MemberSessionResponse"];
11466
+ };
11467
+ };
11468
+ /** @description API key o credenciales inválidas */
11469
+ 401: {
11470
+ headers: {
11471
+ [name: string]: unknown;
11472
+ };
11473
+ content: {
11474
+ "application/json": components["schemas"]["Error"];
11475
+ };
11476
+ };
11477
+ /** @description Datos inválidos */
11478
+ 422: {
11479
+ headers: {
11480
+ [name: string]: unknown;
11481
+ };
11482
+ content: {
11483
+ "application/json": components["schemas"]["Error"];
11484
+ };
11485
+ };
11486
+ };
11487
+ };
11488
+ "delete /v1/members/session": {
11489
+ parameters: {
11490
+ query?: never;
11491
+ header?: never;
11492
+ path?: never;
11493
+ cookie?: never;
11494
+ };
11495
+ requestBody?: never;
11496
+ responses: {
11497
+ /** @description Sesión cerrada */
11498
+ 204: {
11499
+ headers: {
11500
+ [name: string]: unknown;
11501
+ };
11502
+ content?: never;
11503
+ };
11504
+ };
11505
+ };
11506
+ "post /v1/members/session/refresh": {
11507
+ parameters: {
11508
+ query?: never;
11509
+ header?: never;
11510
+ path?: never;
11511
+ cookie?: never;
11512
+ };
11513
+ requestBody?: never;
11514
+ responses: {
11515
+ /** @description Nueva sesión */
11516
+ 201: {
11517
+ headers: {
11518
+ [name: string]: unknown;
11519
+ };
11520
+ content: {
11521
+ "application/json": components["schemas"]["MemberSessionResponse"];
11522
+ };
11523
+ };
11524
+ /** @description Sesión inválida */
11525
+ 401: {
11526
+ headers: {
11527
+ [name: string]: unknown;
11528
+ };
11529
+ content: {
11530
+ "application/json": components["schemas"]["Error"];
11531
+ };
11532
+ };
11533
+ };
11534
+ };
10845
11535
  "post /v1/oauth/device/code": {
10846
11536
  parameters: {
10847
11537
  query?: never;
@@ -12558,6 +13248,60 @@ interface operations {
12558
13248
  };
12559
13249
  };
12560
13250
  };
13251
+ "post /v1/organizations/{organization_id}/aggregate": {
13252
+ parameters: {
13253
+ query?: never;
13254
+ header?: never;
13255
+ path: {
13256
+ organization_id: string;
13257
+ };
13258
+ cookie?: never;
13259
+ };
13260
+ /** @description Aggregation query */
13261
+ requestBody?: {
13262
+ content: {
13263
+ "application/json": components["schemas"]["AggregateQueryRequest"];
13264
+ };
13265
+ };
13266
+ responses: {
13267
+ /** @description Grupos agregados */
13268
+ 200: {
13269
+ headers: {
13270
+ [name: string]: unknown;
13271
+ };
13272
+ content: {
13273
+ "application/json": components["schemas"]["AggregateResultResponse"];
13274
+ };
13275
+ };
13276
+ /** @description Sin permiso */
13277
+ 403: {
13278
+ headers: {
13279
+ [name: string]: unknown;
13280
+ };
13281
+ content: {
13282
+ "application/json": components["schemas"]["Error"];
13283
+ };
13284
+ };
13285
+ /** @description Objeto desconocido */
13286
+ 404: {
13287
+ headers: {
13288
+ [name: string]: unknown;
13289
+ };
13290
+ content: {
13291
+ "application/json": components["schemas"]["Error"];
13292
+ };
13293
+ };
13294
+ /** @description Consulta inválida */
13295
+ 422: {
13296
+ headers: {
13297
+ [name: string]: unknown;
13298
+ };
13299
+ content: {
13300
+ "application/json": components["schemas"]["Error"];
13301
+ };
13302
+ };
13303
+ };
13304
+ };
12561
13305
  "get /v1/organizations/{organization_id}/api-keys": {
12562
13306
  parameters: {
12563
13307
  query?: never;
@@ -18585,6 +19329,67 @@ interface operations {
18585
19329
  };
18586
19330
  };
18587
19331
  };
19332
+ "post /v1/public/aggregate": {
19333
+ parameters: {
19334
+ query?: never;
19335
+ header?: never;
19336
+ path?: never;
19337
+ cookie?: never;
19338
+ };
19339
+ /** @description Aggregation query */
19340
+ requestBody?: {
19341
+ content: {
19342
+ "application/json": components["schemas"]["AggregateQueryRequest"];
19343
+ };
19344
+ };
19345
+ responses: {
19346
+ /** @description Grupos agregados */
19347
+ 200: {
19348
+ headers: {
19349
+ [name: string]: unknown;
19350
+ };
19351
+ content: {
19352
+ "application/json": components["schemas"]["AggregateResultResponse"];
19353
+ };
19354
+ };
19355
+ /** @description Token inválido */
19356
+ 401: {
19357
+ headers: {
19358
+ [name: string]: unknown;
19359
+ };
19360
+ content: {
19361
+ "application/json": components["schemas"]["Error"];
19362
+ };
19363
+ };
19364
+ /** @description Sin permiso */
19365
+ 403: {
19366
+ headers: {
19367
+ [name: string]: unknown;
19368
+ };
19369
+ content: {
19370
+ "application/json": components["schemas"]["Error"];
19371
+ };
19372
+ };
19373
+ /** @description Objeto o tenant desconocido */
19374
+ 404: {
19375
+ headers: {
19376
+ [name: string]: unknown;
19377
+ };
19378
+ content: {
19379
+ "application/json": components["schemas"]["Error"];
19380
+ };
19381
+ };
19382
+ /** @description Consulta inválida */
19383
+ 422: {
19384
+ headers: {
19385
+ [name: string]: unknown;
19386
+ };
19387
+ content: {
19388
+ "application/json": components["schemas"]["Error"];
19389
+ };
19390
+ };
19391
+ };
19392
+ };
18588
19393
  "post /v1/public/end-users": {
18589
19394
  parameters: {
18590
19395
  query?: never;
@@ -18689,6 +19494,67 @@ interface operations {
18689
19494
  };
18690
19495
  };
18691
19496
  };
19497
+ "post /v1/public/me/aggregate": {
19498
+ parameters: {
19499
+ query?: never;
19500
+ header?: never;
19501
+ path?: never;
19502
+ cookie?: never;
19503
+ };
19504
+ /** @description Aggregation query */
19505
+ requestBody?: {
19506
+ content: {
19507
+ "application/json": components["schemas"]["AggregateQueryRequest"];
19508
+ };
19509
+ };
19510
+ responses: {
19511
+ /** @description Grupos agregados */
19512
+ 200: {
19513
+ headers: {
19514
+ [name: string]: unknown;
19515
+ };
19516
+ content: {
19517
+ "application/json": components["schemas"]["AggregateResultResponse"];
19518
+ };
19519
+ };
19520
+ /** @description Token inválido */
19521
+ 401: {
19522
+ headers: {
19523
+ [name: string]: unknown;
19524
+ };
19525
+ content: {
19526
+ "application/json": components["schemas"]["Error"];
19527
+ };
19528
+ };
19529
+ /** @description Sin permiso */
19530
+ 403: {
19531
+ headers: {
19532
+ [name: string]: unknown;
19533
+ };
19534
+ content: {
19535
+ "application/json": components["schemas"]["Error"];
19536
+ };
19537
+ };
19538
+ /** @description Objeto o tenant desconocido */
19539
+ 404: {
19540
+ headers: {
19541
+ [name: string]: unknown;
19542
+ };
19543
+ content: {
19544
+ "application/json": components["schemas"]["Error"];
19545
+ };
19546
+ };
19547
+ /** @description Consulta inválida */
19548
+ 422: {
19549
+ headers: {
19550
+ [name: string]: unknown;
19551
+ };
19552
+ content: {
19553
+ "application/json": components["schemas"]["Error"];
19554
+ };
19555
+ };
19556
+ };
19557
+ };
18692
19558
  "post /v1/public/me/checkout": {
18693
19559
  parameters: {
18694
19560
  query?: never;
@@ -19664,6 +20530,35 @@ interface operations {
19664
20530
  };
19665
20531
  };
19666
20532
  };
20533
+ "get /v1/roles": {
20534
+ parameters: {
20535
+ query?: never;
20536
+ header?: never;
20537
+ path?: never;
20538
+ cookie?: never;
20539
+ };
20540
+ requestBody?: never;
20541
+ responses: {
20542
+ /** @description Roles */
20543
+ 200: {
20544
+ headers: {
20545
+ [name: string]: unknown;
20546
+ };
20547
+ content: {
20548
+ "application/json": components["schemas"]["RolesResponse"];
20549
+ };
20550
+ };
20551
+ /** @description Sin permiso */
20552
+ 403: {
20553
+ headers: {
20554
+ [name: string]: unknown;
20555
+ };
20556
+ content: {
20557
+ "application/json": components["schemas"]["Error"];
20558
+ };
20559
+ };
20560
+ };
20561
+ };
19667
20562
  "post /v1/sso/callback": {
19668
20563
  parameters: {
19669
20564
  query?: never;