@pimia/sdk 0.10.0 → 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 (2) hide show
  1. package/dist/api.d.ts +1768 -68
  2. package/package.json +1 -1
package/dist/api.d.ts CHANGED
@@ -704,6 +704,10 @@ export interface paths {
704
704
  * `active_tokens` se queda como estaba (cuenta los PAT del client, rotados
705
705
  * aún no caducados incluidos) para no romper a quien ya lo lee; lo que
706
706
  * cuenta dispositivos es `credentials`.
707
+ *
708
+ * El grant del panel de primera parte NO sale: el panel es la casa, no una
709
+ * app conectada (ver el docblock de la clase). Solo se listan las
710
+ * invitadas — conectores, el escritorio y las apps de integradores.
707
711
  */
708
712
  get: operations["connectedApps.index"];
709
713
  put?: never;
@@ -736,10 +740,11 @@ export interface paths {
736
740
  * que el resto de la pantalla (este usuario, este tenant, sin revocar), así
737
741
  * que la ruta no lo nombra: no hay forma de pedir un par descuadrado.
738
742
  *
739
- * 404 cuando la credencial no existe, no es de este usuario o ya no está
740
- * viva (rotada, revocada o caducada): quien cierra estaba mirando una lista
741
- * de hace un momento y lo que necesita es recargarla, no un error distinto
742
- * por cada motivo.
743
+ * 404 cuando la credencial no existe, no es de este usuario, ya no está
744
+ * viva (rotada, revocada o caducada) o es del panel de primera parte,
745
+ * que esta superficie no ve (docblock de la clase): quien cierra estaba
746
+ * mirando una lista de hace un momento y lo que necesita es recargarla, no
747
+ * un error distinto por cada motivo.
743
748
  */
744
749
  delete: operations["connectedApps.destroyCredential"];
745
750
  options?: never;
@@ -761,6 +766,9 @@ export interface paths {
761
766
  * Retira el acceso de la app entera: cae el grant, sus refresh tokens y los
762
767
  * PAT que esa app acuñó para este usuario. Todas sus credenciales con él
763
768
  * @description **Reservada al panel de Pimia.** Exige `admin:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
769
+ *
770
+ * El grant del panel de primera parte contesta 404: la casa no es una app
771
+ * conectada y esta superficie no lo ve (docblock de la clase).
764
772
  */
765
773
  delete: operations["connectedApps.destroy"];
766
774
  options?: never;
@@ -1088,6 +1096,280 @@ export interface paths {
1088
1096
  patch?: never;
1089
1097
  trace?: never;
1090
1098
  };
1099
+ "/delegable-tasks": {
1100
+ parameters: {
1101
+ query?: never;
1102
+ header?: never;
1103
+ path?: never;
1104
+ cookie?: never;
1105
+ };
1106
+ /**
1107
+ * Catálogo de operaciones delegables de esta instancia
1108
+ * @description **Reservada al panel de Pimia.** Exige `delegation:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1109
+ *
1110
+ * Solo las filas del propio tenant: lo que la instancia hereda no se pinta
1111
+ * aquí, así que un tenant que no ha descubierto nada arranca vacío.
1112
+ * `hermes_configured` dice si hay instancia de agente operable — sin ella,
1113
+ * el resto de la pantalla no tiene nada que activar.
1114
+ */
1115
+ get: operations["delegableCatalog.index"];
1116
+ put?: never;
1117
+ post?: never;
1118
+ delete?: never;
1119
+ options?: never;
1120
+ head?: never;
1121
+ patch?: never;
1122
+ trace?: never;
1123
+ };
1124
+ "/delegable-tasks/delegations": {
1125
+ parameters: {
1126
+ query?: never;
1127
+ header?: never;
1128
+ path?: never;
1129
+ cookie?: never;
1130
+ };
1131
+ /**
1132
+ * Las tareas delegadas del tenant: las 20 últimas, y TODAS las que esperan
1133
+ * decisión
1134
+ * @description **Reservada al panel de Pimia.** Exige `delegation:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1135
+ *
1136
+ * Las que están pendientes de decidir entran siempre, aunque caigan fuera de
1137
+ * esas 20: esta es la única superficie donde se aprueban, así que un
1138
+ * checkpoint abierto no puede quedar enterrado por el volumen.
1139
+ */
1140
+ get: operations["delegableCatalog.delegations"];
1141
+ put?: never;
1142
+ post?: never;
1143
+ delete?: never;
1144
+ options?: never;
1145
+ head?: never;
1146
+ patch?: never;
1147
+ trace?: never;
1148
+ };
1149
+ "/delegable-tasks/delegations/{id}/approve": {
1150
+ parameters: {
1151
+ query?: never;
1152
+ header?: never;
1153
+ path?: never;
1154
+ cookie?: never;
1155
+ };
1156
+ get?: never;
1157
+ put?: never;
1158
+ /**
1159
+ * El dueño APRUEBA la propuesta: el checkpoint humano del
1160
+ * preview-antes-de-aplicar
1161
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1162
+ *
1163
+ * Solo sobre una tarea viva con una propuesta en `proposed` o
1164
+ * `needs_changes`; cualquier otra cosa es `404`. Aprobar no aplica nada por
1165
+ * sí mismo: el agente recibe el aviso y aplica su propuesta, y la tarea se
1166
+ * cierra cuando él reporta el resultado. `applied_at` es lo que dice que la
1167
+ * aplicación ocurrió de verdad.
1168
+ *
1169
+ * Opcionalmente se reporta lo que costó verificarla —`human_touch_minutes`
1170
+ * y `verification_outcome` (`pass` si se aprobó tal cual, `edit` si hubo que
1171
+ * corregir)—: es la medida del coste humano de la delegación.
1172
+ */
1173
+ post: operations["delegableCatalog.approveProposal"];
1174
+ delete?: never;
1175
+ options?: never;
1176
+ head?: never;
1177
+ patch?: never;
1178
+ trace?: never;
1179
+ };
1180
+ "/delegable-tasks/delegations/{id}/reject": {
1181
+ parameters: {
1182
+ query?: never;
1183
+ header?: never;
1184
+ path?: never;
1185
+ cookie?: never;
1186
+ };
1187
+ get?: never;
1188
+ put?: never;
1189
+ /**
1190
+ * El dueño RECHAZA la propuesta: no se aplica nada y la tarea queda fallida
1191
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1192
+ *
1193
+ * Es terminal, y por eso se separa de «pedir cambios»: no habrá otra
1194
+ * propuesta sobre esta tarea. Admite `reason` —que se guarda como resultado
1195
+ * de la tarea— y los `human_touch_minutes` que costó decidirlo, porque
1196
+ * rechazar también es verificar.
1197
+ */
1198
+ post: operations["delegableCatalog.rejectProposal"];
1199
+ delete?: never;
1200
+ options?: never;
1201
+ head?: never;
1202
+ patch?: never;
1203
+ trace?: never;
1204
+ };
1205
+ "/delegable-tasks/delegations/{id}/needs-changes": {
1206
+ parameters: {
1207
+ query?: never;
1208
+ header?: never;
1209
+ path?: never;
1210
+ cookie?: never;
1211
+ };
1212
+ get?: never;
1213
+ put?: never;
1214
+ /**
1215
+ * El dueño PIDE CAMBIOS sobre la propuesta, sin cerrarla
1216
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1217
+ *
1218
+ * NO es una decisión, y por eso no es terminal: la tarea sigue en curso, el
1219
+ * agente re-arranca, lee el `reason` y vuelve a proponer. Desde aquí se
1220
+ * puede seguir aprobando o rechazando —la propuesta original queda intacta—,
1221
+ * así que pedir cambios no quema el checkpoint: lo mantiene abierto.
1222
+ */
1223
+ post: operations["delegableCatalog.needsChangesProposal"];
1224
+ delete?: never;
1225
+ options?: never;
1226
+ head?: never;
1227
+ patch?: never;
1228
+ trace?: never;
1229
+ };
1230
+ "/delegable-tasks/{task_type}": {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path?: never;
1235
+ cookie?: never;
1236
+ };
1237
+ get?: never;
1238
+ /**
1239
+ * Alta o activación de una operación delegable
1240
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1241
+ *
1242
+ * Sirve para activar una fila existente o para añadir una skill descubierta.
1243
+ * La activación EXIGE verificación viva contra la instancia: si la skill no
1244
+ * está montada, se responde `422` con `verified: false` y el catálogo no se
1245
+ * toca. `201` si la fila se creó, `200` si ya existía.
1246
+ */
1247
+ put: operations["delegableCatalog.upsert"];
1248
+ post?: never;
1249
+ /**
1250
+ * Desactiva una operación delegable. NO la borra
1251
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1252
+ *
1253
+ * La fila se conserva —con su verificación— para poder reactivarla rápido;
1254
+ * lo que cambia es `enabled`, y con eso deja de ser delegable. Un tipo que
1255
+ * la instancia hereda y del que este tenant no tiene fila propia se apaga
1256
+ * igual: se crea el apagado local que lo oculta aquí.
1257
+ */
1258
+ delete: operations["delegableCatalog.disable"];
1259
+ options?: never;
1260
+ head?: never;
1261
+ patch?: never;
1262
+ trace?: never;
1263
+ };
1264
+ "/delegable-tasks/discover": {
1265
+ parameters: {
1266
+ query?: never;
1267
+ header?: never;
1268
+ path?: never;
1269
+ cookie?: never;
1270
+ };
1271
+ /**
1272
+ * Lo que el agente de esta instancia sabe hacer, consultado en vivo
1273
+ * @description **Reservada al panel de Pimia.** Exige `delegation:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1274
+ *
1275
+ * Devuelve las skills montadas en la instancia del tenant marcando cuáles
1276
+ * ya están en el catálogo (`in_catalog`) y cuáles están activadas
1277
+ * (`enabled`). Es la lista sobre la que el dueño activa operaciones.
1278
+ *
1279
+ * Llamada SALIENTE y síncrona: `409` si el tenant no tiene instancia y
1280
+ * `502` si no se pudo determinar el inventario (la instancia no responde).
1281
+ * Un 502 aquí no significa «ninguna skill»: significa que no se sabe.
1282
+ */
1283
+ get: operations["delegableCatalog.discover"];
1284
+ put?: never;
1285
+ post?: never;
1286
+ delete?: never;
1287
+ options?: never;
1288
+ head?: never;
1289
+ patch?: never;
1290
+ trace?: never;
1291
+ };
1292
+ "/delegable-tasks/{task_type}/reverify": {
1293
+ parameters: {
1294
+ query?: never;
1295
+ header?: never;
1296
+ path?: never;
1297
+ cookie?: never;
1298
+ };
1299
+ get?: never;
1300
+ put?: never;
1301
+ /**
1302
+ * Re-comprueba contra la instancia que la skill de una operación sigue
1303
+ * montada
1304
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1305
+ *
1306
+ * Invariante: activa ⇒ verificada. Si la skill ya no verifica, la operación
1307
+ * se desactiva en la misma llamada, y la respuesta lo dice en `verified`.
1308
+ */
1309
+ post: operations["delegableCatalog.reverify"];
1310
+ delete?: never;
1311
+ options?: never;
1312
+ head?: never;
1313
+ patch?: never;
1314
+ trace?: never;
1315
+ };
1316
+ "/delegable-tasks/execute": {
1317
+ parameters: {
1318
+ query?: never;
1319
+ header?: never;
1320
+ path?: never;
1321
+ cookie?: never;
1322
+ };
1323
+ get?: never;
1324
+ put?: never;
1325
+ /**
1326
+ * Ejecución SÍNCRONA de prueba: «Probar» una operación y ver la respuesta
1327
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1328
+ *
1329
+ * El dueño manda un prompt en vivo al agente de su instancia y recibe lo que
1330
+ * conteste. Es la versión síncrona, para probar; la delegación de verdad es
1331
+ * asíncrona y va por `delegate`.
1332
+ *
1333
+ * Si se indica `task_type`, la operación debe estar ACTIVADA (`422` si no) y
1334
+ * se le pide al agente que use esa skill. Fail-closed: `409` sin instancia y
1335
+ * `502` si no responde.
1336
+ */
1337
+ post: operations["delegableCatalog.execute"];
1338
+ delete?: never;
1339
+ options?: never;
1340
+ head?: never;
1341
+ patch?: never;
1342
+ trace?: never;
1343
+ };
1344
+ "/delegable-tasks/delegate": {
1345
+ parameters: {
1346
+ query?: never;
1347
+ header?: never;
1348
+ path?: never;
1349
+ cookie?: never;
1350
+ };
1351
+ get?: never;
1352
+ put?: never;
1353
+ /**
1354
+ * Delega una tarea al agente. Asíncrona: se crea y se entrega
1355
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1356
+ *
1357
+ * La tarea aparece en el Copilot del tenant y el agente la trabaja; el
1358
+ * resultado vuelve después por sus callbacks, así que lo que se consulta
1359
+ * luego es `delegable-tasks/delegations`, no esta respuesta. Si se indica
1360
+ * `task_type`, la operación debe estar ACTIVADA (`422` si no).
1361
+ *
1362
+ * `201` cuando se entregó. Si la instancia no la acepta, la tarea queda
1363
+ * creada y `pending`, y se responde `502` con la tarea en el cuerpo: es una
1364
+ * entrega fallida, no una tarea perdida.
1365
+ */
1366
+ post: operations["delegableCatalog.delegate"];
1367
+ delete?: never;
1368
+ options?: never;
1369
+ head?: never;
1370
+ patch?: never;
1371
+ trace?: never;
1372
+ };
1091
1373
  "/delivery-notes/{id}/mark-delivered": {
1092
1374
  parameters: {
1093
1375
  query?: never;
@@ -1610,6 +1892,81 @@ export interface paths {
1610
1892
  patch?: never;
1611
1893
  trace?: never;
1612
1894
  };
1895
+ "/gestoria-link/asesorias": {
1896
+ parameters: {
1897
+ query?: never;
1898
+ header?: never;
1899
+ path?: never;
1900
+ cookie?: never;
1901
+ };
1902
+ /**
1903
+ * List available advisory firms for tenant users to browse.
1904
+ * Searches across users table AND gestoria_settings (nombre_despacho, nif_despacho, email_despacho)
1905
+ * @description **Reservada al panel de Pimia.** Exige `admin:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1906
+ */
1907
+ get: operations["gestoriaLink.asesorias"];
1908
+ put?: never;
1909
+ post?: never;
1910
+ delete?: never;
1911
+ options?: never;
1912
+ head?: never;
1913
+ patch?: never;
1914
+ trace?: never;
1915
+ };
1916
+ "/gestoria-link/status": {
1917
+ parameters: {
1918
+ query?: never;
1919
+ header?: never;
1920
+ path?: never;
1921
+ cookie?: never;
1922
+ };
1923
+ /** @description **Reservada al panel de Pimia.** Exige `admin:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí. */
1924
+ get: operations["gestoriaLink.status"];
1925
+ put?: never;
1926
+ post?: never;
1927
+ delete?: never;
1928
+ options?: never;
1929
+ head?: never;
1930
+ patch?: never;
1931
+ trace?: never;
1932
+ };
1933
+ "/gestoria-link/request": {
1934
+ parameters: {
1935
+ query?: never;
1936
+ header?: never;
1937
+ path?: never;
1938
+ cookie?: never;
1939
+ };
1940
+ get?: never;
1941
+ put?: never;
1942
+ /**
1943
+ * Request linkage: accepts gestoria_id (select from list) or link_code (manual code)
1944
+ * @description **Reservada al panel de Pimia.** Exige `admin:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
1945
+ */
1946
+ post: operations["gestoriaLink.request"];
1947
+ delete?: never;
1948
+ options?: never;
1949
+ head?: never;
1950
+ patch?: never;
1951
+ trace?: never;
1952
+ };
1953
+ "/gestoria-link/revoke": {
1954
+ parameters: {
1955
+ query?: never;
1956
+ header?: never;
1957
+ path?: never;
1958
+ cookie?: never;
1959
+ };
1960
+ get?: never;
1961
+ put?: never;
1962
+ post?: never;
1963
+ /** @description **Reservada al panel de Pimia.** Exige `admin:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí. */
1964
+ delete: operations["gestoriaLink.revoke"];
1965
+ options?: never;
1966
+ head?: never;
1967
+ patch?: never;
1968
+ trace?: never;
1969
+ };
1613
1970
  "/currencies/used": {
1614
1971
  parameters: {
1615
1972
  query?: never;
@@ -4316,7 +4673,7 @@ export interface paths {
4316
4673
  patch?: never;
4317
4674
  trace?: never;
4318
4675
  };
4319
- "/tenant-modules": {
4676
+ "/delegated-tasks": {
4320
4677
  parameters: {
4321
4678
  query?: never;
4322
4679
  header?: never;
@@ -4324,19 +4681,15 @@ export interface paths {
4324
4681
  cookie?: never;
4325
4682
  };
4326
4683
  /**
4327
- * Los módulos del registro y en qué estado está cada uno EN ESTA INSTANCIA
4328
- * @description **Reservada al panel de Pimia.** Exige `admin:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4329
- *
4330
- * `available_in_plan` es lo que permite a la pantalla decir «no incluido en
4331
- * tu plan» en vez de ofrecer un botón que devuelve 422 al pulsarlo, y
4332
- * `dependents` los módulos que dejarían de funcionar si se desactiva este.
4684
+ * El poll del agente: sus tareas delegadas y aún sin resolver
4685
+ * @description **Reservada al panel de Pimia.** Exige `delegation:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4333
4686
  *
4334
- * El `@response` describe la forma porque el array se arma en tiempo de
4335
- * ejecución: sin él, `meta`, `depends_on`, `dependents` e `installed_slugs`
4336
- * se publicaban sin tipar. Es PHPDoc normal, no una dependencia del
4337
- * generador.
4687
+ * Solo tareas del propio tenant que estén `pending` o `in_progress`. Cada
4688
+ * una viaja con su señal de autonomía —`write_effect`, `default_mode` y
4689
+ * `verifiability_level`—, que es lo que le dice al agente si puede aplicar
4690
+ * directamente o tiene que proponer y esperar aprobación.
4338
4691
  */
4339
- get: operations["tenantModules.index"];
4692
+ get: operations["tenantDelegationCallback.delegatedIndex"];
4340
4693
  put?: never;
4341
4694
  post?: never;
4342
4695
  delete?: never;
@@ -4345,7 +4698,7 @@ export interface paths {
4345
4698
  patch?: never;
4346
4699
  trace?: never;
4347
4700
  };
4348
- "/tenant-modules/{slug}/install": {
4701
+ "/delegated-tasks/{id}/claim": {
4349
4702
  parameters: {
4350
4703
  query?: never;
4351
4704
  header?: never;
@@ -4355,10 +4708,152 @@ export interface paths {
4355
4708
  get?: never;
4356
4709
  put?: never;
4357
4710
  /**
4358
- * Instala un módulo en la instancia, y con él sus dependencias
4359
- * @description **Reservada al panel de Pimia.** Exige `admin:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4711
+ * El agente RECLAMA una tarea pendiente y la pone en curso
4712
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4360
4713
  *
4361
- * Un módulo que no existe, uno que el plan de la instancia no incluye, o una
4714
+ * Idempotente: reclamar una que ya se tenía devuelve la misma tarea sin
4715
+ * efecto. Una ya resuelta no se re-reclama (`409`), y una que no es del
4716
+ * propio tenant no existe (`404`).
4717
+ */
4718
+ post: operations["tenantDelegationCallback.taskClaim"];
4719
+ delete?: never;
4720
+ options?: never;
4721
+ head?: never;
4722
+ patch?: never;
4723
+ trace?: never;
4724
+ };
4725
+ "/delegated-tasks/{id}/propose": {
4726
+ parameters: {
4727
+ query?: never;
4728
+ header?: never;
4729
+ path?: never;
4730
+ cookie?: never;
4731
+ };
4732
+ get?: never;
4733
+ put?: never;
4734
+ /**
4735
+ * El agente PROPONE un borrador reversible en vez de aplicarlo
4736
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4737
+ *
4738
+ * Preview-antes-de-aplicar: para lo que muta datos, el agente no escribe —
4739
+ * manda su propuesta (`summary`, `changes[]`, `evals[]`), la tarea sigue en
4740
+ * curso y el dueño decide. Es el checkpoint reversible.
4741
+ *
4742
+ * `409` si la propuesta ya fue aprobada: esa decisión no se pisa con un
4743
+ * re-propose que llega tarde. `422` si la tarea no admite propuesta porque
4744
+ * ya corre en modo autónomo — ahí lo que toca es `complete`.
4745
+ *
4746
+ * El sello de verifiabilidad lo deriva el servidor de los `evals`; el que
4747
+ * venga en el cuerpo se reemplaza.
4748
+ */
4749
+ post: operations["tenantDelegationCallback.taskPropose"];
4750
+ delete?: never;
4751
+ options?: never;
4752
+ head?: never;
4753
+ patch?: never;
4754
+ trace?: never;
4755
+ };
4756
+ "/delegated-tasks/{id}/complete": {
4757
+ parameters: {
4758
+ query?: never;
4759
+ header?: never;
4760
+ path?: never;
4761
+ cookie?: never;
4762
+ };
4763
+ get?: never;
4764
+ put?: never;
4765
+ /**
4766
+ * El agente reporta la tarea COMPLETADA, con un resultado verificable
4767
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4768
+ *
4769
+ * Acepta el `result_data` estructurado (preferido) y/o un `result` en prosa;
4770
+ * al menos uno es obligatorio. Idempotente sobre una tarea ya completada.
4771
+ *
4772
+ * Lo que puede cerrarse directo depende del modo: en modo autónomo sí, y en
4773
+ * modo `preview` hace falta una propuesta aprobada — el agente no se salta
4774
+ * su propio checkpoint (`409`, con `code: proposal_required`).
4775
+ *
4776
+ * ⚠️ Reportar «completada» no basta para quedar aplicada. Si la tarea
4777
+ * reclama escrituras, el reporte tiene que traer evidencia —sello `pass`
4778
+ * derivado de los `evals`—: un reporte que declara fallo, o que llega sin
4779
+ * esa evidencia, cierra la tarea como `failed`. `applied_at` afirma que las
4780
+ * escrituras aprobadas ocurrieron, así que no se presume del visto bueno.
4781
+ */
4782
+ post: operations["tenantDelegationCallback.taskComplete"];
4783
+ delete?: never;
4784
+ options?: never;
4785
+ head?: never;
4786
+ patch?: never;
4787
+ trace?: never;
4788
+ };
4789
+ "/delegated-tasks/{id}/fail": {
4790
+ parameters: {
4791
+ query?: never;
4792
+ header?: never;
4793
+ path?: never;
4794
+ cookie?: never;
4795
+ };
4796
+ get?: never;
4797
+ put?: never;
4798
+ /**
4799
+ * El agente reporta la tarea FALLIDA
4800
+ * @description **Reservada al panel de Pimia.** Exige `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4801
+ *
4802
+ * Igual que al completar, hace falta al menos `result` (prosa) o
4803
+ * `result_data` (estructurado): una tarea fallida también lleva su sello
4804
+ * derivado por el servidor, para que el panel pinte los `evals` honestos y
4805
+ * no lo que el agente diga de sí mismo.
4806
+ */
4807
+ post: operations["tenantDelegationCallback.taskFail"];
4808
+ delete?: never;
4809
+ options?: never;
4810
+ head?: never;
4811
+ patch?: never;
4812
+ trace?: never;
4813
+ };
4814
+ "/tenant-modules": {
4815
+ parameters: {
4816
+ query?: never;
4817
+ header?: never;
4818
+ path?: never;
4819
+ cookie?: never;
4820
+ };
4821
+ /**
4822
+ * Los módulos del registro y en qué estado está cada uno EN ESTA INSTANCIA
4823
+ * @description **Reservada al panel de Pimia.** Exige `admin:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4824
+ *
4825
+ * `available_in_plan` es lo que permite a la pantalla decir «no incluido en
4826
+ * tu plan» en vez de ofrecer un botón que devuelve 422 al pulsarlo, y
4827
+ * `dependents` los módulos que dejarían de funcionar si se desactiva este.
4828
+ *
4829
+ * El `@response` describe la forma porque el array se arma en tiempo de
4830
+ * ejecución: sin él, `meta`, `depends_on`, `dependents` e `installed_slugs`
4831
+ * se publicaban sin tipar. Es PHPDoc normal, no una dependencia del
4832
+ * generador.
4833
+ */
4834
+ get: operations["tenantModules.index"];
4835
+ put?: never;
4836
+ post?: never;
4837
+ delete?: never;
4838
+ options?: never;
4839
+ head?: never;
4840
+ patch?: never;
4841
+ trace?: never;
4842
+ };
4843
+ "/tenant-modules/{slug}/install": {
4844
+ parameters: {
4845
+ query?: never;
4846
+ header?: never;
4847
+ path?: never;
4848
+ cookie?: never;
4849
+ };
4850
+ get?: never;
4851
+ put?: never;
4852
+ /**
4853
+ * Instala un módulo en la instancia, y con él sus dependencias
4854
+ * @description **Reservada al panel de Pimia.** Exige `admin:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
4855
+ *
4856
+ * Un módulo que no existe, uno que el plan de la instancia no incluye, o una
4362
4857
  * dependencia que no se puede satisfacer, salen como `422` con el motivo en
4363
4858
  * `message`.
4364
4859
  */
@@ -4895,6 +5390,98 @@ export interface paths {
4895
5390
  patch?: never;
4896
5391
  trace?: never;
4897
5392
  };
5393
+ "/settings/verifactu": {
5394
+ parameters: {
5395
+ query?: never;
5396
+ header?: never;
5397
+ path?: never;
5398
+ cookie?: never;
5399
+ };
5400
+ /**
5401
+ * Get the current VeriFactu configuration (taxpayer data)
5402
+ * @description **Reservada al panel de Pimia.** Exige `verifactu:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
5403
+ *
5404
+ * LEE Y NADA MÁS. Hasta 2026-08-22 este GET creaba el contribuyente en
5405
+ * VeriFactu si no existía: `resolveTaxpayer` intentaba SIEMPRE el
5406
+ * `createTaxpayer` y además escribía `verifactu_taxpayer_id` en el tenant.
5407
+ * O sea que abrir la pantalla de ajustes daba de alta a la empresa ante un
5408
+ * tercero, y un `GET` repetido por un monitor o un prefetch la daba de alta
5409
+ * sola. Un GET que registra a la empresa en la AEAT no es una lectura.
5410
+ *
5411
+ * Quien quiera crearlo lo pide explícitamente: `PUT /settings/verifactu`
5412
+ * (guardar la configuración, que es lo que hace el panel) o el
5413
+ * `POST /settings/verifactu/taxpayer` de abajo. Mientras no exista, esto
5414
+ * devuelve el payload vacío, que ya distingue el caso con
5415
+ * `authorization_status = 'none'`.
5416
+ */
5417
+ get: operations["veriFactuSettings.index"];
5418
+ /**
5419
+ * Update VeriFactu settings (environment, representative mode)
5420
+ * @description **Reservada al panel de Pimia.** Exige `verifactu:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
5421
+ *
5422
+ * Si hay taxpayer en VeriFactu, actualiza via API. Si el tenant aún no
5423
+ * tiene credencial, o faltan los datos para crear el contribuyente, guarda
5424
+ * en local para cuando se configure — ese es el único caso en que «guardado
5425
+ * localmente» es verdad y no un fallo disfrazado.
5426
+ *
5427
+ * Hasta 2026-08-27 CUALQUIER excepción caía al guardado local y contestaba
5428
+ * 200 «Configuración guardada localmente»: con VeriFactu caído, el
5429
+ * formulario decía «guardado» sobre un `is_production` que no llegó a donde
5430
+ * importa. Ahora un fallo de la API remota contesta 502 con el error.
5431
+ */
5432
+ put: operations["veriFactuSettings.update"];
5433
+ post?: never;
5434
+ delete?: never;
5435
+ options?: never;
5436
+ head?: never;
5437
+ patch?: never;
5438
+ trace?: never;
5439
+ };
5440
+ "/settings/verifactu/taxpayer": {
5441
+ parameters: {
5442
+ query?: never;
5443
+ header?: never;
5444
+ path?: never;
5445
+ cookie?: never;
5446
+ };
5447
+ get?: never;
5448
+ put?: never;
5449
+ /**
5450
+ * Alta explícita del contribuyente en VeriFactu
5451
+ * @description **Reservada al panel de Pimia.** Exige `verifactu:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
5452
+ *
5453
+ * Es el POST que se lleva el efecto que tenía el GET. Si ya existe, lo
5454
+ * devuelve sin crear nada (idempotente); si faltan el NIF o el nombre de la
5455
+ * empresa responde 422 diciéndolo, en vez de dejar un aviso en el log y
5456
+ * devolver un payload vacío que no explica por qué está vacío.
5457
+ */
5458
+ post: operations["veriFactuSettings.storeTaxpayer"];
5459
+ delete?: never;
5460
+ options?: never;
5461
+ head?: never;
5462
+ patch?: never;
5463
+ trace?: never;
5464
+ };
5465
+ "/settings/verifactu/certificate": {
5466
+ parameters: {
5467
+ query?: never;
5468
+ header?: never;
5469
+ path?: never;
5470
+ cookie?: never;
5471
+ };
5472
+ get?: never;
5473
+ put?: never;
5474
+ /**
5475
+ * Upload a .pfx/.p12 certificate to VeriFactu
5476
+ * @description **Reservada al panel de Pimia.** Exige `verifactu:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
5477
+ */
5478
+ post: operations["veriFactuSettings.uploadCertificate"];
5479
+ delete?: never;
5480
+ options?: never;
5481
+ head?: never;
5482
+ patch?: never;
5483
+ trace?: never;
5484
+ };
4898
5485
  "/settings/webhooks": {
4899
5486
  parameters: {
4900
5487
  query?: never;
@@ -10725,6 +11312,512 @@ export interface operations {
10725
11312
  };
10726
11313
  };
10727
11314
  };
11315
+ "delegableCatalog.index": {
11316
+ parameters: {
11317
+ query?: never;
11318
+ header?: never;
11319
+ path?: never;
11320
+ cookie?: never;
11321
+ };
11322
+ requestBody?: never;
11323
+ responses: {
11324
+ 200: {
11325
+ headers: {
11326
+ [name: string]: unknown;
11327
+ };
11328
+ content: {
11329
+ "application/json": {
11330
+ hermes_configured: boolean;
11331
+ slug: string | null;
11332
+ tasks: {
11333
+ task_type: string;
11334
+ label: string;
11335
+ agent_skill: string | null;
11336
+ enabled: boolean;
11337
+ delegable: boolean;
11338
+ write_effect: boolean;
11339
+ default_mode: string;
11340
+ verifiability_level: number | null;
11341
+ icon: string | null;
11342
+ color: string | null;
11343
+ source: string | null;
11344
+ verified: boolean;
11345
+ skill_verified_at: string | null;
11346
+ retired_at: string | null;
11347
+ retired_reason: string | null;
11348
+ }[];
11349
+ };
11350
+ };
11351
+ };
11352
+ 403: components["responses"]["AuthorizationException"];
11353
+ };
11354
+ };
11355
+ "delegableCatalog.delegations": {
11356
+ parameters: {
11357
+ query?: never;
11358
+ header?: never;
11359
+ path?: never;
11360
+ cookie?: never;
11361
+ };
11362
+ requestBody?: never;
11363
+ responses: {
11364
+ 200: {
11365
+ headers: {
11366
+ [name: string]: unknown;
11367
+ };
11368
+ content: {
11369
+ "application/json": {
11370
+ copilot_url: string | null;
11371
+ delegations: {
11372
+ id: number;
11373
+ title: string;
11374
+ task_type: string | null;
11375
+ agent_skill: string | null;
11376
+ status: string;
11377
+ hermes_kanban_id: string | null;
11378
+ plane: string;
11379
+ origin_client_id: string | null;
11380
+ origin_client_name: string | null;
11381
+ result: string | null;
11382
+ result_data: {
11383
+ [key: string]: unknown;
11384
+ } | null;
11385
+ proposal: {
11386
+ [key: string]: unknown;
11387
+ } | null;
11388
+ proposal_status: string | null;
11389
+ proposed_at: string | null;
11390
+ applied_at: string | null;
11391
+ delegated_at: string | null;
11392
+ created_at: string | null;
11393
+ updated_at: string | null;
11394
+ }[];
11395
+ };
11396
+ };
11397
+ };
11398
+ 403: components["responses"]["AuthorizationException"];
11399
+ };
11400
+ };
11401
+ "delegableCatalog.approveProposal": {
11402
+ parameters: {
11403
+ query?: never;
11404
+ header?: never;
11405
+ path: {
11406
+ id: number;
11407
+ };
11408
+ cookie?: never;
11409
+ };
11410
+ requestBody?: {
11411
+ content: {
11412
+ "application/json": {
11413
+ human_touch_minutes?: number | null;
11414
+ /** @enum {string|null} */
11415
+ verification_outcome?: "pass" | "edit" | null;
11416
+ };
11417
+ };
11418
+ };
11419
+ responses: {
11420
+ 200: {
11421
+ headers: {
11422
+ [name: string]: unknown;
11423
+ };
11424
+ content: {
11425
+ "application/json": {
11426
+ task: {
11427
+ id: number;
11428
+ title: string;
11429
+ task_type: string | null;
11430
+ agent_skill: string | null;
11431
+ status: string;
11432
+ hermes_kanban_id: string | null;
11433
+ plane: string;
11434
+ origin_client_id: string | null;
11435
+ origin_client_name: string | null;
11436
+ result: string | null;
11437
+ result_data: {
11438
+ [key: string]: unknown;
11439
+ } | null;
11440
+ proposal: {
11441
+ [key: string]: unknown;
11442
+ } | null;
11443
+ proposal_status: string | null;
11444
+ proposed_at: string | null;
11445
+ applied_at: string | null;
11446
+ delegated_at: string | null;
11447
+ created_at: string | null;
11448
+ updated_at: string | null;
11449
+ };
11450
+ };
11451
+ };
11452
+ };
11453
+ 403: components["responses"]["AuthorizationException"];
11454
+ 422: components["responses"]["ValidationException"];
11455
+ };
11456
+ };
11457
+ "delegableCatalog.rejectProposal": {
11458
+ parameters: {
11459
+ query?: never;
11460
+ header?: never;
11461
+ path: {
11462
+ id: number;
11463
+ };
11464
+ cookie?: never;
11465
+ };
11466
+ requestBody?: {
11467
+ content: {
11468
+ "application/json": {
11469
+ reason?: string | null;
11470
+ human_touch_minutes?: number | null;
11471
+ };
11472
+ };
11473
+ };
11474
+ responses: {
11475
+ 200: {
11476
+ headers: {
11477
+ [name: string]: unknown;
11478
+ };
11479
+ content: {
11480
+ "application/json": {
11481
+ task: {
11482
+ id: number;
11483
+ title: string;
11484
+ task_type: string | null;
11485
+ agent_skill: string | null;
11486
+ status: string;
11487
+ hermes_kanban_id: string | null;
11488
+ plane: string;
11489
+ origin_client_id: string | null;
11490
+ origin_client_name: string | null;
11491
+ result: string | null;
11492
+ result_data: {
11493
+ [key: string]: unknown;
11494
+ } | null;
11495
+ proposal: {
11496
+ [key: string]: unknown;
11497
+ } | null;
11498
+ proposal_status: string | null;
11499
+ proposed_at: string | null;
11500
+ applied_at: string | null;
11501
+ delegated_at: string | null;
11502
+ created_at: string | null;
11503
+ updated_at: string | null;
11504
+ };
11505
+ };
11506
+ };
11507
+ };
11508
+ 403: components["responses"]["AuthorizationException"];
11509
+ 422: components["responses"]["ValidationException"];
11510
+ };
11511
+ };
11512
+ "delegableCatalog.needsChangesProposal": {
11513
+ parameters: {
11514
+ query?: never;
11515
+ header?: never;
11516
+ path: {
11517
+ id: number;
11518
+ };
11519
+ cookie?: never;
11520
+ };
11521
+ requestBody?: {
11522
+ content: {
11523
+ "application/json": {
11524
+ reason?: string | null;
11525
+ };
11526
+ };
11527
+ };
11528
+ responses: {
11529
+ 200: {
11530
+ headers: {
11531
+ [name: string]: unknown;
11532
+ };
11533
+ content: {
11534
+ "application/json": {
11535
+ task: {
11536
+ id: number;
11537
+ title: string;
11538
+ task_type: string | null;
11539
+ agent_skill: string | null;
11540
+ status: string;
11541
+ hermes_kanban_id: string | null;
11542
+ plane: string;
11543
+ origin_client_id: string | null;
11544
+ origin_client_name: string | null;
11545
+ result: string | null;
11546
+ result_data: {
11547
+ [key: string]: unknown;
11548
+ } | null;
11549
+ proposal: {
11550
+ [key: string]: unknown;
11551
+ } | null;
11552
+ proposal_status: string | null;
11553
+ proposed_at: string | null;
11554
+ applied_at: string | null;
11555
+ delegated_at: string | null;
11556
+ created_at: string | null;
11557
+ updated_at: string | null;
11558
+ };
11559
+ };
11560
+ };
11561
+ };
11562
+ 403: components["responses"]["AuthorizationException"];
11563
+ 422: components["responses"]["ValidationException"];
11564
+ };
11565
+ };
11566
+ "delegableCatalog.upsert": {
11567
+ parameters: {
11568
+ query?: never;
11569
+ header?: never;
11570
+ path: {
11571
+ task_type: string;
11572
+ };
11573
+ cookie?: never;
11574
+ };
11575
+ requestBody: {
11576
+ content: {
11577
+ "application/json": {
11578
+ agent_skill: string;
11579
+ label: string;
11580
+ write_effect?: boolean;
11581
+ verifiability_level?: number | null;
11582
+ icon?: string | null;
11583
+ color?: string | null;
11584
+ };
11585
+ };
11586
+ };
11587
+ responses: {
11588
+ 200: {
11589
+ headers: {
11590
+ [name: string]: unknown;
11591
+ };
11592
+ content: {
11593
+ "application/json": {
11594
+ task: {
11595
+ task_type: string;
11596
+ label: string;
11597
+ agent_skill: string | null;
11598
+ enabled: boolean;
11599
+ delegable: boolean;
11600
+ write_effect: boolean;
11601
+ default_mode: string;
11602
+ verifiability_level: number | null;
11603
+ icon: string | null;
11604
+ color: string | null;
11605
+ source: string | null;
11606
+ verified: boolean;
11607
+ skill_verified_at: string | null;
11608
+ retired_at: string | null;
11609
+ retired_reason: string | null;
11610
+ };
11611
+ verified: boolean;
11612
+ };
11613
+ };
11614
+ };
11615
+ 403: components["responses"]["AuthorizationException"];
11616
+ 422: components["responses"]["ValidationException"];
11617
+ };
11618
+ };
11619
+ "delegableCatalog.disable": {
11620
+ parameters: {
11621
+ query?: never;
11622
+ header?: never;
11623
+ path: {
11624
+ task_type: string;
11625
+ };
11626
+ cookie?: never;
11627
+ };
11628
+ requestBody?: never;
11629
+ responses: {
11630
+ 200: {
11631
+ headers: {
11632
+ [name: string]: unknown;
11633
+ };
11634
+ content: {
11635
+ "application/json": {
11636
+ task: {
11637
+ task_type: string;
11638
+ label: string;
11639
+ agent_skill: string | null;
11640
+ enabled: boolean;
11641
+ delegable: boolean;
11642
+ write_effect: boolean;
11643
+ default_mode: string;
11644
+ verifiability_level: number | null;
11645
+ icon: string | null;
11646
+ color: string | null;
11647
+ source: string | null;
11648
+ verified: boolean;
11649
+ skill_verified_at: string | null;
11650
+ retired_at: string | null;
11651
+ retired_reason: string | null;
11652
+ };
11653
+ };
11654
+ };
11655
+ };
11656
+ 403: components["responses"]["AuthorizationException"];
11657
+ };
11658
+ };
11659
+ "delegableCatalog.discover": {
11660
+ parameters: {
11661
+ query?: never;
11662
+ header?: never;
11663
+ path?: never;
11664
+ cookie?: never;
11665
+ };
11666
+ requestBody?: never;
11667
+ responses: {
11668
+ 200: {
11669
+ headers: {
11670
+ [name: string]: unknown;
11671
+ };
11672
+ content: {
11673
+ "application/json": {
11674
+ slug: string;
11675
+ skills: {
11676
+ agent_skill: string;
11677
+ task_type: string;
11678
+ label: string;
11679
+ description: string | null;
11680
+ disabled_on_hermes: boolean;
11681
+ write_effect: boolean;
11682
+ verifiability_level: number | null;
11683
+ in_catalog: boolean;
11684
+ enabled: boolean;
11685
+ }[];
11686
+ };
11687
+ };
11688
+ };
11689
+ 403: components["responses"]["AuthorizationException"];
11690
+ };
11691
+ };
11692
+ "delegableCatalog.reverify": {
11693
+ parameters: {
11694
+ query?: never;
11695
+ header?: never;
11696
+ path: {
11697
+ task_type: string;
11698
+ };
11699
+ cookie?: never;
11700
+ };
11701
+ requestBody?: never;
11702
+ responses: {
11703
+ 200: {
11704
+ headers: {
11705
+ [name: string]: unknown;
11706
+ };
11707
+ content: {
11708
+ "application/json": {
11709
+ task: {
11710
+ task_type: string;
11711
+ label: string;
11712
+ agent_skill: string | null;
11713
+ enabled: boolean;
11714
+ delegable: boolean;
11715
+ write_effect: boolean;
11716
+ default_mode: string;
11717
+ verifiability_level: number | null;
11718
+ icon: string | null;
11719
+ color: string | null;
11720
+ source: string | null;
11721
+ verified: boolean;
11722
+ skill_verified_at: string | null;
11723
+ retired_at: string | null;
11724
+ retired_reason: string | null;
11725
+ };
11726
+ verified: boolean;
11727
+ };
11728
+ };
11729
+ };
11730
+ 403: components["responses"]["AuthorizationException"];
11731
+ };
11732
+ };
11733
+ "delegableCatalog.execute": {
11734
+ parameters: {
11735
+ query?: never;
11736
+ header?: never;
11737
+ path?: never;
11738
+ cookie?: never;
11739
+ };
11740
+ requestBody: {
11741
+ content: {
11742
+ "application/json": {
11743
+ prompt: string;
11744
+ task_type?: string | null;
11745
+ };
11746
+ };
11747
+ };
11748
+ responses: {
11749
+ 200: {
11750
+ headers: {
11751
+ [name: string]: unknown;
11752
+ };
11753
+ content: {
11754
+ "application/json": {
11755
+ skill: string | null;
11756
+ response: string;
11757
+ usage: {
11758
+ [key: string]: unknown;
11759
+ } | null;
11760
+ };
11761
+ };
11762
+ };
11763
+ 403: components["responses"]["AuthorizationException"];
11764
+ 422: components["responses"]["ValidationException"];
11765
+ };
11766
+ };
11767
+ "delegableCatalog.delegate": {
11768
+ parameters: {
11769
+ query?: never;
11770
+ header?: never;
11771
+ path?: never;
11772
+ cookie?: never;
11773
+ };
11774
+ requestBody: {
11775
+ content: {
11776
+ "application/json": {
11777
+ title: string;
11778
+ task_type?: string | null;
11779
+ context?: string | null;
11780
+ };
11781
+ };
11782
+ };
11783
+ responses: {
11784
+ 200: {
11785
+ headers: {
11786
+ [name: string]: unknown;
11787
+ };
11788
+ content: {
11789
+ "application/json": {
11790
+ task: {
11791
+ id: number;
11792
+ title: string;
11793
+ task_type: string | null;
11794
+ agent_skill: string | null;
11795
+ status: string;
11796
+ hermes_kanban_id: string | null;
11797
+ plane: string;
11798
+ origin_client_id: string | null;
11799
+ origin_client_name: string | null;
11800
+ result: string | null;
11801
+ result_data: {
11802
+ [key: string]: unknown;
11803
+ } | null;
11804
+ proposal: {
11805
+ [key: string]: unknown;
11806
+ } | null;
11807
+ proposal_status: string | null;
11808
+ proposed_at: string | null;
11809
+ applied_at: string | null;
11810
+ delegated_at: string | null;
11811
+ created_at: string | null;
11812
+ updated_at: string | null;
11813
+ };
11814
+ };
11815
+ };
11816
+ };
11817
+ 403: components["responses"]["AuthorizationException"];
11818
+ 422: components["responses"]["ValidationException"];
11819
+ };
11820
+ };
10728
11821
  "deliveryNotes.markDelivered": {
10729
11822
  parameters: {
10730
11823
  query?: never;
@@ -11974,6 +13067,165 @@ export interface operations {
11974
13067
  422: components["responses"]["ValidationException"];
11975
13068
  };
11976
13069
  };
13070
+ "gestoriaLink.asesorias": {
13071
+ parameters: {
13072
+ query?: {
13073
+ q?: string;
13074
+ };
13075
+ header?: never;
13076
+ path?: never;
13077
+ cookie?: never;
13078
+ };
13079
+ requestBody?: never;
13080
+ responses: {
13081
+ 200: {
13082
+ headers: {
13083
+ [name: string]: unknown;
13084
+ };
13085
+ content: {
13086
+ "application/json": {
13087
+ data: {
13088
+ id: string;
13089
+ name: string;
13090
+ nif_masked: string | null;
13091
+ email: string;
13092
+ }[];
13093
+ };
13094
+ };
13095
+ };
13096
+ };
13097
+ };
13098
+ "gestoriaLink.status": {
13099
+ parameters: {
13100
+ query?: never;
13101
+ header?: never;
13102
+ path?: never;
13103
+ cookie?: never;
13104
+ };
13105
+ requestBody?: never;
13106
+ responses: {
13107
+ 200: {
13108
+ headers: {
13109
+ [name: string]: unknown;
13110
+ };
13111
+ content: {
13112
+ "application/json": {
13113
+ data: {
13114
+ id: number;
13115
+ status: string;
13116
+ link_code: string;
13117
+ /** Format: date-time */
13118
+ requested_at: string | null;
13119
+ /** Format: date-time */
13120
+ accepted_at: string | null;
13121
+ permissions: unknown[] | null | {
13122
+ read_invoices: boolean;
13123
+ read_customers: boolean;
13124
+ read_suppliers: boolean;
13125
+ export_accounting: boolean;
13126
+ delete_data: boolean;
13127
+ };
13128
+ gestoria: {
13129
+ id: string | null;
13130
+ name: string | null;
13131
+ nif: string | null;
13132
+ email: string | null;
13133
+ phone: string | null;
13134
+ };
13135
+ } | {
13136
+ /** @constant */
13137
+ status: "none";
13138
+ permissions: {
13139
+ read_invoices: boolean;
13140
+ read_customers: boolean;
13141
+ read_suppliers: boolean;
13142
+ export_accounting: boolean;
13143
+ delete_data: boolean;
13144
+ };
13145
+ };
13146
+ };
13147
+ };
13148
+ };
13149
+ 404: components["responses"]["ModelNotFoundException"];
13150
+ };
13151
+ };
13152
+ "gestoriaLink.request": {
13153
+ parameters: {
13154
+ query?: never;
13155
+ header?: never;
13156
+ path?: never;
13157
+ cookie?: never;
13158
+ };
13159
+ requestBody?: {
13160
+ content: {
13161
+ "application/json": {
13162
+ gestoria_id?: number | null;
13163
+ link_code?: string | null;
13164
+ };
13165
+ };
13166
+ };
13167
+ responses: {
13168
+ 201: {
13169
+ headers: {
13170
+ [name: string]: unknown;
13171
+ };
13172
+ content: {
13173
+ "application/json": {
13174
+ /** @constant */
13175
+ message: "Solicitud enviada a la asesoría.";
13176
+ data: {
13177
+ id: number;
13178
+ status: string;
13179
+ link_code: string;
13180
+ /** Format: date-time */
13181
+ requested_at: string | null;
13182
+ /** Format: date-time */
13183
+ accepted_at: string | null;
13184
+ permissions: unknown[] | null | {
13185
+ read_invoices: boolean;
13186
+ read_customers: boolean;
13187
+ read_suppliers: boolean;
13188
+ export_accounting: boolean;
13189
+ delete_data: boolean;
13190
+ };
13191
+ gestoria: {
13192
+ id: string | null;
13193
+ name: string | null;
13194
+ nif: string | null;
13195
+ email: string | null;
13196
+ phone: string | null;
13197
+ };
13198
+ };
13199
+ };
13200
+ };
13201
+ };
13202
+ 404: components["responses"]["ModelNotFoundException"];
13203
+ 422: components["responses"]["ValidationException"];
13204
+ };
13205
+ };
13206
+ "gestoriaLink.revoke": {
13207
+ parameters: {
13208
+ query?: never;
13209
+ header?: never;
13210
+ path?: never;
13211
+ cookie?: never;
13212
+ };
13213
+ requestBody?: never;
13214
+ responses: {
13215
+ 200: {
13216
+ headers: {
13217
+ [name: string]: unknown;
13218
+ };
13219
+ content: {
13220
+ "application/json": {
13221
+ /** @constant */
13222
+ message: "Vinculación revocada.";
13223
+ };
13224
+ };
13225
+ };
13226
+ 404: components["responses"]["ModelNotFoundException"];
13227
+ };
13228
+ };
11977
13229
  "general.getAllUsedCurrencies": {
11978
13230
  parameters: {
11979
13231
  query?: never;
@@ -17720,7 +18972,140 @@ export interface operations {
17720
18972
  query?: never;
17721
18973
  header?: never;
17722
18974
  path: {
17723
- hash: string;
18975
+ hash: string;
18976
+ };
18977
+ cookie?: never;
18978
+ };
18979
+ requestBody?: never;
18980
+ responses: {
18981
+ 200: {
18982
+ headers: {
18983
+ [name: string]: unknown;
18984
+ };
18985
+ content: {
18986
+ "application/pdf": Blob;
18987
+ };
18988
+ };
18989
+ 403: components["responses"]["AuthorizationException"];
18990
+ };
18991
+ };
18992
+ "tax-types.index": {
18993
+ parameters: {
18994
+ query?: never;
18995
+ header?: never;
18996
+ path?: never;
18997
+ cookie?: never;
18998
+ };
18999
+ requestBody?: never;
19000
+ responses: {
19001
+ /** @description Array of `TaxTypeResource` */
19002
+ 200: {
19003
+ headers: {
19004
+ [name: string]: unknown;
19005
+ };
19006
+ content: {
19007
+ "application/json": {
19008
+ data: components["schemas"]["TaxTypeResource"][];
19009
+ };
19010
+ };
19011
+ };
19012
+ 403: components["responses"]["AuthorizationException"];
19013
+ };
19014
+ };
19015
+ "tax-types.store": {
19016
+ parameters: {
19017
+ query?: never;
19018
+ header?: never;
19019
+ path?: never;
19020
+ cookie?: never;
19021
+ };
19022
+ requestBody: {
19023
+ content: {
19024
+ "application/json": components["schemas"]["TaxTypeRequest"];
19025
+ };
19026
+ };
19027
+ responses: {
19028
+ /** @description `TaxTypeResource` */
19029
+ 201: {
19030
+ headers: {
19031
+ [name: string]: unknown;
19032
+ };
19033
+ content: {
19034
+ "application/json": {
19035
+ data: components["schemas"]["TaxTypeResource"];
19036
+ };
19037
+ };
19038
+ };
19039
+ 403: components["responses"]["AuthorizationException"];
19040
+ 422: components["responses"]["ValidationException"];
19041
+ };
19042
+ };
19043
+ "tax-types.show": {
19044
+ parameters: {
19045
+ query?: never;
19046
+ header?: never;
19047
+ path: {
19048
+ /** @description The tax type ID */
19049
+ taxType: number;
19050
+ };
19051
+ cookie?: never;
19052
+ };
19053
+ requestBody?: never;
19054
+ responses: {
19055
+ /** @description `TaxTypeResource` */
19056
+ 200: {
19057
+ headers: {
19058
+ [name: string]: unknown;
19059
+ };
19060
+ content: {
19061
+ "application/json": {
19062
+ data: components["schemas"]["TaxTypeResource"];
19063
+ };
19064
+ };
19065
+ };
19066
+ 403: components["responses"]["AuthorizationException"];
19067
+ 404: components["responses"]["ModelNotFoundException"];
19068
+ };
19069
+ };
19070
+ "tax-types.update": {
19071
+ parameters: {
19072
+ query?: never;
19073
+ header?: never;
19074
+ path: {
19075
+ /** @description The tax type ID */
19076
+ taxType: number;
19077
+ };
19078
+ cookie?: never;
19079
+ };
19080
+ requestBody: {
19081
+ content: {
19082
+ "application/json": components["schemas"]["TaxTypeRequest"];
19083
+ };
19084
+ };
19085
+ responses: {
19086
+ /** @description `TaxTypeResource` */
19087
+ 200: {
19088
+ headers: {
19089
+ [name: string]: unknown;
19090
+ };
19091
+ content: {
19092
+ "application/json": {
19093
+ data: components["schemas"]["TaxTypeResource"];
19094
+ };
19095
+ };
19096
+ };
19097
+ 403: components["responses"]["AuthorizationException"];
19098
+ 404: components["responses"]["ModelNotFoundException"];
19099
+ 422: components["responses"]["ValidationException"];
19100
+ };
19101
+ };
19102
+ "tax-types.destroy": {
19103
+ parameters: {
19104
+ query?: never;
19105
+ header?: never;
19106
+ path: {
19107
+ /** @description The tax type ID */
19108
+ taxType: number;
17724
19109
  };
17725
19110
  cookie?: never;
17726
19111
  };
@@ -17731,133 +19116,235 @@ export interface operations {
17731
19116
  [name: string]: unknown;
17732
19117
  };
17733
19118
  content: {
17734
- "application/pdf": Blob;
19119
+ "application/json": {
19120
+ success: boolean;
19121
+ };
17735
19122
  };
17736
19123
  };
17737
19124
  403: components["responses"]["AuthorizationException"];
19125
+ 404: components["responses"]["ModelNotFoundException"];
17738
19126
  };
17739
19127
  };
17740
- "tax-types.index": {
19128
+ "taxTypes.toggleActive": {
17741
19129
  parameters: {
17742
19130
  query?: never;
17743
19131
  header?: never;
17744
- path?: never;
19132
+ path: {
19133
+ /** @description The tax type ID */
19134
+ taxType: number;
19135
+ };
17745
19136
  cookie?: never;
17746
19137
  };
17747
19138
  requestBody?: never;
17748
19139
  responses: {
17749
- /** @description Array of `TaxTypeResource` */
19140
+ /** @description `TaxTypeResource` */
17750
19141
  200: {
17751
19142
  headers: {
17752
19143
  [name: string]: unknown;
17753
19144
  };
17754
19145
  content: {
17755
19146
  "application/json": {
17756
- data: components["schemas"]["TaxTypeResource"][];
19147
+ data: components["schemas"]["TaxTypeResource"];
17757
19148
  };
17758
19149
  };
17759
19150
  };
17760
19151
  403: components["responses"]["AuthorizationException"];
19152
+ 404: components["responses"]["ModelNotFoundException"];
17761
19153
  };
17762
19154
  };
17763
- "tax-types.store": {
19155
+ "tenantDelegationCallback.delegatedIndex": {
17764
19156
  parameters: {
17765
19157
  query?: never;
17766
19158
  header?: never;
17767
19159
  path?: never;
17768
19160
  cookie?: never;
17769
19161
  };
17770
- requestBody: {
17771
- content: {
17772
- "application/json": components["schemas"]["TaxTypeRequest"];
17773
- };
17774
- };
19162
+ requestBody?: never;
17775
19163
  responses: {
17776
- /** @description `TaxTypeResource` */
17777
- 201: {
19164
+ 200: {
17778
19165
  headers: {
17779
19166
  [name: string]: unknown;
17780
19167
  };
17781
19168
  content: {
17782
19169
  "application/json": {
17783
- data: components["schemas"]["TaxTypeResource"];
17784
- };
19170
+ id: number;
19171
+ tenant_id: string;
19172
+ task_type: string | null;
19173
+ agent_skill: string | null;
19174
+ title: string;
19175
+ context: {
19176
+ [key: string]: unknown;
19177
+ } | null;
19178
+ delegation_status: string;
19179
+ delegated_at: string | null;
19180
+ hermes_kanban_id: string | null;
19181
+ result_data: {
19182
+ [key: string]: unknown;
19183
+ } | null;
19184
+ delegation_result: string | null;
19185
+ delegation_proposal: {
19186
+ [key: string]: unknown;
19187
+ } | null;
19188
+ delegation_proposal_status: string | null;
19189
+ delegation_proposed_at: string | null;
19190
+ delegation_applied_at: string | null;
19191
+ plane: string;
19192
+ origin_client_id: string | null;
19193
+ created_at: string | null;
19194
+ updated_at: string | null;
19195
+ write_effect: boolean;
19196
+ default_mode: string;
19197
+ verifiability_level: number | null;
19198
+ }[];
17785
19199
  };
17786
19200
  };
17787
- 403: components["responses"]["AuthorizationException"];
17788
- 422: components["responses"]["ValidationException"];
17789
19201
  };
17790
19202
  };
17791
- "tax-types.show": {
19203
+ "tenantDelegationCallback.taskClaim": {
17792
19204
  parameters: {
17793
19205
  query?: never;
17794
19206
  header?: never;
17795
19207
  path: {
17796
- /** @description The tax type ID */
17797
- taxType: number;
19208
+ id: number;
17798
19209
  };
17799
19210
  cookie?: never;
17800
19211
  };
17801
19212
  requestBody?: never;
17802
19213
  responses: {
17803
- /** @description `TaxTypeResource` */
17804
19214
  200: {
17805
19215
  headers: {
17806
19216
  [name: string]: unknown;
17807
19217
  };
17808
19218
  content: {
17809
19219
  "application/json": {
17810
- data: components["schemas"]["TaxTypeResource"];
19220
+ id: number;
19221
+ tenant_id: string;
19222
+ task_type: string | null;
19223
+ agent_skill: string | null;
19224
+ title: string;
19225
+ context: {
19226
+ [key: string]: unknown;
19227
+ } | null;
19228
+ delegation_status: string;
19229
+ delegated_at: string | null;
19230
+ hermes_kanban_id: string | null;
19231
+ result_data: {
19232
+ [key: string]: unknown;
19233
+ } | null;
19234
+ delegation_result: string | null;
19235
+ delegation_proposal: {
19236
+ [key: string]: unknown;
19237
+ } | null;
19238
+ delegation_proposal_status: string | null;
19239
+ delegation_proposed_at: string | null;
19240
+ delegation_applied_at: string | null;
19241
+ plane: string;
19242
+ origin_client_id: string | null;
19243
+ created_at: string | null;
19244
+ updated_at: string | null;
17811
19245
  };
17812
19246
  };
17813
19247
  };
17814
- 403: components["responses"]["AuthorizationException"];
17815
- 404: components["responses"]["ModelNotFoundException"];
17816
19248
  };
17817
19249
  };
17818
- "tax-types.update": {
19250
+ "tenantDelegationCallback.taskPropose": {
17819
19251
  parameters: {
17820
19252
  query?: never;
17821
19253
  header?: never;
17822
19254
  path: {
17823
- /** @description The tax type ID */
17824
- taxType: number;
19255
+ id: number;
17825
19256
  };
17826
19257
  cookie?: never;
17827
19258
  };
17828
19259
  requestBody: {
17829
19260
  content: {
17830
- "application/json": components["schemas"]["TaxTypeRequest"];
19261
+ "application/json": {
19262
+ proposal: {
19263
+ schema_version?: number | null;
19264
+ /** @enum {string|null} */
19265
+ mode?: "applied" | "preview" | null;
19266
+ agent_trace_id?: string | null;
19267
+ summary: string;
19268
+ changes?: {
19269
+ label: string;
19270
+ type?: string | null;
19271
+ action?: string | null;
19272
+ link?: string | null;
19273
+ record_id?: string | null;
19274
+ apply?: string[] | null;
19275
+ }[] | null;
19276
+ evals?: {
19277
+ label: string;
19278
+ pass: boolean;
19279
+ detail?: string | null;
19280
+ nivel?: number | null;
19281
+ cuenta_para_sello?: boolean | null;
19282
+ }[] | null;
19283
+ verifiability?: {
19284
+ nivel?: number | null;
19285
+ cuenta_para_sello?: boolean | null;
19286
+ /** @enum {string|null} */
19287
+ sello?: "pass" | "fail" | "n/a" | null;
19288
+ } | null;
19289
+ };
19290
+ };
17831
19291
  };
17832
19292
  };
17833
19293
  responses: {
17834
- /** @description `TaxTypeResource` */
17835
19294
  200: {
17836
19295
  headers: {
17837
19296
  [name: string]: unknown;
17838
19297
  };
17839
19298
  content: {
17840
19299
  "application/json": {
17841
- data: components["schemas"]["TaxTypeResource"];
19300
+ id: number;
19301
+ tenant_id: string;
19302
+ task_type: string | null;
19303
+ agent_skill: string | null;
19304
+ title: string;
19305
+ context: {
19306
+ [key: string]: unknown;
19307
+ } | null;
19308
+ delegation_status: string;
19309
+ delegated_at: string | null;
19310
+ hermes_kanban_id: string | null;
19311
+ result_data: {
19312
+ [key: string]: unknown;
19313
+ } | null;
19314
+ delegation_result: string | null;
19315
+ delegation_proposal: {
19316
+ [key: string]: unknown;
19317
+ } | null;
19318
+ delegation_proposal_status: string | null;
19319
+ delegation_proposed_at: string | null;
19320
+ delegation_applied_at: string | null;
19321
+ plane: string;
19322
+ origin_client_id: string | null;
19323
+ created_at: string | null;
19324
+ updated_at: string | null;
17842
19325
  };
17843
19326
  };
17844
19327
  };
17845
- 403: components["responses"]["AuthorizationException"];
17846
- 404: components["responses"]["ModelNotFoundException"];
17847
19328
  422: components["responses"]["ValidationException"];
17848
19329
  };
17849
19330
  };
17850
- "tax-types.destroy": {
19331
+ "tenantDelegationCallback.taskComplete": {
17851
19332
  parameters: {
17852
19333
  query?: never;
17853
19334
  header?: never;
17854
19335
  path: {
17855
- /** @description The tax type ID */
17856
- taxType: number;
19336
+ id: number;
17857
19337
  };
17858
19338
  cookie?: never;
17859
19339
  };
17860
- requestBody?: never;
19340
+ requestBody?: {
19341
+ content: {
19342
+ "application/json": {
19343
+ result?: string | null;
19344
+ result_data?: string[] | null;
19345
+ };
19346
+ };
19347
+ };
17861
19348
  responses: {
17862
19349
  200: {
17863
19350
  headers: {
@@ -17865,39 +19352,90 @@ export interface operations {
17865
19352
  };
17866
19353
  content: {
17867
19354
  "application/json": {
17868
- success: boolean;
19355
+ id: number;
19356
+ tenant_id: string;
19357
+ task_type: string | null;
19358
+ agent_skill: string | null;
19359
+ title: string;
19360
+ context: {
19361
+ [key: string]: unknown;
19362
+ } | null;
19363
+ delegation_status: string;
19364
+ delegated_at: string | null;
19365
+ hermes_kanban_id: string | null;
19366
+ result_data: {
19367
+ [key: string]: unknown;
19368
+ } | null;
19369
+ delegation_result: string | null;
19370
+ delegation_proposal: {
19371
+ [key: string]: unknown;
19372
+ } | null;
19373
+ delegation_proposal_status: string | null;
19374
+ delegation_proposed_at: string | null;
19375
+ delegation_applied_at: string | null;
19376
+ plane: string;
19377
+ origin_client_id: string | null;
19378
+ created_at: string | null;
19379
+ updated_at: string | null;
17869
19380
  };
17870
19381
  };
17871
19382
  };
17872
- 403: components["responses"]["AuthorizationException"];
17873
- 404: components["responses"]["ModelNotFoundException"];
19383
+ 422: components["responses"]["ValidationException"];
17874
19384
  };
17875
19385
  };
17876
- "taxTypes.toggleActive": {
19386
+ "tenantDelegationCallback.taskFail": {
17877
19387
  parameters: {
17878
19388
  query?: never;
17879
19389
  header?: never;
17880
19390
  path: {
17881
- /** @description The tax type ID */
17882
- taxType: number;
19391
+ id: number;
17883
19392
  };
17884
19393
  cookie?: never;
17885
19394
  };
17886
- requestBody?: never;
19395
+ requestBody?: {
19396
+ content: {
19397
+ "application/json": {
19398
+ result?: string | null;
19399
+ result_data?: string[] | null;
19400
+ };
19401
+ };
19402
+ };
17887
19403
  responses: {
17888
- /** @description `TaxTypeResource` */
17889
19404
  200: {
17890
19405
  headers: {
17891
19406
  [name: string]: unknown;
17892
19407
  };
17893
19408
  content: {
17894
19409
  "application/json": {
17895
- data: components["schemas"]["TaxTypeResource"];
19410
+ id: number;
19411
+ tenant_id: string;
19412
+ task_type: string | null;
19413
+ agent_skill: string | null;
19414
+ title: string;
19415
+ context: {
19416
+ [key: string]: unknown;
19417
+ } | null;
19418
+ delegation_status: string;
19419
+ delegated_at: string | null;
19420
+ hermes_kanban_id: string | null;
19421
+ result_data: {
19422
+ [key: string]: unknown;
19423
+ } | null;
19424
+ delegation_result: string | null;
19425
+ delegation_proposal: {
19426
+ [key: string]: unknown;
19427
+ } | null;
19428
+ delegation_proposal_status: string | null;
19429
+ delegation_proposed_at: string | null;
19430
+ delegation_applied_at: string | null;
19431
+ plane: string;
19432
+ origin_client_id: string | null;
19433
+ created_at: string | null;
19434
+ updated_at: string | null;
17896
19435
  };
17897
19436
  };
17898
19437
  };
17899
- 403: components["responses"]["AuthorizationException"];
17900
- 404: components["responses"]["ModelNotFoundException"];
19438
+ 422: components["responses"]["ValidationException"];
17901
19439
  };
17902
19440
  };
17903
19441
  "tenantModules.index": {
@@ -21692,6 +23230,168 @@ export interface operations {
21692
23230
  };
21693
23231
  };
21694
23232
  };
23233
+ "veriFactuSettings.index": {
23234
+ parameters: {
23235
+ query?: never;
23236
+ header?: never;
23237
+ path?: never;
23238
+ cookie?: never;
23239
+ };
23240
+ requestBody?: never;
23241
+ responses: {
23242
+ 200: {
23243
+ headers: {
23244
+ [name: string]: unknown;
23245
+ };
23246
+ content: {
23247
+ "application/json": {
23248
+ data: unknown[] | {
23249
+ id: null;
23250
+ nif: string;
23251
+ name: string;
23252
+ certificate_expires_at: null;
23253
+ is_production: boolean;
23254
+ use_representative: boolean;
23255
+ representative_nif: null;
23256
+ representative_name: null;
23257
+ /** @constant */
23258
+ authorization_status: "none";
23259
+ };
23260
+ };
23261
+ };
23262
+ };
23263
+ 500: {
23264
+ headers: {
23265
+ [name: string]: unknown;
23266
+ };
23267
+ content: {
23268
+ "application/json": {
23269
+ error: string;
23270
+ };
23271
+ };
23272
+ };
23273
+ };
23274
+ };
23275
+ "veriFactuSettings.update": {
23276
+ parameters: {
23277
+ query?: never;
23278
+ header?: never;
23279
+ path?: never;
23280
+ cookie?: never;
23281
+ };
23282
+ requestBody?: {
23283
+ content: {
23284
+ "application/json": {
23285
+ is_production?: boolean;
23286
+ use_representative?: boolean;
23287
+ representative_nif?: string | null;
23288
+ representative_name?: string | null;
23289
+ };
23290
+ };
23291
+ };
23292
+ responses: {
23293
+ /**
23294
+ * @description Sin contribuyente y sin datos para crearlo (NIF o nombre): local
23295
+ * hasta que existan.
23296
+ */
23297
+ 200: {
23298
+ headers: {
23299
+ [name: string]: unknown;
23300
+ };
23301
+ content: {
23302
+ "application/json": {
23303
+ /** @constant */
23304
+ message: "Configuración guardada localmente. Se sincronizará con VeriFactu cuando se configure el contribuyente.";
23305
+ data: unknown[];
23306
+ } | {
23307
+ /** @constant */
23308
+ message: "Configuración actualizada correctamente.";
23309
+ data: unknown[];
23310
+ };
23311
+ };
23312
+ };
23313
+ 422: components["responses"]["ValidationException"];
23314
+ 502: {
23315
+ headers: {
23316
+ [name: string]: unknown;
23317
+ };
23318
+ content: {
23319
+ "application/json": {
23320
+ error: string;
23321
+ };
23322
+ };
23323
+ };
23324
+ };
23325
+ };
23326
+ "veriFactuSettings.storeTaxpayer": {
23327
+ parameters: {
23328
+ query?: never;
23329
+ header?: never;
23330
+ path?: never;
23331
+ cookie?: never;
23332
+ };
23333
+ requestBody?: never;
23334
+ responses: {
23335
+ 200: {
23336
+ headers: {
23337
+ [name: string]: unknown;
23338
+ };
23339
+ content: {
23340
+ "application/json": {
23341
+ data: {
23342
+ [key: string]: unknown;
23343
+ } | null | unknown[];
23344
+ };
23345
+ };
23346
+ };
23347
+ 422: {
23348
+ headers: {
23349
+ [name: string]: unknown;
23350
+ };
23351
+ content: {
23352
+ "application/json": {
23353
+ error: string;
23354
+ };
23355
+ };
23356
+ };
23357
+ };
23358
+ };
23359
+ "veriFactuSettings.uploadCertificate": {
23360
+ parameters: {
23361
+ query?: never;
23362
+ header?: never;
23363
+ path?: never;
23364
+ cookie?: never;
23365
+ };
23366
+ requestBody: {
23367
+ content: {
23368
+ "multipart/form-data": {
23369
+ /**
23370
+ * Format: binary
23371
+ * @description Maximum file size: 5120 kilobytes.
23372
+ */
23373
+ certificate: Blob;
23374
+ /** @description 5MB max */
23375
+ password: string;
23376
+ };
23377
+ };
23378
+ };
23379
+ responses: {
23380
+ 200: {
23381
+ headers: {
23382
+ [name: string]: unknown;
23383
+ };
23384
+ content: {
23385
+ "application/json": {
23386
+ /** @constant */
23387
+ message: "Certificado subido correctamente.";
23388
+ data: unknown[];
23389
+ };
23390
+ };
23391
+ };
23392
+ 422: components["responses"]["ValidationException"];
23393
+ };
23394
+ };
21695
23395
  "webhookEndpoints.index": {
21696
23396
  parameters: {
21697
23397
  query?: never;