@pimia/sdk 0.9.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.
- package/dist/api.d.ts +2018 -128
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -0
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -167,7 +167,7 @@ export interface paths {
|
|
|
167
167
|
* `group_by=customer` añade by_customer; con `group_by=category`, by_category.
|
|
168
168
|
* Lo consumen las tools MCP de informes (invoice-shelf-mcp).
|
|
169
169
|
*
|
|
170
|
-
* Importes en
|
|
170
|
+
* Importes en subunidades enteras de la moneda, como el resto de la API.
|
|
171
171
|
*
|
|
172
172
|
* QUÉ FACTURAS CUENTAN, que es la clase de cifra que un integrador no puede
|
|
173
173
|
* verificar por su cuenta y que hasta el 2026-08-24 el contrato no decía:
|
|
@@ -582,7 +582,6 @@ export interface paths {
|
|
|
582
582
|
/**
|
|
583
583
|
* Update the Admin profile.
|
|
584
584
|
* Includes name, email and (or) password
|
|
585
|
-
* @description **No disponible para integradores.** Exige `admin:write`, que el Authorization Server de Pimia no emite: la acción la realiza el dueño desde su panel y un token de partner recibe `403`. Aparece en el contrato para que el hueco sea explícito, no para que se llame.
|
|
586
585
|
*/
|
|
587
586
|
put: operations["company.updateProfile"];
|
|
588
587
|
post?: never;
|
|
@@ -680,6 +679,103 @@ export interface paths {
|
|
|
680
679
|
patch?: never;
|
|
681
680
|
trace?: never;
|
|
682
681
|
};
|
|
682
|
+
"/settings/connected-apps": {
|
|
683
|
+
parameters: {
|
|
684
|
+
query?: never;
|
|
685
|
+
header?: never;
|
|
686
|
+
path?: never;
|
|
687
|
+
cookie?: never;
|
|
688
|
+
};
|
|
689
|
+
/**
|
|
690
|
+
* Apps a las que este usuario ha autorizado el acceso a su cuenta
|
|
691
|
+
* @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í.
|
|
692
|
+
*
|
|
693
|
+
* `credentials` son las sesiones vivas del grant: una por dispositivo o
|
|
694
|
+
* proceso que completó una ceremonia OAuth. `connected_at` es el instante
|
|
695
|
+
* de ESA ceremonia y no el de la última renovación, que es lo que hace que
|
|
696
|
+
* la pantalla pueda decir «conectado desde el 25» de una sesión que rota su
|
|
697
|
+
* refresh cada día.
|
|
698
|
+
*
|
|
699
|
+
* `last_used_at` sale del PAT emparejado y no del refresh: el grant se toca
|
|
700
|
+
* en canje/refresh —una vez al día— y el PAT en CADA petición, así que es
|
|
701
|
+
* el único que sabe si esa sesión sigue trabajando. Sale null mientras la
|
|
702
|
+
* credencial no haya hecho ninguna petición todavía.
|
|
703
|
+
*
|
|
704
|
+
* `active_tokens` se queda como estaba (cuenta los PAT del client, rotados
|
|
705
|
+
* aún no caducados incluidos) para no romper a quien ya lo lee; lo que
|
|
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.
|
|
711
|
+
*/
|
|
712
|
+
get: operations["connectedApps.index"];
|
|
713
|
+
put?: never;
|
|
714
|
+
post?: never;
|
|
715
|
+
delete?: never;
|
|
716
|
+
options?: never;
|
|
717
|
+
head?: never;
|
|
718
|
+
patch?: never;
|
|
719
|
+
trace?: never;
|
|
720
|
+
};
|
|
721
|
+
"/settings/connected-apps/credentials/{credentialId}": {
|
|
722
|
+
parameters: {
|
|
723
|
+
query?: never;
|
|
724
|
+
header?: never;
|
|
725
|
+
path?: never;
|
|
726
|
+
cookie?: never;
|
|
727
|
+
};
|
|
728
|
+
get?: never;
|
|
729
|
+
put?: never;
|
|
730
|
+
post?: never;
|
|
731
|
+
/**
|
|
732
|
+
* Cierra UNA credencial —un dispositivo— sin tocar las demás ni el grant
|
|
733
|
+
* @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í.
|
|
734
|
+
*
|
|
735
|
+
* La app sigue conectada desde donde siga viva; para retirarle el acceso
|
|
736
|
+
* entero está `destroy`. Por eso esta operación no emite `app.revoked`: al
|
|
737
|
+
* integrador no le ha caído la puerta, se le ha caído una sesión.
|
|
738
|
+
*
|
|
739
|
+
* El grant sale de la propia credencial y se comprueba con el mismo filtro
|
|
740
|
+
* que el resto de la pantalla (este usuario, este tenant, sin revocar), así
|
|
741
|
+
* que la ruta no lo nombra: no hay forma de pedir un par descuadrado.
|
|
742
|
+
*
|
|
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.
|
|
748
|
+
*/
|
|
749
|
+
delete: operations["connectedApps.destroyCredential"];
|
|
750
|
+
options?: never;
|
|
751
|
+
head?: never;
|
|
752
|
+
patch?: never;
|
|
753
|
+
trace?: never;
|
|
754
|
+
};
|
|
755
|
+
"/settings/connected-apps/{authorizationId}": {
|
|
756
|
+
parameters: {
|
|
757
|
+
query?: never;
|
|
758
|
+
header?: never;
|
|
759
|
+
path?: never;
|
|
760
|
+
cookie?: never;
|
|
761
|
+
};
|
|
762
|
+
get?: never;
|
|
763
|
+
put?: never;
|
|
764
|
+
post?: never;
|
|
765
|
+
/**
|
|
766
|
+
* Retira el acceso de la app entera: cae el grant, sus refresh tokens y los
|
|
767
|
+
* PAT que esa app acuñó para este usuario. Todas sus credenciales con él
|
|
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).
|
|
772
|
+
*/
|
|
773
|
+
delete: operations["connectedApps.destroy"];
|
|
774
|
+
options?: never;
|
|
775
|
+
head?: never;
|
|
776
|
+
patch?: never;
|
|
777
|
+
trace?: never;
|
|
778
|
+
};
|
|
683
779
|
"/contacts": {
|
|
684
780
|
parameters: {
|
|
685
781
|
query?: never;
|
|
@@ -1000,6 +1096,280 @@ export interface paths {
|
|
|
1000
1096
|
patch?: never;
|
|
1001
1097
|
trace?: never;
|
|
1002
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
|
+
};
|
|
1003
1373
|
"/delivery-notes/{id}/mark-delivered": {
|
|
1004
1374
|
parameters: {
|
|
1005
1375
|
query?: never;
|
|
@@ -1522,7 +1892,7 @@ export interface paths {
|
|
|
1522
1892
|
patch?: never;
|
|
1523
1893
|
trace?: never;
|
|
1524
1894
|
};
|
|
1525
|
-
"/
|
|
1895
|
+
"/gestoria-link/asesorias": {
|
|
1526
1896
|
parameters: {
|
|
1527
1897
|
query?: never;
|
|
1528
1898
|
header?: never;
|
|
@@ -1530,10 +1900,11 @@ export interface paths {
|
|
|
1530
1900
|
cookie?: never;
|
|
1531
1901
|
};
|
|
1532
1902
|
/**
|
|
1533
|
-
*
|
|
1534
|
-
*
|
|
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í.
|
|
1535
1906
|
*/
|
|
1536
|
-
get: operations["
|
|
1907
|
+
get: operations["gestoriaLink.asesorias"];
|
|
1537
1908
|
put?: never;
|
|
1538
1909
|
post?: never;
|
|
1539
1910
|
delete?: never;
|
|
@@ -1542,39 +1913,113 @@ export interface paths {
|
|
|
1542
1913
|
patch?: never;
|
|
1543
1914
|
trace?: never;
|
|
1544
1915
|
};
|
|
1545
|
-
"/
|
|
1916
|
+
"/gestoria-link/status": {
|
|
1546
1917
|
parameters: {
|
|
1547
1918
|
query?: never;
|
|
1548
1919
|
header?: never;
|
|
1549
1920
|
path?: never;
|
|
1550
1921
|
cookie?: never;
|
|
1551
1922
|
};
|
|
1552
|
-
/**
|
|
1553
|
-
get: operations["
|
|
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"];
|
|
1554
1925
|
put?: never;
|
|
1555
|
-
|
|
1556
|
-
post: operations["settings.updateCompanySettings"];
|
|
1926
|
+
post?: never;
|
|
1557
1927
|
delete?: never;
|
|
1558
1928
|
options?: never;
|
|
1559
1929
|
head?: never;
|
|
1560
1930
|
patch?: never;
|
|
1561
1931
|
trace?: never;
|
|
1562
1932
|
};
|
|
1563
|
-
"/
|
|
1933
|
+
"/gestoria-link/request": {
|
|
1564
1934
|
parameters: {
|
|
1565
1935
|
query?: never;
|
|
1566
1936
|
header?: never;
|
|
1567
1937
|
path?: never;
|
|
1568
1938
|
cookie?: never;
|
|
1569
1939
|
};
|
|
1940
|
+
get?: never;
|
|
1941
|
+
put?: never;
|
|
1570
1942
|
/**
|
|
1571
|
-
*
|
|
1572
|
-
* @description **
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
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
|
+
};
|
|
1970
|
+
"/currencies/used": {
|
|
1971
|
+
parameters: {
|
|
1972
|
+
query?: never;
|
|
1973
|
+
header?: never;
|
|
1974
|
+
path?: never;
|
|
1975
|
+
cookie?: never;
|
|
1976
|
+
};
|
|
1977
|
+
/**
|
|
1978
|
+
* Handle the incoming request
|
|
1979
|
+
* @description **Catálogo `meta`.** Lectura libre: la alcanza cualquier token válido, sin scope y sin consentimiento adicional del dueño del tenant.
|
|
1980
|
+
*/
|
|
1981
|
+
get: operations["general.getAllUsedCurrencies"];
|
|
1982
|
+
put?: never;
|
|
1983
|
+
post?: never;
|
|
1984
|
+
delete?: never;
|
|
1985
|
+
options?: never;
|
|
1986
|
+
head?: never;
|
|
1987
|
+
patch?: never;
|
|
1988
|
+
trace?: never;
|
|
1989
|
+
};
|
|
1990
|
+
"/company/settings": {
|
|
1991
|
+
parameters: {
|
|
1992
|
+
query?: never;
|
|
1993
|
+
header?: never;
|
|
1994
|
+
path?: never;
|
|
1995
|
+
cookie?: never;
|
|
1996
|
+
};
|
|
1997
|
+
/** Handle the incoming request */
|
|
1998
|
+
get: operations["settings.getCompanySettings"];
|
|
1999
|
+
put?: never;
|
|
2000
|
+
/** Handle the incoming request */
|
|
2001
|
+
post: operations["settings.updateCompanySettings"];
|
|
2002
|
+
delete?: never;
|
|
2003
|
+
options?: never;
|
|
2004
|
+
head?: never;
|
|
2005
|
+
patch?: never;
|
|
2006
|
+
trace?: never;
|
|
2007
|
+
};
|
|
2008
|
+
"/currencies/{currency}/exchange-rate": {
|
|
2009
|
+
parameters: {
|
|
2010
|
+
query?: never;
|
|
2011
|
+
header?: never;
|
|
2012
|
+
path?: never;
|
|
2013
|
+
cookie?: never;
|
|
2014
|
+
};
|
|
2015
|
+
/**
|
|
2016
|
+
* El último tipo de cambio conocido de esta moneda contra la de la empresa
|
|
2017
|
+
* @description **Catálogo `meta`.** Lectura libre: la alcanza cualquier token válido, sin scope y sin consentimiento adicional del dueño del tenant.
|
|
2018
|
+
*
|
|
2019
|
+
* ⚠️ **Las dos ramas responden `200`.** Cuando hay cambio registrado viene
|
|
2020
|
+
* `exchangeRate`, un array de un solo elemento (así lo consume
|
|
2021
|
+
* `ExchangeRateConverter.vue`); cuando no hay ninguno viene
|
|
2022
|
+
* `error: no_exchange_rate_available` — con `200`, no con `404`. Quien
|
|
1578
2023
|
* llame tiene que mirar QUÉ clave llegó, no el código de estado.
|
|
1579
2024
|
*
|
|
1580
2025
|
* Una moneda que no existe sí es un `404`, y también la empresa sin ajuste
|
|
@@ -3247,8 +3692,8 @@ export interface paths {
|
|
|
3247
3692
|
*
|
|
3248
3693
|
* ⚠️ `total_credits` y `total_debits` SÍ son cadenas, y a propósito: son
|
|
3249
3694
|
* `SUM(amount)` sobre una columna `decimal(15,2)` que PostgreSQL entrega
|
|
3250
|
-
* como texto, y van en
|
|
3251
|
-
*
|
|
3695
|
+
* como texto, y van en la UNIDAD MAYOR de la moneda, con decimales, como el
|
|
3696
|
+
* resto de la banca —no en subunidades enteras como el resto de la API.
|
|
3252
3697
|
*/
|
|
3253
3698
|
get: operations["reconciliation.summary"];
|
|
3254
3699
|
put?: never;
|
|
@@ -3289,10 +3734,10 @@ export interface paths {
|
|
|
3289
3734
|
* ordenados por `score` descendente (importe, proximidad de fecha,
|
|
3290
3735
|
* referencia y nombre del cliente).
|
|
3291
3736
|
*
|
|
3292
|
-
* **`amount` va en
|
|
3293
|
-
* importe de documento en esta API. No lo confundas con
|
|
3294
|
-
* `bank_transactions.amount`, que sí va en
|
|
3295
|
-
* reflejo de un extracto bancario. `number` es `null` en los borradores,
|
|
3737
|
+
* **`amount` va en subunidades enteras**, como el `total` del que sale y como
|
|
3738
|
+
* todo importe de documento en esta API. No lo confundas con
|
|
3739
|
+
* `bank_transactions.amount`, que sí va en la unidad mayor con decimales por
|
|
3740
|
+
* ser el reflejo de un extracto bancario. `number` es `null` en los borradores,
|
|
3296
3741
|
* que nacen sin numerar: el identificador estable es `model.id`.
|
|
3297
3742
|
*/
|
|
3298
3743
|
get: operations["reconciliation.suggestions"];
|
|
@@ -4096,7 +4541,7 @@ export interface paths {
|
|
|
4096
4541
|
put?: never;
|
|
4097
4542
|
/**
|
|
4098
4543
|
* POST tasks/{task}/delegate — delega esta tarea CRM a su agente Pim
|
|
4099
|
-
* @description **
|
|
4544
|
+
* @description **Reservada al panel de Pimia.** Exige `crm:write`, `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir esos scopes —se le rechazan en el registro y no se le anuncian— 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í.
|
|
4100
4545
|
*
|
|
4101
4546
|
* Reusa el plano async `delegated_tasks` (el mismo que ya cierra el round-trip
|
|
4102
4547
|
* delegar→agente→callback→sello): compone un context rico desde la tarea (título,
|
|
@@ -4228,6 +4673,144 @@ export interface paths {
|
|
|
4228
4673
|
patch?: never;
|
|
4229
4674
|
trace?: never;
|
|
4230
4675
|
};
|
|
4676
|
+
"/delegated-tasks": {
|
|
4677
|
+
parameters: {
|
|
4678
|
+
query?: never;
|
|
4679
|
+
header?: never;
|
|
4680
|
+
path?: never;
|
|
4681
|
+
cookie?: never;
|
|
4682
|
+
};
|
|
4683
|
+
/**
|
|
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í.
|
|
4686
|
+
*
|
|
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.
|
|
4691
|
+
*/
|
|
4692
|
+
get: operations["tenantDelegationCallback.delegatedIndex"];
|
|
4693
|
+
put?: never;
|
|
4694
|
+
post?: never;
|
|
4695
|
+
delete?: never;
|
|
4696
|
+
options?: never;
|
|
4697
|
+
head?: never;
|
|
4698
|
+
patch?: never;
|
|
4699
|
+
trace?: never;
|
|
4700
|
+
};
|
|
4701
|
+
"/delegated-tasks/{id}/claim": {
|
|
4702
|
+
parameters: {
|
|
4703
|
+
query?: never;
|
|
4704
|
+
header?: never;
|
|
4705
|
+
path?: never;
|
|
4706
|
+
cookie?: never;
|
|
4707
|
+
};
|
|
4708
|
+
get?: never;
|
|
4709
|
+
put?: never;
|
|
4710
|
+
/**
|
|
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í.
|
|
4713
|
+
*
|
|
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
|
+
};
|
|
4231
4814
|
"/tenant-modules": {
|
|
4232
4815
|
parameters: {
|
|
4233
4816
|
query?: never;
|
|
@@ -4807,6 +5390,98 @@ export interface paths {
|
|
|
4807
5390
|
patch?: never;
|
|
4808
5391
|
trace?: never;
|
|
4809
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
|
+
};
|
|
4810
5485
|
"/settings/webhooks": {
|
|
4811
5486
|
parameters: {
|
|
4812
5487
|
query?: never;
|
|
@@ -5111,7 +5786,7 @@ export interface components {
|
|
|
5111
5786
|
name: string;
|
|
5112
5787
|
iban: string | null;
|
|
5113
5788
|
bank_name: string | null;
|
|
5114
|
-
/** @description
|
|
5789
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5115
5790
|
opening_balance: string;
|
|
5116
5791
|
currency_code: string;
|
|
5117
5792
|
enabled: boolean;
|
|
@@ -5121,7 +5796,7 @@ export interface components {
|
|
|
5121
5796
|
updated_at: string | null;
|
|
5122
5797
|
/** Format: date-time */
|
|
5123
5798
|
deleted_at: string | null;
|
|
5124
|
-
/** @description
|
|
5799
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5125
5800
|
balance: string;
|
|
5126
5801
|
};
|
|
5127
5802
|
/** BankImport */
|
|
@@ -5150,7 +5825,7 @@ export interface components {
|
|
|
5150
5825
|
transaction_date: string;
|
|
5151
5826
|
/** Format: date-time */
|
|
5152
5827
|
value_date: string | null;
|
|
5153
|
-
/** @description
|
|
5828
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5154
5829
|
amount: string;
|
|
5155
5830
|
/**
|
|
5156
5831
|
* @description Signo del apunte tal y como lo trae el extracto: `credit` entra dinero, `debit` sale. El importe va siempre en positivo, así que el signo es esto.
|
|
@@ -6081,10 +6756,11 @@ export interface components {
|
|
|
6081
6756
|
sub_total?: number | null;
|
|
6082
6757
|
total?: number | null;
|
|
6083
6758
|
/**
|
|
6084
|
-
* @description `integer` porque son
|
|
6085
|
-
* publicaba este campo como `string` —el
|
|
6086
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6087
|
-
* como 10,5
|
|
6759
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
6760
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
6761
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
6762
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
6763
|
+
* significa nada.
|
|
6088
6764
|
*/
|
|
6089
6765
|
tax?: number | null;
|
|
6090
6766
|
template_name?: string | null;
|
|
@@ -6226,10 +6902,11 @@ export interface components {
|
|
|
6226
6902
|
exchange_rate?: string | null;
|
|
6227
6903
|
payment_method_id?: string | null;
|
|
6228
6904
|
/**
|
|
6229
|
-
* @description `integer` porque son
|
|
6230
|
-
* publicaba este campo como `string` —el
|
|
6231
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6232
|
-
* como 10,5
|
|
6905
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
6906
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
6907
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
6908
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
6909
|
+
* significa nada.
|
|
6233
6910
|
*/
|
|
6234
6911
|
amount: number;
|
|
6235
6912
|
customer_id?: string | null;
|
|
@@ -6765,10 +7442,11 @@ export interface components {
|
|
|
6765
7442
|
sub_total?: number | null;
|
|
6766
7443
|
total?: number | null;
|
|
6767
7444
|
/**
|
|
6768
|
-
* @description `integer` porque son
|
|
6769
|
-
* publicaba este campo como `string` —el
|
|
6770
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6771
|
-
* como 10,5
|
|
7445
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
7446
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
7447
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
7448
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
7449
|
+
* significa nada.
|
|
6772
7450
|
*/
|
|
6773
7451
|
tax?: number | null;
|
|
6774
7452
|
/**
|
|
@@ -6946,10 +7624,11 @@ export interface components {
|
|
|
6946
7624
|
ItemsRequest: {
|
|
6947
7625
|
name: string;
|
|
6948
7626
|
/**
|
|
6949
|
-
* @description `integer` porque son
|
|
6950
|
-
* publicaba este campo como `string` —el
|
|
6951
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6952
|
-
* como 10,5
|
|
7627
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
7628
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
7629
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
7630
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
7631
|
+
* significa nada.
|
|
6953
7632
|
*/
|
|
6954
7633
|
price: number;
|
|
6955
7634
|
/** @enum {string|null} */
|
|
@@ -7248,12 +7927,20 @@ export interface components {
|
|
|
7248
7927
|
currency?: components["schemas"]["CurrencyResource"] | null;
|
|
7249
7928
|
transaction?: components["schemas"]["TransactionResource"] | null;
|
|
7250
7929
|
};
|
|
7251
|
-
/**
|
|
7930
|
+
/**
|
|
7931
|
+
* ProfileRequest
|
|
7932
|
+
* @description `PUT /me` — el nombre, el correo y la contraseña de quien llama.
|
|
7933
|
+
*
|
|
7934
|
+
* Cambiar el **correo** o la **contraseña** exige `current_password`, la
|
|
7935
|
+
* vigente. Cambiar solo el nombre no: `name` y `email` son los dos `required`,
|
|
7936
|
+
* así que reenviar el mismo correo no cuenta como cambio.
|
|
7937
|
+
*/
|
|
7252
7938
|
ProfileRequest: {
|
|
7253
7939
|
name: string;
|
|
7254
7940
|
password?: string | null;
|
|
7255
7941
|
/** Format: email */
|
|
7256
7942
|
email: string;
|
|
7943
|
+
current_password?: string;
|
|
7257
7944
|
};
|
|
7258
7945
|
/** ProjectRequest */
|
|
7259
7946
|
ProjectRequest: {
|
|
@@ -7389,10 +8076,11 @@ export interface components {
|
|
|
7389
8076
|
sub_total: number;
|
|
7390
8077
|
total: number;
|
|
7391
8078
|
/**
|
|
7392
|
-
* @description `integer` porque son
|
|
7393
|
-
* publicaba este campo como `string` —el
|
|
7394
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
7395
|
-
* como 10,5
|
|
8079
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
8080
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
8081
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
8082
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
8083
|
+
* significa nada.
|
|
7396
8084
|
*/
|
|
7397
8085
|
tax: number;
|
|
7398
8086
|
/**
|
|
@@ -7509,10 +8197,11 @@ export interface components {
|
|
|
7509
8197
|
sub_total?: number | null;
|
|
7510
8198
|
total?: number | null;
|
|
7511
8199
|
/**
|
|
7512
|
-
* @description `integer` porque son
|
|
7513
|
-
* publicaba este campo como `string` —el
|
|
7514
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
7515
|
-
* como 10,5
|
|
8200
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
8201
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
8202
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
8203
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
8204
|
+
* significa nada.
|
|
7516
8205
|
*/
|
|
7517
8206
|
tax?: number | null;
|
|
7518
8207
|
/**
|
|
@@ -8801,7 +9490,7 @@ export interface operations {
|
|
|
8801
9490
|
};
|
|
8802
9491
|
content: {
|
|
8803
9492
|
"application/json": {
|
|
8804
|
-
version:
|
|
9493
|
+
version: string | null;
|
|
8805
9494
|
/** @constant */
|
|
8806
9495
|
channel: "stable";
|
|
8807
9496
|
};
|
|
@@ -9765,66 +10454,154 @@ export interface operations {
|
|
|
9765
10454
|
};
|
|
9766
10455
|
};
|
|
9767
10456
|
};
|
|
9768
|
-
"
|
|
10457
|
+
"connectedApps.index": {
|
|
9769
10458
|
parameters: {
|
|
9770
|
-
query
|
|
9771
|
-
customer_id: number;
|
|
9772
|
-
};
|
|
10459
|
+
query?: never;
|
|
9773
10460
|
header?: never;
|
|
9774
10461
|
path?: never;
|
|
9775
10462
|
cookie?: never;
|
|
9776
10463
|
};
|
|
9777
10464
|
requestBody?: never;
|
|
9778
10465
|
responses: {
|
|
9779
|
-
/** @description Array of `ContactResource` */
|
|
9780
10466
|
200: {
|
|
9781
10467
|
headers: {
|
|
9782
10468
|
[name: string]: unknown;
|
|
9783
10469
|
};
|
|
9784
10470
|
content: {
|
|
9785
10471
|
"application/json": {
|
|
9786
|
-
data:
|
|
10472
|
+
data: {
|
|
10473
|
+
id: number;
|
|
10474
|
+
name: string;
|
|
10475
|
+
confidential: boolean;
|
|
10476
|
+
scopes: string[];
|
|
10477
|
+
permissions: {
|
|
10478
|
+
text: string;
|
|
10479
|
+
write: boolean;
|
|
10480
|
+
}[];
|
|
10481
|
+
summary: string;
|
|
10482
|
+
connected_at: string | null;
|
|
10483
|
+
last_used_at: string | null;
|
|
10484
|
+
active_tokens: number;
|
|
10485
|
+
credentials: {
|
|
10486
|
+
id: number;
|
|
10487
|
+
connected_at: string | null;
|
|
10488
|
+
last_used_at: string | null;
|
|
10489
|
+
expires_at: string | null;
|
|
10490
|
+
}[];
|
|
10491
|
+
}[];
|
|
9787
10492
|
};
|
|
9788
10493
|
};
|
|
9789
10494
|
};
|
|
9790
|
-
403: components["responses"]["AuthorizationException"];
|
|
9791
|
-
422: components["responses"]["ValidationException"];
|
|
9792
10495
|
};
|
|
9793
10496
|
};
|
|
9794
|
-
"
|
|
10497
|
+
"connectedApps.destroyCredential": {
|
|
9795
10498
|
parameters: {
|
|
9796
10499
|
query?: never;
|
|
9797
10500
|
header?: never;
|
|
9798
|
-
path
|
|
9799
|
-
|
|
9800
|
-
};
|
|
9801
|
-
requestBody: {
|
|
9802
|
-
content: {
|
|
9803
|
-
"application/json": components["schemas"]["ContactRequest"];
|
|
10501
|
+
path: {
|
|
10502
|
+
credentialId: number;
|
|
9804
10503
|
};
|
|
10504
|
+
cookie?: never;
|
|
9805
10505
|
};
|
|
10506
|
+
requestBody?: never;
|
|
9806
10507
|
responses: {
|
|
9807
|
-
|
|
9808
|
-
201: {
|
|
10508
|
+
200: {
|
|
9809
10509
|
headers: {
|
|
9810
10510
|
[name: string]: unknown;
|
|
9811
10511
|
};
|
|
9812
10512
|
content: {
|
|
9813
10513
|
"application/json": {
|
|
9814
|
-
|
|
10514
|
+
message: string;
|
|
10515
|
+
revoked_tokens: number;
|
|
9815
10516
|
};
|
|
9816
10517
|
};
|
|
9817
10518
|
};
|
|
9818
|
-
403: components["responses"]["AuthorizationException"];
|
|
9819
|
-
422: components["responses"]["ValidationException"];
|
|
9820
10519
|
};
|
|
9821
10520
|
};
|
|
9822
|
-
"
|
|
10521
|
+
"connectedApps.destroy": {
|
|
9823
10522
|
parameters: {
|
|
9824
10523
|
query?: never;
|
|
9825
10524
|
header?: never;
|
|
9826
10525
|
path: {
|
|
9827
|
-
|
|
10526
|
+
authorizationId: number;
|
|
10527
|
+
};
|
|
10528
|
+
cookie?: never;
|
|
10529
|
+
};
|
|
10530
|
+
requestBody?: never;
|
|
10531
|
+
responses: {
|
|
10532
|
+
200: {
|
|
10533
|
+
headers: {
|
|
10534
|
+
[name: string]: unknown;
|
|
10535
|
+
};
|
|
10536
|
+
content: {
|
|
10537
|
+
"application/json": {
|
|
10538
|
+
message: string;
|
|
10539
|
+
revoked_tokens: number;
|
|
10540
|
+
};
|
|
10541
|
+
};
|
|
10542
|
+
};
|
|
10543
|
+
};
|
|
10544
|
+
};
|
|
10545
|
+
"contact.index": {
|
|
10546
|
+
parameters: {
|
|
10547
|
+
query: {
|
|
10548
|
+
customer_id: number;
|
|
10549
|
+
};
|
|
10550
|
+
header?: never;
|
|
10551
|
+
path?: never;
|
|
10552
|
+
cookie?: never;
|
|
10553
|
+
};
|
|
10554
|
+
requestBody?: never;
|
|
10555
|
+
responses: {
|
|
10556
|
+
/** @description Array of `ContactResource` */
|
|
10557
|
+
200: {
|
|
10558
|
+
headers: {
|
|
10559
|
+
[name: string]: unknown;
|
|
10560
|
+
};
|
|
10561
|
+
content: {
|
|
10562
|
+
"application/json": {
|
|
10563
|
+
data: components["schemas"]["ContactResource"][];
|
|
10564
|
+
};
|
|
10565
|
+
};
|
|
10566
|
+
};
|
|
10567
|
+
403: components["responses"]["AuthorizationException"];
|
|
10568
|
+
422: components["responses"]["ValidationException"];
|
|
10569
|
+
};
|
|
10570
|
+
};
|
|
10571
|
+
"contact.store": {
|
|
10572
|
+
parameters: {
|
|
10573
|
+
query?: never;
|
|
10574
|
+
header?: never;
|
|
10575
|
+
path?: never;
|
|
10576
|
+
cookie?: never;
|
|
10577
|
+
};
|
|
10578
|
+
requestBody: {
|
|
10579
|
+
content: {
|
|
10580
|
+
"application/json": components["schemas"]["ContactRequest"];
|
|
10581
|
+
};
|
|
10582
|
+
};
|
|
10583
|
+
responses: {
|
|
10584
|
+
/** @description `ContactResource` */
|
|
10585
|
+
201: {
|
|
10586
|
+
headers: {
|
|
10587
|
+
[name: string]: unknown;
|
|
10588
|
+
};
|
|
10589
|
+
content: {
|
|
10590
|
+
"application/json": {
|
|
10591
|
+
data: components["schemas"]["ContactResource"];
|
|
10592
|
+
};
|
|
10593
|
+
};
|
|
10594
|
+
};
|
|
10595
|
+
403: components["responses"]["AuthorizationException"];
|
|
10596
|
+
422: components["responses"]["ValidationException"];
|
|
10597
|
+
};
|
|
10598
|
+
};
|
|
10599
|
+
"contact.show": {
|
|
10600
|
+
parameters: {
|
|
10601
|
+
query?: never;
|
|
10602
|
+
header?: never;
|
|
10603
|
+
path: {
|
|
10604
|
+
/** @description The contact ID */
|
|
9828
10605
|
contact: number;
|
|
9829
10606
|
};
|
|
9830
10607
|
cookie?: never;
|
|
@@ -10264,7 +11041,7 @@ export interface operations {
|
|
|
10264
11041
|
"customers.index": {
|
|
10265
11042
|
parameters: {
|
|
10266
11043
|
query?: {
|
|
10267
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: nombre, contacto, NIF, saldo pendiente neto en
|
|
11044
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: nombre, contacto, NIF, saldo pendiente neto en subunidades y fechas — sin direcciones, campos personalizados, empresa, moneda ni método de pago, y sin el avatar (que cuesta una consulta por fila). Pensado para índices y para recuentos que solo leen el `meta`; la ficha completa sigue en el detalle y en el índice sin este parámetro. */
|
|
10268
11045
|
view?: "summary";
|
|
10269
11046
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
10270
11047
|
external_ref?: string;
|
|
@@ -10535,6 +11312,512 @@ export interface operations {
|
|
|
10535
11312
|
};
|
|
10536
11313
|
};
|
|
10537
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
|
+
};
|
|
10538
11821
|
"deliveryNotes.markDelivered": {
|
|
10539
11822
|
parameters: {
|
|
10540
11823
|
query?: never;
|
|
@@ -11145,7 +12428,7 @@ export interface operations {
|
|
|
11145
12428
|
"estimates.index": {
|
|
11146
12429
|
parameters: {
|
|
11147
12430
|
query?: {
|
|
11148
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, estado, importes en
|
|
12431
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, estado, importes en subunidades, el cliente reducido a `{id, name, email, phone}` y la URL del PDF — sin líneas, impuestos, empresa ni moneda. Pensado para índices y para recuentos que solo leen el `meta`; el documento completo sigue en el detalle y en el índice sin este parámetro. */
|
|
11149
12432
|
view?: "summary";
|
|
11150
12433
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
11151
12434
|
external_ref?: string;
|
|
@@ -11784,6 +13067,165 @@ export interface operations {
|
|
|
11784
13067
|
422: components["responses"]["ValidationException"];
|
|
11785
13068
|
};
|
|
11786
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
|
+
};
|
|
11787
13229
|
"general.getAllUsedCurrencies": {
|
|
11788
13230
|
parameters: {
|
|
11789
13231
|
query?: never;
|
|
@@ -12964,7 +14406,7 @@ export interface operations {
|
|
|
12964
14406
|
parameters: {
|
|
12965
14407
|
query?: {
|
|
12966
14408
|
limit?: string;
|
|
12967
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, los tres ejes de estado (documento, cobro y AEAT), importes en
|
|
14409
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, los tres ejes de estado (documento, cobro y AEAT), importes en subunidades —incluidos los netos de rectificativas—, el cliente reducido a `{id, name, email, phone}` y la URL del PDF; sin líneas, impuestos, pagos, empresa ni la factura rectificada. Pensado para índices y para recuentos que solo leen el `meta`; el documento completo sigue en el detalle y en el índice sin este parámetro. */
|
|
12968
14410
|
view?: "summary";
|
|
12969
14411
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
12970
14412
|
external_ref?: string;
|
|
@@ -17530,7 +18972,140 @@ export interface operations {
|
|
|
17530
18972
|
query?: never;
|
|
17531
18973
|
header?: never;
|
|
17532
18974
|
path: {
|
|
17533
|
-
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;
|
|
17534
19109
|
};
|
|
17535
19110
|
cookie?: never;
|
|
17536
19111
|
};
|
|
@@ -17541,133 +19116,235 @@ export interface operations {
|
|
|
17541
19116
|
[name: string]: unknown;
|
|
17542
19117
|
};
|
|
17543
19118
|
content: {
|
|
17544
|
-
"application/
|
|
19119
|
+
"application/json": {
|
|
19120
|
+
success: boolean;
|
|
19121
|
+
};
|
|
17545
19122
|
};
|
|
17546
19123
|
};
|
|
17547
19124
|
403: components["responses"]["AuthorizationException"];
|
|
19125
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
17548
19126
|
};
|
|
17549
19127
|
};
|
|
17550
|
-
"
|
|
19128
|
+
"taxTypes.toggleActive": {
|
|
17551
19129
|
parameters: {
|
|
17552
19130
|
query?: never;
|
|
17553
19131
|
header?: never;
|
|
17554
|
-
path
|
|
19132
|
+
path: {
|
|
19133
|
+
/** @description The tax type ID */
|
|
19134
|
+
taxType: number;
|
|
19135
|
+
};
|
|
17555
19136
|
cookie?: never;
|
|
17556
19137
|
};
|
|
17557
19138
|
requestBody?: never;
|
|
17558
19139
|
responses: {
|
|
17559
|
-
/** @description
|
|
19140
|
+
/** @description `TaxTypeResource` */
|
|
17560
19141
|
200: {
|
|
17561
19142
|
headers: {
|
|
17562
19143
|
[name: string]: unknown;
|
|
17563
19144
|
};
|
|
17564
19145
|
content: {
|
|
17565
19146
|
"application/json": {
|
|
17566
|
-
data: components["schemas"]["TaxTypeResource"]
|
|
19147
|
+
data: components["schemas"]["TaxTypeResource"];
|
|
17567
19148
|
};
|
|
17568
19149
|
};
|
|
17569
19150
|
};
|
|
17570
19151
|
403: components["responses"]["AuthorizationException"];
|
|
19152
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
17571
19153
|
};
|
|
17572
19154
|
};
|
|
17573
|
-
"
|
|
19155
|
+
"tenantDelegationCallback.delegatedIndex": {
|
|
17574
19156
|
parameters: {
|
|
17575
19157
|
query?: never;
|
|
17576
19158
|
header?: never;
|
|
17577
19159
|
path?: never;
|
|
17578
19160
|
cookie?: never;
|
|
17579
19161
|
};
|
|
17580
|
-
requestBody
|
|
17581
|
-
content: {
|
|
17582
|
-
"application/json": components["schemas"]["TaxTypeRequest"];
|
|
17583
|
-
};
|
|
17584
|
-
};
|
|
19162
|
+
requestBody?: never;
|
|
17585
19163
|
responses: {
|
|
17586
|
-
|
|
17587
|
-
201: {
|
|
19164
|
+
200: {
|
|
17588
19165
|
headers: {
|
|
17589
19166
|
[name: string]: unknown;
|
|
17590
19167
|
};
|
|
17591
19168
|
content: {
|
|
17592
19169
|
"application/json": {
|
|
17593
|
-
|
|
17594
|
-
|
|
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
|
+
}[];
|
|
17595
19199
|
};
|
|
17596
19200
|
};
|
|
17597
|
-
403: components["responses"]["AuthorizationException"];
|
|
17598
|
-
422: components["responses"]["ValidationException"];
|
|
17599
19201
|
};
|
|
17600
19202
|
};
|
|
17601
|
-
"
|
|
19203
|
+
"tenantDelegationCallback.taskClaim": {
|
|
17602
19204
|
parameters: {
|
|
17603
19205
|
query?: never;
|
|
17604
19206
|
header?: never;
|
|
17605
19207
|
path: {
|
|
17606
|
-
|
|
17607
|
-
taxType: number;
|
|
19208
|
+
id: number;
|
|
17608
19209
|
};
|
|
17609
19210
|
cookie?: never;
|
|
17610
19211
|
};
|
|
17611
19212
|
requestBody?: never;
|
|
17612
19213
|
responses: {
|
|
17613
|
-
/** @description `TaxTypeResource` */
|
|
17614
19214
|
200: {
|
|
17615
19215
|
headers: {
|
|
17616
19216
|
[name: string]: unknown;
|
|
17617
19217
|
};
|
|
17618
19218
|
content: {
|
|
17619
19219
|
"application/json": {
|
|
17620
|
-
|
|
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;
|
|
17621
19245
|
};
|
|
17622
19246
|
};
|
|
17623
19247
|
};
|
|
17624
|
-
403: components["responses"]["AuthorizationException"];
|
|
17625
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
17626
19248
|
};
|
|
17627
19249
|
};
|
|
17628
|
-
"
|
|
19250
|
+
"tenantDelegationCallback.taskPropose": {
|
|
17629
19251
|
parameters: {
|
|
17630
19252
|
query?: never;
|
|
17631
19253
|
header?: never;
|
|
17632
19254
|
path: {
|
|
17633
|
-
|
|
17634
|
-
taxType: number;
|
|
19255
|
+
id: number;
|
|
17635
19256
|
};
|
|
17636
19257
|
cookie?: never;
|
|
17637
19258
|
};
|
|
17638
19259
|
requestBody: {
|
|
17639
19260
|
content: {
|
|
17640
|
-
"application/json":
|
|
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
|
+
};
|
|
17641
19291
|
};
|
|
17642
19292
|
};
|
|
17643
19293
|
responses: {
|
|
17644
|
-
/** @description `TaxTypeResource` */
|
|
17645
19294
|
200: {
|
|
17646
19295
|
headers: {
|
|
17647
19296
|
[name: string]: unknown;
|
|
17648
19297
|
};
|
|
17649
19298
|
content: {
|
|
17650
19299
|
"application/json": {
|
|
17651
|
-
|
|
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;
|
|
17652
19325
|
};
|
|
17653
19326
|
};
|
|
17654
19327
|
};
|
|
17655
|
-
403: components["responses"]["AuthorizationException"];
|
|
17656
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
17657
19328
|
422: components["responses"]["ValidationException"];
|
|
17658
19329
|
};
|
|
17659
19330
|
};
|
|
17660
|
-
"
|
|
19331
|
+
"tenantDelegationCallback.taskComplete": {
|
|
17661
19332
|
parameters: {
|
|
17662
19333
|
query?: never;
|
|
17663
19334
|
header?: never;
|
|
17664
19335
|
path: {
|
|
17665
|
-
|
|
17666
|
-
taxType: number;
|
|
19336
|
+
id: number;
|
|
17667
19337
|
};
|
|
17668
19338
|
cookie?: never;
|
|
17669
19339
|
};
|
|
17670
|
-
requestBody?:
|
|
19340
|
+
requestBody?: {
|
|
19341
|
+
content: {
|
|
19342
|
+
"application/json": {
|
|
19343
|
+
result?: string | null;
|
|
19344
|
+
result_data?: string[] | null;
|
|
19345
|
+
};
|
|
19346
|
+
};
|
|
19347
|
+
};
|
|
17671
19348
|
responses: {
|
|
17672
19349
|
200: {
|
|
17673
19350
|
headers: {
|
|
@@ -17675,39 +19352,90 @@ export interface operations {
|
|
|
17675
19352
|
};
|
|
17676
19353
|
content: {
|
|
17677
19354
|
"application/json": {
|
|
17678
|
-
|
|
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;
|
|
17679
19380
|
};
|
|
17680
19381
|
};
|
|
17681
19382
|
};
|
|
17682
|
-
|
|
17683
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
19383
|
+
422: components["responses"]["ValidationException"];
|
|
17684
19384
|
};
|
|
17685
19385
|
};
|
|
17686
|
-
"
|
|
19386
|
+
"tenantDelegationCallback.taskFail": {
|
|
17687
19387
|
parameters: {
|
|
17688
19388
|
query?: never;
|
|
17689
19389
|
header?: never;
|
|
17690
19390
|
path: {
|
|
17691
|
-
|
|
17692
|
-
taxType: number;
|
|
19391
|
+
id: number;
|
|
17693
19392
|
};
|
|
17694
19393
|
cookie?: never;
|
|
17695
19394
|
};
|
|
17696
|
-
requestBody?:
|
|
19395
|
+
requestBody?: {
|
|
19396
|
+
content: {
|
|
19397
|
+
"application/json": {
|
|
19398
|
+
result?: string | null;
|
|
19399
|
+
result_data?: string[] | null;
|
|
19400
|
+
};
|
|
19401
|
+
};
|
|
19402
|
+
};
|
|
17697
19403
|
responses: {
|
|
17698
|
-
/** @description `TaxTypeResource` */
|
|
17699
19404
|
200: {
|
|
17700
19405
|
headers: {
|
|
17701
19406
|
[name: string]: unknown;
|
|
17702
19407
|
};
|
|
17703
19408
|
content: {
|
|
17704
19409
|
"application/json": {
|
|
17705
|
-
|
|
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;
|
|
17706
19435
|
};
|
|
17707
19436
|
};
|
|
17708
19437
|
};
|
|
17709
|
-
|
|
17710
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
19438
|
+
422: components["responses"]["ValidationException"];
|
|
17711
19439
|
};
|
|
17712
19440
|
};
|
|
17713
19441
|
"tenantModules.index": {
|
|
@@ -21502,6 +23230,168 @@ export interface operations {
|
|
|
21502
23230
|
};
|
|
21503
23231
|
};
|
|
21504
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
|
+
};
|
|
21505
23395
|
"webhookEndpoints.index": {
|
|
21506
23396
|
parameters: {
|
|
21507
23397
|
query?: never;
|