@pimia/sdk 0.10.0 → 0.12.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 +2774 -236
- package/dist/client.d.ts +230 -0
- package/dist/client.js +52 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +8 -0
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -192,6 +192,22 @@ export interface paths {
|
|
|
192
192
|
patch?: never;
|
|
193
193
|
trace?: never;
|
|
194
194
|
};
|
|
195
|
+
"/contracts/{contract}/activate": {
|
|
196
|
+
parameters: {
|
|
197
|
+
query?: never;
|
|
198
|
+
header?: never;
|
|
199
|
+
path?: never;
|
|
200
|
+
cookie?: never;
|
|
201
|
+
};
|
|
202
|
+
get?: never;
|
|
203
|
+
put?: never;
|
|
204
|
+
post: operations["contract.activateContract"];
|
|
205
|
+
delete?: never;
|
|
206
|
+
options?: never;
|
|
207
|
+
head?: never;
|
|
208
|
+
patch?: never;
|
|
209
|
+
trace?: never;
|
|
210
|
+
};
|
|
195
211
|
"/app/version": {
|
|
196
212
|
parameters: {
|
|
197
213
|
query?: never;
|
|
@@ -454,6 +470,22 @@ export interface paths {
|
|
|
454
470
|
patch?: never;
|
|
455
471
|
trace?: never;
|
|
456
472
|
};
|
|
473
|
+
"/contracts/{contract}/cancel": {
|
|
474
|
+
parameters: {
|
|
475
|
+
query?: never;
|
|
476
|
+
header?: never;
|
|
477
|
+
path?: never;
|
|
478
|
+
cookie?: never;
|
|
479
|
+
};
|
|
480
|
+
get?: never;
|
|
481
|
+
put?: never;
|
|
482
|
+
post: operations["contract.cancelContract"];
|
|
483
|
+
delete?: never;
|
|
484
|
+
options?: never;
|
|
485
|
+
head?: never;
|
|
486
|
+
patch?: never;
|
|
487
|
+
trace?: never;
|
|
488
|
+
};
|
|
457
489
|
"/estimates/{estimate}/status": {
|
|
458
490
|
parameters: {
|
|
459
491
|
query?: never;
|
|
@@ -704,6 +736,10 @@ export interface paths {
|
|
|
704
736
|
* `active_tokens` se queda como estaba (cuenta los PAT del client, rotados
|
|
705
737
|
* aún no caducados incluidos) para no romper a quien ya lo lee; lo que
|
|
706
738
|
* cuenta dispositivos es `credentials`.
|
|
739
|
+
*
|
|
740
|
+
* El grant del panel de primera parte NO sale: el panel es la casa, no una
|
|
741
|
+
* app conectada (ver el docblock de la clase). Solo se listan las
|
|
742
|
+
* invitadas — conectores, el escritorio y las apps de integradores.
|
|
707
743
|
*/
|
|
708
744
|
get: operations["connectedApps.index"];
|
|
709
745
|
put?: never;
|
|
@@ -736,10 +772,11 @@ export interface paths {
|
|
|
736
772
|
* que el resto de la pantalla (este usuario, este tenant, sin revocar), así
|
|
737
773
|
* que la ruta no lo nombra: no hay forma de pedir un par descuadrado.
|
|
738
774
|
*
|
|
739
|
-
* 404 cuando la credencial no existe, no es de este usuario
|
|
740
|
-
* viva (rotada, revocada o caducada)
|
|
741
|
-
*
|
|
742
|
-
*
|
|
775
|
+
* 404 cuando la credencial no existe, no es de este usuario, ya no está
|
|
776
|
+
* viva (rotada, revocada o caducada) — o es del panel de primera parte,
|
|
777
|
+
* que esta superficie no ve (docblock de la clase): quien cierra estaba
|
|
778
|
+
* mirando una lista de hace un momento y lo que necesita es recargarla, no
|
|
779
|
+
* un error distinto por cada motivo.
|
|
743
780
|
*/
|
|
744
781
|
delete: operations["connectedApps.destroyCredential"];
|
|
745
782
|
options?: never;
|
|
@@ -761,6 +798,9 @@ export interface paths {
|
|
|
761
798
|
* Retira el acceso de la app entera: cae el grant, sus refresh tokens y los
|
|
762
799
|
* PAT que esa app acuñó para este usuario. Todas sus credenciales con él
|
|
763
800
|
* @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í.
|
|
801
|
+
*
|
|
802
|
+
* El grant del panel de primera parte contesta 404: la casa no es una app
|
|
803
|
+
* conectada y esta superficie no lo ve (docblock de la clase).
|
|
764
804
|
*/
|
|
765
805
|
delete: operations["connectedApps.destroy"];
|
|
766
806
|
options?: never;
|
|
@@ -800,6 +840,79 @@ export interface paths {
|
|
|
800
840
|
patch?: never;
|
|
801
841
|
trace?: never;
|
|
802
842
|
};
|
|
843
|
+
"/contracts/{contract}/document": {
|
|
844
|
+
parameters: {
|
|
845
|
+
query?: never;
|
|
846
|
+
header?: never;
|
|
847
|
+
path?: never;
|
|
848
|
+
cookie?: never;
|
|
849
|
+
};
|
|
850
|
+
get?: never;
|
|
851
|
+
put?: never;
|
|
852
|
+
post: operations["contractDocument.upload"];
|
|
853
|
+
delete: operations["contractDocument.destroy"];
|
|
854
|
+
options?: never;
|
|
855
|
+
head?: never;
|
|
856
|
+
patch?: never;
|
|
857
|
+
trace?: never;
|
|
858
|
+
};
|
|
859
|
+
"/contracts/delete": {
|
|
860
|
+
parameters: {
|
|
861
|
+
query?: never;
|
|
862
|
+
header?: never;
|
|
863
|
+
path?: never;
|
|
864
|
+
cookie?: never;
|
|
865
|
+
};
|
|
866
|
+
get?: never;
|
|
867
|
+
put?: never;
|
|
868
|
+
/**
|
|
869
|
+
* Borrado en lote (`POST /contracts/delete`). Fail-loud: un id no
|
|
870
|
+
* borrable aborta el lote entero antes de borrar nada
|
|
871
|
+
*/
|
|
872
|
+
post: operations["contracts.delete"];
|
|
873
|
+
delete?: never;
|
|
874
|
+
options?: never;
|
|
875
|
+
head?: never;
|
|
876
|
+
patch?: never;
|
|
877
|
+
trace?: never;
|
|
878
|
+
};
|
|
879
|
+
"/contracts": {
|
|
880
|
+
parameters: {
|
|
881
|
+
query?: never;
|
|
882
|
+
header?: never;
|
|
883
|
+
path?: never;
|
|
884
|
+
cookie?: never;
|
|
885
|
+
};
|
|
886
|
+
get: operations["contracts.index"];
|
|
887
|
+
put?: never;
|
|
888
|
+
post: operations["contracts.store"];
|
|
889
|
+
delete?: never;
|
|
890
|
+
options?: never;
|
|
891
|
+
head?: never;
|
|
892
|
+
patch?: never;
|
|
893
|
+
trace?: never;
|
|
894
|
+
};
|
|
895
|
+
"/contracts/{contract}": {
|
|
896
|
+
parameters: {
|
|
897
|
+
query?: never;
|
|
898
|
+
header?: never;
|
|
899
|
+
path?: never;
|
|
900
|
+
cookie?: never;
|
|
901
|
+
};
|
|
902
|
+
get: operations["contracts.show"];
|
|
903
|
+
put: operations["contracts.update"];
|
|
904
|
+
post?: never;
|
|
905
|
+
/**
|
|
906
|
+
* Borra UN contrato, el de la ruta. Solo en borrador: lo activo se
|
|
907
|
+
* cancela, no se borra (decisión 8) — y eso es un 422 con el porqué, no
|
|
908
|
+
* un 500 ni un borrado a medias
|
|
909
|
+
*/
|
|
910
|
+
delete: operations["contracts.destroy"];
|
|
911
|
+
options?: never;
|
|
912
|
+
head?: never;
|
|
913
|
+
patch?: never;
|
|
914
|
+
trace?: never;
|
|
915
|
+
};
|
|
803
916
|
"/estimates/{estimate}/convert-to-invoice": {
|
|
804
917
|
parameters: {
|
|
805
918
|
query?: never;
|
|
@@ -1088,41 +1201,57 @@ export interface paths {
|
|
|
1088
1201
|
patch?: never;
|
|
1089
1202
|
trace?: never;
|
|
1090
1203
|
};
|
|
1091
|
-
"/
|
|
1204
|
+
"/delegable-tasks": {
|
|
1092
1205
|
parameters: {
|
|
1093
1206
|
query?: never;
|
|
1094
1207
|
header?: never;
|
|
1095
1208
|
path?: never;
|
|
1096
1209
|
cookie?: never;
|
|
1097
1210
|
};
|
|
1098
|
-
|
|
1211
|
+
/**
|
|
1212
|
+
* Catálogo de operaciones delegables de esta instancia
|
|
1213
|
+
* @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í.
|
|
1214
|
+
*
|
|
1215
|
+
* Solo las filas del propio tenant: lo que la instancia hereda no se pinta
|
|
1216
|
+
* aquí, así que un tenant que no ha descubierto nada arranca vacío.
|
|
1217
|
+
* `hermes_configured` dice si hay instancia de agente operable — sin ella,
|
|
1218
|
+
* el resto de la pantalla no tiene nada que activar.
|
|
1219
|
+
*/
|
|
1220
|
+
get: operations["delegableCatalog.index"];
|
|
1099
1221
|
put?: never;
|
|
1100
|
-
|
|
1101
|
-
post: operations["deliveryNotes.markDelivered"];
|
|
1222
|
+
post?: never;
|
|
1102
1223
|
delete?: never;
|
|
1103
1224
|
options?: never;
|
|
1104
1225
|
head?: never;
|
|
1105
1226
|
patch?: never;
|
|
1106
1227
|
trace?: never;
|
|
1107
1228
|
};
|
|
1108
|
-
"/
|
|
1229
|
+
"/delegable-tasks/delegations": {
|
|
1109
1230
|
parameters: {
|
|
1110
1231
|
query?: never;
|
|
1111
1232
|
header?: never;
|
|
1112
1233
|
path?: never;
|
|
1113
1234
|
cookie?: never;
|
|
1114
1235
|
};
|
|
1115
|
-
|
|
1236
|
+
/**
|
|
1237
|
+
* Las tareas delegadas del tenant: las 20 últimas, y TODAS las que esperan
|
|
1238
|
+
* decisión
|
|
1239
|
+
* @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í.
|
|
1240
|
+
*
|
|
1241
|
+
* Las que están pendientes de decidir entran siempre, aunque caigan fuera de
|
|
1242
|
+
* esas 20: esta es la única superficie donde se aprueban, así que un
|
|
1243
|
+
* checkpoint abierto no puede quedar enterrado por el volumen.
|
|
1244
|
+
*/
|
|
1245
|
+
get: operations["delegableCatalog.delegations"];
|
|
1116
1246
|
put?: never;
|
|
1117
|
-
|
|
1118
|
-
post: operations["deliveryNotes.convertToInvoice"];
|
|
1247
|
+
post?: never;
|
|
1119
1248
|
delete?: never;
|
|
1120
1249
|
options?: never;
|
|
1121
1250
|
head?: never;
|
|
1122
1251
|
patch?: never;
|
|
1123
1252
|
trace?: never;
|
|
1124
1253
|
};
|
|
1125
|
-
"/
|
|
1254
|
+
"/delegable-tasks/delegations/{id}/approve": {
|
|
1126
1255
|
parameters: {
|
|
1127
1256
|
query?: never;
|
|
1128
1257
|
header?: never;
|
|
@@ -1131,92 +1260,132 @@ export interface paths {
|
|
|
1131
1260
|
};
|
|
1132
1261
|
get?: never;
|
|
1133
1262
|
put?: never;
|
|
1134
|
-
/**
|
|
1135
|
-
|
|
1263
|
+
/**
|
|
1264
|
+
* El dueño APRUEBA la propuesta: el checkpoint humano del
|
|
1265
|
+
* preview-antes-de-aplicar
|
|
1266
|
+
* @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í.
|
|
1267
|
+
*
|
|
1268
|
+
* Solo sobre una tarea viva con una propuesta en `proposed` o
|
|
1269
|
+
* `needs_changes`; cualquier otra cosa es `404`. Aprobar no aplica nada por
|
|
1270
|
+
* sí mismo: el agente recibe el aviso y aplica su propuesta, y la tarea se
|
|
1271
|
+
* cierra cuando él reporta el resultado. `applied_at` es lo que dice que la
|
|
1272
|
+
* aplicación ocurrió de verdad.
|
|
1273
|
+
*
|
|
1274
|
+
* Opcionalmente se reporta lo que costó verificarla —`human_touch_minutes`
|
|
1275
|
+
* y `verification_outcome` (`pass` si se aprobó tal cual, `edit` si hubo que
|
|
1276
|
+
* corregir)—: es la medida del coste humano de la delegación.
|
|
1277
|
+
*/
|
|
1278
|
+
post: operations["delegableCatalog.approveProposal"];
|
|
1136
1279
|
delete?: never;
|
|
1137
1280
|
options?: never;
|
|
1138
1281
|
head?: never;
|
|
1139
1282
|
patch?: never;
|
|
1140
1283
|
trace?: never;
|
|
1141
1284
|
};
|
|
1142
|
-
"/
|
|
1285
|
+
"/delegable-tasks/delegations/{id}/reject": {
|
|
1143
1286
|
parameters: {
|
|
1144
1287
|
query?: never;
|
|
1145
1288
|
header?: never;
|
|
1146
1289
|
path?: never;
|
|
1147
1290
|
cookie?: never;
|
|
1148
1291
|
};
|
|
1149
|
-
|
|
1150
|
-
get: operations["delivery-notes.index"];
|
|
1292
|
+
get?: never;
|
|
1151
1293
|
put?: never;
|
|
1152
|
-
/**
|
|
1153
|
-
|
|
1294
|
+
/**
|
|
1295
|
+
* El dueño RECHAZA la propuesta: no se aplica nada y la tarea queda fallida
|
|
1296
|
+
* @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í.
|
|
1297
|
+
*
|
|
1298
|
+
* Es terminal, y por eso se separa de «pedir cambios»: no habrá otra
|
|
1299
|
+
* propuesta sobre esta tarea. Admite `reason` —que se guarda como resultado
|
|
1300
|
+
* de la tarea— y los `human_touch_minutes` que costó decidirlo, porque
|
|
1301
|
+
* rechazar también es verificar.
|
|
1302
|
+
*/
|
|
1303
|
+
post: operations["delegableCatalog.rejectProposal"];
|
|
1154
1304
|
delete?: never;
|
|
1155
1305
|
options?: never;
|
|
1156
1306
|
head?: never;
|
|
1157
1307
|
patch?: never;
|
|
1158
1308
|
trace?: never;
|
|
1159
1309
|
};
|
|
1160
|
-
"/
|
|
1161
|
-
parameters: {
|
|
1162
|
-
query?: never;
|
|
1163
|
-
header?: never;
|
|
1164
|
-
path?: never;
|
|
1165
|
-
cookie?: never;
|
|
1166
|
-
};
|
|
1167
|
-
/** Show a single delivery note */
|
|
1168
|
-
get: operations["delivery-notes.show"];
|
|
1169
|
-
/** Update a delivery note */
|
|
1170
|
-
put: operations["delivery-notes.update"];
|
|
1171
|
-
post?: never;
|
|
1172
|
-
/** Delete a delivery note */
|
|
1173
|
-
delete: operations["delivery-notes.destroy"];
|
|
1174
|
-
options?: never;
|
|
1175
|
-
head?: never;
|
|
1176
|
-
patch?: never;
|
|
1177
|
-
trace?: never;
|
|
1178
|
-
};
|
|
1179
|
-
"/employees": {
|
|
1310
|
+
"/delegable-tasks/delegations/{id}/needs-changes": {
|
|
1180
1311
|
parameters: {
|
|
1181
1312
|
query?: never;
|
|
1182
1313
|
header?: never;
|
|
1183
1314
|
path?: never;
|
|
1184
1315
|
cookie?: never;
|
|
1185
1316
|
};
|
|
1186
|
-
get
|
|
1317
|
+
get?: never;
|
|
1187
1318
|
put?: never;
|
|
1188
|
-
|
|
1319
|
+
/**
|
|
1320
|
+
* El dueño PIDE CAMBIOS sobre la propuesta, sin cerrarla
|
|
1321
|
+
* @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í.
|
|
1322
|
+
*
|
|
1323
|
+
* NO es una decisión, y por eso no es terminal: la tarea sigue en curso, el
|
|
1324
|
+
* agente re-arranca, lee el `reason` y vuelve a proponer. Desde aquí se
|
|
1325
|
+
* puede seguir aprobando o rechazando —la propuesta original queda intacta—,
|
|
1326
|
+
* así que pedir cambios no quema el checkpoint: lo mantiene abierto.
|
|
1327
|
+
*/
|
|
1328
|
+
post: operations["delegableCatalog.needsChangesProposal"];
|
|
1189
1329
|
delete?: never;
|
|
1190
1330
|
options?: never;
|
|
1191
1331
|
head?: never;
|
|
1192
1332
|
patch?: never;
|
|
1193
1333
|
trace?: never;
|
|
1194
1334
|
};
|
|
1195
|
-
"/
|
|
1335
|
+
"/delegable-tasks/{task_type}": {
|
|
1196
1336
|
parameters: {
|
|
1197
1337
|
query?: never;
|
|
1198
1338
|
header?: never;
|
|
1199
1339
|
path?: never;
|
|
1200
1340
|
cookie?: never;
|
|
1201
1341
|
};
|
|
1202
|
-
get
|
|
1203
|
-
|
|
1342
|
+
get?: never;
|
|
1343
|
+
/**
|
|
1344
|
+
* Alta o activación de una operación delegable
|
|
1345
|
+
* @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í.
|
|
1346
|
+
*
|
|
1347
|
+
* Sirve para activar una fila existente o para añadir una skill descubierta.
|
|
1348
|
+
* La activación EXIGE verificación viva contra la instancia: si la skill no
|
|
1349
|
+
* está montada, se responde `422` con `verified: false` y el catálogo no se
|
|
1350
|
+
* toca. `201` si la fila se creó, `200` si ya existía.
|
|
1351
|
+
*/
|
|
1352
|
+
put: operations["delegableCatalog.upsert"];
|
|
1204
1353
|
post?: never;
|
|
1205
|
-
|
|
1354
|
+
/**
|
|
1355
|
+
* Desactiva una operación delegable. NO la borra
|
|
1356
|
+
* @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í.
|
|
1357
|
+
*
|
|
1358
|
+
* La fila se conserva —con su verificación— para poder reactivarla rápido;
|
|
1359
|
+
* lo que cambia es `enabled`, y con eso deja de ser delegable. Un tipo que
|
|
1360
|
+
* la instancia hereda y del que este tenant no tiene fila propia se apaga
|
|
1361
|
+
* igual: se crea el apagado local que lo oculta aquí.
|
|
1362
|
+
*/
|
|
1363
|
+
delete: operations["delegableCatalog.disable"];
|
|
1206
1364
|
options?: never;
|
|
1207
1365
|
head?: never;
|
|
1208
1366
|
patch?: never;
|
|
1209
1367
|
trace?: never;
|
|
1210
1368
|
};
|
|
1211
|
-
"/
|
|
1369
|
+
"/delegable-tasks/discover": {
|
|
1212
1370
|
parameters: {
|
|
1213
1371
|
query?: never;
|
|
1214
1372
|
header?: never;
|
|
1215
1373
|
path?: never;
|
|
1216
1374
|
cookie?: never;
|
|
1217
1375
|
};
|
|
1218
|
-
/**
|
|
1219
|
-
|
|
1376
|
+
/**
|
|
1377
|
+
* Lo que el agente de esta instancia sabe hacer, consultado en vivo
|
|
1378
|
+
* @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í.
|
|
1379
|
+
*
|
|
1380
|
+
* Devuelve las skills montadas en la instancia del tenant marcando cuáles
|
|
1381
|
+
* ya están en el catálogo (`in_catalog`) y cuáles están activadas
|
|
1382
|
+
* (`enabled`). Es la lista sobre la que el dueño activa operaciones.
|
|
1383
|
+
*
|
|
1384
|
+
* Llamada SALIENTE y síncrona: `409` si el tenant no tiene instancia y
|
|
1385
|
+
* `502` si no se pudo determinar el inventario (la instancia no responde).
|
|
1386
|
+
* Un 502 aquí no significa «ninguna skill»: significa que no se sabe.
|
|
1387
|
+
*/
|
|
1388
|
+
get: operations["delegableCatalog.discover"];
|
|
1220
1389
|
put?: never;
|
|
1221
1390
|
post?: never;
|
|
1222
1391
|
delete?: never;
|
|
@@ -1225,67 +1394,88 @@ export interface paths {
|
|
|
1225
1394
|
patch?: never;
|
|
1226
1395
|
trace?: never;
|
|
1227
1396
|
};
|
|
1228
|
-
"/
|
|
1397
|
+
"/delegable-tasks/{task_type}/reverify": {
|
|
1229
1398
|
parameters: {
|
|
1230
1399
|
query?: never;
|
|
1231
1400
|
header?: never;
|
|
1232
1401
|
path?: never;
|
|
1233
1402
|
cookie?: never;
|
|
1234
1403
|
};
|
|
1235
|
-
get
|
|
1404
|
+
get?: never;
|
|
1236
1405
|
put?: never;
|
|
1237
|
-
|
|
1406
|
+
/**
|
|
1407
|
+
* Re-comprueba contra la instancia que la skill de una operación sigue
|
|
1408
|
+
* montada
|
|
1409
|
+
* @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í.
|
|
1410
|
+
*
|
|
1411
|
+
* Invariante: activa ⇒ verificada. Si la skill ya no verifica, la operación
|
|
1412
|
+
* se desactiva en la misma llamada, y la respuesta lo dice en `verified`.
|
|
1413
|
+
*/
|
|
1414
|
+
post: operations["delegableCatalog.reverify"];
|
|
1238
1415
|
delete?: never;
|
|
1239
1416
|
options?: never;
|
|
1240
1417
|
head?: never;
|
|
1241
1418
|
patch?: never;
|
|
1242
1419
|
trace?: never;
|
|
1243
1420
|
};
|
|
1244
|
-
"/
|
|
1421
|
+
"/delegable-tasks/execute": {
|
|
1245
1422
|
parameters: {
|
|
1246
1423
|
query?: never;
|
|
1247
1424
|
header?: never;
|
|
1248
1425
|
path?: never;
|
|
1249
1426
|
cookie?: never;
|
|
1250
1427
|
};
|
|
1251
|
-
get
|
|
1252
|
-
put
|
|
1253
|
-
post?: never;
|
|
1428
|
+
get?: never;
|
|
1429
|
+
put?: never;
|
|
1254
1430
|
/**
|
|
1255
|
-
*
|
|
1256
|
-
*
|
|
1257
|
-
*
|
|
1431
|
+
* Ejecución SÍNCRONA de prueba: «Probar» una operación y ver la respuesta
|
|
1432
|
+
* @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í.
|
|
1433
|
+
*
|
|
1434
|
+
* El dueño manda un prompt en vivo al agente de su instancia y recibe lo que
|
|
1435
|
+
* conteste. Es la versión síncrona, para probar; la delegación de verdad es
|
|
1436
|
+
* asíncrona y va por `delegate`.
|
|
1437
|
+
*
|
|
1438
|
+
* Si se indica `task_type`, la operación debe estar ACTIVADA (`422` si no) y
|
|
1439
|
+
* se le pide al agente que use esa skill. Fail-closed: `409` sin instancia y
|
|
1440
|
+
* `502` si no responde.
|
|
1258
1441
|
*/
|
|
1259
|
-
|
|
1442
|
+
post: operations["delegableCatalog.execute"];
|
|
1443
|
+
delete?: never;
|
|
1260
1444
|
options?: never;
|
|
1261
1445
|
head?: never;
|
|
1262
1446
|
patch?: never;
|
|
1263
1447
|
trace?: never;
|
|
1264
1448
|
};
|
|
1265
|
-
"/
|
|
1449
|
+
"/delegable-tasks/delegate": {
|
|
1266
1450
|
parameters: {
|
|
1267
1451
|
query?: never;
|
|
1268
1452
|
header?: never;
|
|
1269
1453
|
path?: never;
|
|
1270
1454
|
cookie?: never;
|
|
1271
1455
|
};
|
|
1456
|
+
get?: never;
|
|
1457
|
+
put?: never;
|
|
1272
1458
|
/**
|
|
1273
|
-
*
|
|
1274
|
-
* @description
|
|
1275
|
-
*
|
|
1276
|
-
*
|
|
1277
|
-
*
|
|
1459
|
+
* Delega una tarea al agente. Asíncrona: se crea y se entrega
|
|
1460
|
+
* @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í.
|
|
1461
|
+
*
|
|
1462
|
+
* La tarea aparece en el Copilot del tenant y el agente la trabaja; el
|
|
1463
|
+
* resultado vuelve después por sus callbacks, así que lo que se consulta
|
|
1464
|
+
* luego es `delegable-tasks/delegations`, no esta respuesta. Si se indica
|
|
1465
|
+
* `task_type`, la operación debe estar ACTIVADA (`422` si no).
|
|
1466
|
+
*
|
|
1467
|
+
* `201` cuando se entregó. Si la instancia no la acepta, la tarea queda
|
|
1468
|
+
* creada y `pending`, y se responde `502` con la tarea en el cuerpo: es una
|
|
1469
|
+
* entrega fallida, no una tarea perdida.
|
|
1278
1470
|
*/
|
|
1279
|
-
|
|
1280
|
-
put?: never;
|
|
1281
|
-
post?: never;
|
|
1471
|
+
post: operations["delegableCatalog.delegate"];
|
|
1282
1472
|
delete?: never;
|
|
1283
1473
|
options?: never;
|
|
1284
1474
|
head?: never;
|
|
1285
1475
|
patch?: never;
|
|
1286
1476
|
trace?: never;
|
|
1287
1477
|
};
|
|
1288
|
-
"/
|
|
1478
|
+
"/delivery-notes/{id}/mark-delivered": {
|
|
1289
1479
|
parameters: {
|
|
1290
1480
|
query?: never;
|
|
1291
1481
|
header?: never;
|
|
@@ -1294,103 +1484,300 @@ export interface paths {
|
|
|
1294
1484
|
};
|
|
1295
1485
|
get?: never;
|
|
1296
1486
|
put?: never;
|
|
1297
|
-
|
|
1487
|
+
/** Mark delivery note as delivered */
|
|
1488
|
+
post: operations["deliveryNotes.markDelivered"];
|
|
1298
1489
|
delete?: never;
|
|
1299
1490
|
options?: never;
|
|
1300
1491
|
head?: never;
|
|
1301
1492
|
patch?: never;
|
|
1302
1493
|
trace?: never;
|
|
1303
1494
|
};
|
|
1304
|
-
"/
|
|
1495
|
+
"/delivery-notes/{id}/convert-to-invoice": {
|
|
1305
1496
|
parameters: {
|
|
1306
1497
|
query?: never;
|
|
1307
1498
|
header?: never;
|
|
1308
1499
|
path?: never;
|
|
1309
1500
|
cookie?: never;
|
|
1310
1501
|
};
|
|
1311
|
-
get
|
|
1502
|
+
get?: never;
|
|
1312
1503
|
put?: never;
|
|
1313
|
-
|
|
1504
|
+
/** Convert delivery note to invoice */
|
|
1505
|
+
post: operations["deliveryNotes.convertToInvoice"];
|
|
1314
1506
|
delete?: never;
|
|
1315
1507
|
options?: never;
|
|
1316
1508
|
head?: never;
|
|
1317
1509
|
patch?: never;
|
|
1318
1510
|
trace?: never;
|
|
1319
1511
|
};
|
|
1320
|
-
"/
|
|
1512
|
+
"/delivery-notes/delete": {
|
|
1321
1513
|
parameters: {
|
|
1322
1514
|
query?: never;
|
|
1323
1515
|
header?: never;
|
|
1324
1516
|
path?: never;
|
|
1325
1517
|
cookie?: never;
|
|
1326
1518
|
};
|
|
1327
|
-
get
|
|
1328
|
-
put
|
|
1329
|
-
|
|
1519
|
+
get?: never;
|
|
1520
|
+
put?: never;
|
|
1521
|
+
/** Delete multiple delivery notes */
|
|
1522
|
+
post: operations["deliveryNotes.deleteMultiple"];
|
|
1330
1523
|
delete?: never;
|
|
1331
1524
|
options?: never;
|
|
1332
1525
|
head?: never;
|
|
1333
1526
|
patch?: never;
|
|
1334
1527
|
trace?: never;
|
|
1335
1528
|
};
|
|
1336
|
-
"/
|
|
1529
|
+
"/delivery-notes": {
|
|
1337
1530
|
parameters: {
|
|
1338
1531
|
query?: never;
|
|
1339
1532
|
header?: never;
|
|
1340
1533
|
path?: never;
|
|
1341
1534
|
cookie?: never;
|
|
1342
1535
|
};
|
|
1343
|
-
/**
|
|
1344
|
-
get: operations["
|
|
1536
|
+
/** List all delivery notes */
|
|
1537
|
+
get: operations["delivery-notes.index"];
|
|
1345
1538
|
put?: never;
|
|
1346
|
-
/** Store a
|
|
1347
|
-
post: operations["
|
|
1539
|
+
/** Store a new delivery note */
|
|
1540
|
+
post: operations["delivery-notes.store"];
|
|
1348
1541
|
delete?: never;
|
|
1349
1542
|
options?: never;
|
|
1350
1543
|
head?: never;
|
|
1351
1544
|
patch?: never;
|
|
1352
1545
|
trace?: never;
|
|
1353
1546
|
};
|
|
1354
|
-
"/
|
|
1547
|
+
"/delivery-notes/{delivery_note}": {
|
|
1355
1548
|
parameters: {
|
|
1356
1549
|
query?: never;
|
|
1357
1550
|
header?: never;
|
|
1358
1551
|
path?: never;
|
|
1359
1552
|
cookie?: never;
|
|
1360
1553
|
};
|
|
1361
|
-
/**
|
|
1362
|
-
get: operations["
|
|
1363
|
-
/** Update
|
|
1364
|
-
put: operations["
|
|
1554
|
+
/** Show a single delivery note */
|
|
1555
|
+
get: operations["delivery-notes.show"];
|
|
1556
|
+
/** Update a delivery note */
|
|
1557
|
+
put: operations["delivery-notes.update"];
|
|
1365
1558
|
post?: never;
|
|
1366
|
-
/**
|
|
1367
|
-
|
|
1368
|
-
* @description Una categoría que todavía tenga gastos NO se borra: la respuesta es un
|
|
1369
|
-
* `422` con `error: expense_attached`. Hay que recategorizar esos gastos
|
|
1370
|
-
* primero. Un identificador que no existe es un `404`.
|
|
1371
|
-
*
|
|
1372
|
-
* Los dos casos van en esta prosa y no en el bloque de respuestas porque el
|
|
1373
|
-
* `@response` de abajo fija el cuerpo del camino bueno —que es lo que el SDK
|
|
1374
|
-
* necesita tipar— y al hacerlo sustituye a lo que el generador dedujera. Sin
|
|
1375
|
-
* él, este `200` se publicaba como un objeto opaco.
|
|
1376
|
-
*/
|
|
1377
|
-
delete: operations["categories.destroy"];
|
|
1559
|
+
/** Delete a delivery note */
|
|
1560
|
+
delete: operations["delivery-notes.destroy"];
|
|
1378
1561
|
options?: never;
|
|
1379
1562
|
head?: never;
|
|
1380
1563
|
patch?: never;
|
|
1381
1564
|
trace?: never;
|
|
1382
1565
|
};
|
|
1383
|
-
"/
|
|
1566
|
+
"/employees": {
|
|
1384
1567
|
parameters: {
|
|
1385
1568
|
query?: never;
|
|
1386
1569
|
header?: never;
|
|
1387
1570
|
path?: never;
|
|
1388
1571
|
cookie?: never;
|
|
1389
1572
|
};
|
|
1390
|
-
get
|
|
1573
|
+
get: operations["employees.index"];
|
|
1391
1574
|
put?: never;
|
|
1392
|
-
|
|
1393
|
-
|
|
1575
|
+
post: operations["employees.store"];
|
|
1576
|
+
delete?: never;
|
|
1577
|
+
options?: never;
|
|
1578
|
+
head?: never;
|
|
1579
|
+
patch?: never;
|
|
1580
|
+
trace?: never;
|
|
1581
|
+
};
|
|
1582
|
+
"/employees/{employee}": {
|
|
1583
|
+
parameters: {
|
|
1584
|
+
query?: never;
|
|
1585
|
+
header?: never;
|
|
1586
|
+
path?: never;
|
|
1587
|
+
cookie?: never;
|
|
1588
|
+
};
|
|
1589
|
+
get: operations["employees.show"];
|
|
1590
|
+
put: operations["employees.update"];
|
|
1591
|
+
post?: never;
|
|
1592
|
+
delete: operations["employees.destroy"];
|
|
1593
|
+
options?: never;
|
|
1594
|
+
head?: never;
|
|
1595
|
+
patch?: never;
|
|
1596
|
+
trace?: never;
|
|
1597
|
+
};
|
|
1598
|
+
"/estimates/pdf/{estimate}": {
|
|
1599
|
+
parameters: {
|
|
1600
|
+
query?: never;
|
|
1601
|
+
header?: never;
|
|
1602
|
+
path?: never;
|
|
1603
|
+
cookie?: never;
|
|
1604
|
+
};
|
|
1605
|
+
/** Handle the incoming request */
|
|
1606
|
+
get: operations["pdf.estimatePdf"];
|
|
1607
|
+
put?: never;
|
|
1608
|
+
post?: never;
|
|
1609
|
+
delete?: never;
|
|
1610
|
+
options?: never;
|
|
1611
|
+
head?: never;
|
|
1612
|
+
patch?: never;
|
|
1613
|
+
trace?: never;
|
|
1614
|
+
};
|
|
1615
|
+
"/estimate-series": {
|
|
1616
|
+
parameters: {
|
|
1617
|
+
query?: never;
|
|
1618
|
+
header?: never;
|
|
1619
|
+
path?: never;
|
|
1620
|
+
cookie?: never;
|
|
1621
|
+
};
|
|
1622
|
+
get: operations["estimate-series.index"];
|
|
1623
|
+
put?: never;
|
|
1624
|
+
post: operations["estimate-series.store"];
|
|
1625
|
+
delete?: never;
|
|
1626
|
+
options?: never;
|
|
1627
|
+
head?: never;
|
|
1628
|
+
patch?: never;
|
|
1629
|
+
trace?: never;
|
|
1630
|
+
};
|
|
1631
|
+
"/estimate-series/{estimateSeries}": {
|
|
1632
|
+
parameters: {
|
|
1633
|
+
query?: never;
|
|
1634
|
+
header?: never;
|
|
1635
|
+
path?: never;
|
|
1636
|
+
cookie?: never;
|
|
1637
|
+
};
|
|
1638
|
+
get: operations["estimate-series.show"];
|
|
1639
|
+
put: operations["estimate-series.update"];
|
|
1640
|
+
post?: never;
|
|
1641
|
+
/**
|
|
1642
|
+
* Baja lógica, nunca borrado: los presupuestos ya numerados con la serie
|
|
1643
|
+
* siguen apuntándola y su `estimates_count` es lo que explica por qué el
|
|
1644
|
+
* contador va por donde va
|
|
1645
|
+
*/
|
|
1646
|
+
delete: operations["estimate-series.destroy"];
|
|
1647
|
+
options?: never;
|
|
1648
|
+
head?: never;
|
|
1649
|
+
patch?: never;
|
|
1650
|
+
trace?: never;
|
|
1651
|
+
};
|
|
1652
|
+
"/estimates/templates": {
|
|
1653
|
+
parameters: {
|
|
1654
|
+
query?: never;
|
|
1655
|
+
header?: never;
|
|
1656
|
+
path?: never;
|
|
1657
|
+
cookie?: never;
|
|
1658
|
+
};
|
|
1659
|
+
/**
|
|
1660
|
+
* Galería de diseños base de presupuesto
|
|
1661
|
+
* @description Un elemento por diseño. `path` es la URL pública de su miniatura (un
|
|
1662
|
+
* recurso estático del producto, igual para todas las instancias y
|
|
1663
|
+
* cacheable), o `''` si el diseño no tiene miniatura. Hasta el #415 venía
|
|
1664
|
+
* incrustada en base64 y la respuesta pesaba más de un megabyte.
|
|
1665
|
+
*/
|
|
1666
|
+
get: operations["estimate.estimateTemplates"];
|
|
1667
|
+
put?: never;
|
|
1668
|
+
post?: never;
|
|
1669
|
+
delete?: never;
|
|
1670
|
+
options?: never;
|
|
1671
|
+
head?: never;
|
|
1672
|
+
patch?: never;
|
|
1673
|
+
trace?: never;
|
|
1674
|
+
};
|
|
1675
|
+
"/estimates/delete": {
|
|
1676
|
+
parameters: {
|
|
1677
|
+
query?: never;
|
|
1678
|
+
header?: never;
|
|
1679
|
+
path?: never;
|
|
1680
|
+
cookie?: never;
|
|
1681
|
+
};
|
|
1682
|
+
get?: never;
|
|
1683
|
+
put?: never;
|
|
1684
|
+
post: operations["estimates.delete"];
|
|
1685
|
+
delete?: never;
|
|
1686
|
+
options?: never;
|
|
1687
|
+
head?: never;
|
|
1688
|
+
patch?: never;
|
|
1689
|
+
trace?: never;
|
|
1690
|
+
};
|
|
1691
|
+
"/estimates": {
|
|
1692
|
+
parameters: {
|
|
1693
|
+
query?: never;
|
|
1694
|
+
header?: never;
|
|
1695
|
+
path?: never;
|
|
1696
|
+
cookie?: never;
|
|
1697
|
+
};
|
|
1698
|
+
get: operations["estimates.index"];
|
|
1699
|
+
put?: never;
|
|
1700
|
+
post: operations["estimates.store"];
|
|
1701
|
+
delete?: never;
|
|
1702
|
+
options?: never;
|
|
1703
|
+
head?: never;
|
|
1704
|
+
patch?: never;
|
|
1705
|
+
trace?: never;
|
|
1706
|
+
};
|
|
1707
|
+
"/estimates/{estimate}": {
|
|
1708
|
+
parameters: {
|
|
1709
|
+
query?: never;
|
|
1710
|
+
header?: never;
|
|
1711
|
+
path?: never;
|
|
1712
|
+
cookie?: never;
|
|
1713
|
+
};
|
|
1714
|
+
get: operations["estimates.show"];
|
|
1715
|
+
put: operations["estimates.update"];
|
|
1716
|
+
post?: never;
|
|
1717
|
+
delete?: never;
|
|
1718
|
+
options?: never;
|
|
1719
|
+
head?: never;
|
|
1720
|
+
patch?: never;
|
|
1721
|
+
trace?: never;
|
|
1722
|
+
};
|
|
1723
|
+
"/categories": {
|
|
1724
|
+
parameters: {
|
|
1725
|
+
query?: never;
|
|
1726
|
+
header?: never;
|
|
1727
|
+
path?: never;
|
|
1728
|
+
cookie?: never;
|
|
1729
|
+
};
|
|
1730
|
+
/** Display a listing of the resource */
|
|
1731
|
+
get: operations["categories.index"];
|
|
1732
|
+
put?: never;
|
|
1733
|
+
/** Store a newly created resource in storage */
|
|
1734
|
+
post: operations["categories.store"];
|
|
1735
|
+
delete?: never;
|
|
1736
|
+
options?: never;
|
|
1737
|
+
head?: never;
|
|
1738
|
+
patch?: never;
|
|
1739
|
+
trace?: never;
|
|
1740
|
+
};
|
|
1741
|
+
"/categories/{category}": {
|
|
1742
|
+
parameters: {
|
|
1743
|
+
query?: never;
|
|
1744
|
+
header?: never;
|
|
1745
|
+
path?: never;
|
|
1746
|
+
cookie?: never;
|
|
1747
|
+
};
|
|
1748
|
+
/** Display the specified resource */
|
|
1749
|
+
get: operations["categories.show"];
|
|
1750
|
+
/** Update the specified resource in storage */
|
|
1751
|
+
put: operations["categories.update"];
|
|
1752
|
+
post?: never;
|
|
1753
|
+
/**
|
|
1754
|
+
* Borra una categoría de gasto
|
|
1755
|
+
* @description Una categoría que todavía tenga gastos NO se borra: la respuesta es un
|
|
1756
|
+
* `422` con `error: expense_attached`. Hay que recategorizar esos gastos
|
|
1757
|
+
* primero. Un identificador que no existe es un `404`.
|
|
1758
|
+
*
|
|
1759
|
+
* Los dos casos van en esta prosa y no en el bloque de respuestas porque el
|
|
1760
|
+
* `@response` de abajo fija el cuerpo del camino bueno —que es lo que el SDK
|
|
1761
|
+
* necesita tipar— y al hacerlo sustituye a lo que el generador dedujera. Sin
|
|
1762
|
+
* él, este `200` se publicaba como un objeto opaco.
|
|
1763
|
+
*/
|
|
1764
|
+
delete: operations["categories.destroy"];
|
|
1765
|
+
options?: never;
|
|
1766
|
+
head?: never;
|
|
1767
|
+
patch?: never;
|
|
1768
|
+
trace?: never;
|
|
1769
|
+
};
|
|
1770
|
+
"/expenses/{expense}/receipt": {
|
|
1771
|
+
parameters: {
|
|
1772
|
+
query?: never;
|
|
1773
|
+
header?: never;
|
|
1774
|
+
path?: never;
|
|
1775
|
+
cookie?: never;
|
|
1776
|
+
};
|
|
1777
|
+
get?: never;
|
|
1778
|
+
put?: never;
|
|
1779
|
+
/**
|
|
1780
|
+
* Sube o reemplaza el justificante de un gasto
|
|
1394
1781
|
* @description Es la mitad que faltaba: hasta aquí, adjuntar un papel a un gasto que ya
|
|
1395
1782
|
* existe **no se podía hacer desde ningún cliente del contrato**. El `PUT`
|
|
1396
1783
|
* lo publicaba como multiparte y no puede cumplirlo (ver `update()`), y el
|
|
@@ -1610,7 +1997,7 @@ export interface paths {
|
|
|
1610
1997
|
patch?: never;
|
|
1611
1998
|
trace?: never;
|
|
1612
1999
|
};
|
|
1613
|
-
"/
|
|
2000
|
+
"/gestoria-link/asesorias": {
|
|
1614
2001
|
parameters: {
|
|
1615
2002
|
query?: never;
|
|
1616
2003
|
header?: never;
|
|
@@ -1618,10 +2005,11 @@ export interface paths {
|
|
|
1618
2005
|
cookie?: never;
|
|
1619
2006
|
};
|
|
1620
2007
|
/**
|
|
1621
|
-
*
|
|
1622
|
-
*
|
|
2008
|
+
* List available advisory firms for tenant users to browse.
|
|
2009
|
+
* Searches across users table AND gestoria_settings (nombre_despacho, nif_despacho, email_despacho)
|
|
2010
|
+
* @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í.
|
|
1623
2011
|
*/
|
|
1624
|
-
get: operations["
|
|
2012
|
+
get: operations["gestoriaLink.asesorias"];
|
|
1625
2013
|
put?: never;
|
|
1626
2014
|
post?: never;
|
|
1627
2015
|
delete?: never;
|
|
@@ -1630,68 +2018,142 @@ export interface paths {
|
|
|
1630
2018
|
patch?: never;
|
|
1631
2019
|
trace?: never;
|
|
1632
2020
|
};
|
|
1633
|
-
"/
|
|
2021
|
+
"/gestoria-link/status": {
|
|
1634
2022
|
parameters: {
|
|
1635
2023
|
query?: never;
|
|
1636
2024
|
header?: never;
|
|
1637
2025
|
path?: never;
|
|
1638
2026
|
cookie?: never;
|
|
1639
2027
|
};
|
|
1640
|
-
/**
|
|
1641
|
-
get: operations["
|
|
2028
|
+
/** @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í. */
|
|
2029
|
+
get: operations["gestoriaLink.status"];
|
|
1642
2030
|
put?: never;
|
|
1643
|
-
|
|
1644
|
-
post: operations["settings.updateCompanySettings"];
|
|
2031
|
+
post?: never;
|
|
1645
2032
|
delete?: never;
|
|
1646
2033
|
options?: never;
|
|
1647
2034
|
head?: never;
|
|
1648
2035
|
patch?: never;
|
|
1649
2036
|
trace?: never;
|
|
1650
2037
|
};
|
|
1651
|
-
"/
|
|
2038
|
+
"/gestoria-link/request": {
|
|
1652
2039
|
parameters: {
|
|
1653
2040
|
query?: never;
|
|
1654
2041
|
header?: never;
|
|
1655
2042
|
path?: never;
|
|
1656
2043
|
cookie?: never;
|
|
1657
2044
|
};
|
|
2045
|
+
get?: never;
|
|
2046
|
+
put?: never;
|
|
1658
2047
|
/**
|
|
1659
|
-
*
|
|
1660
|
-
* @description **
|
|
1661
|
-
*
|
|
1662
|
-
* ⚠️ **Las dos ramas responden `200`.** Cuando hay cambio registrado viene
|
|
1663
|
-
* `exchangeRate`, un array de un solo elemento (así lo consume
|
|
1664
|
-
* `ExchangeRateConverter.vue`); cuando no hay ninguno viene
|
|
1665
|
-
* `error: no_exchange_rate_available` — con `200`, no con `404`. Quien
|
|
1666
|
-
* llame tiene que mirar QUÉ clave llegó, no el código de estado.
|
|
1667
|
-
*
|
|
1668
|
-
* Una moneda que no existe sí es un `404`, y también la empresa sin ajuste
|
|
1669
|
-
* `currency`. Eso va en esta prosa porque el `@response` de abajo sustituye
|
|
1670
|
-
* a lo que el generador dedujera; sin él, este `200` se publicaba como un
|
|
1671
|
-
* objeto opaco.
|
|
2048
|
+
* Request linkage: accepts gestoria_id (select from list) or link_code (manual code)
|
|
2049
|
+
* @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í.
|
|
1672
2050
|
*/
|
|
1673
|
-
|
|
1674
|
-
put?: never;
|
|
1675
|
-
post?: never;
|
|
2051
|
+
post: operations["gestoriaLink.request"];
|
|
1676
2052
|
delete?: never;
|
|
1677
2053
|
options?: never;
|
|
1678
2054
|
head?: never;
|
|
1679
2055
|
patch?: never;
|
|
1680
2056
|
trace?: never;
|
|
1681
2057
|
};
|
|
1682
|
-
"/
|
|
2058
|
+
"/gestoria-link/revoke": {
|
|
1683
2059
|
parameters: {
|
|
1684
2060
|
query?: never;
|
|
1685
2061
|
header?: never;
|
|
1686
2062
|
path?: never;
|
|
1687
2063
|
cookie?: never;
|
|
1688
2064
|
};
|
|
1689
|
-
|
|
1690
|
-
get: operations["settings.getSettings"];
|
|
2065
|
+
get?: never;
|
|
1691
2066
|
put?: never;
|
|
2067
|
+
post?: never;
|
|
2068
|
+
/** @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í. */
|
|
2069
|
+
delete: operations["gestoriaLink.revoke"];
|
|
2070
|
+
options?: never;
|
|
2071
|
+
head?: never;
|
|
2072
|
+
patch?: never;
|
|
2073
|
+
trace?: never;
|
|
2074
|
+
};
|
|
2075
|
+
"/currencies/used": {
|
|
2076
|
+
parameters: {
|
|
2077
|
+
query?: never;
|
|
2078
|
+
header?: never;
|
|
2079
|
+
path?: never;
|
|
2080
|
+
cookie?: never;
|
|
2081
|
+
};
|
|
1692
2082
|
/**
|
|
1693
|
-
*
|
|
1694
|
-
* @description
|
|
2083
|
+
* Handle the incoming request
|
|
2084
|
+
* @description **Catálogo `meta`.** Lectura libre: la alcanza cualquier token válido, sin scope y sin consentimiento adicional del dueño del tenant.
|
|
2085
|
+
*/
|
|
2086
|
+
get: operations["general.getAllUsedCurrencies"];
|
|
2087
|
+
put?: never;
|
|
2088
|
+
post?: never;
|
|
2089
|
+
delete?: never;
|
|
2090
|
+
options?: never;
|
|
2091
|
+
head?: never;
|
|
2092
|
+
patch?: never;
|
|
2093
|
+
trace?: never;
|
|
2094
|
+
};
|
|
2095
|
+
"/company/settings": {
|
|
2096
|
+
parameters: {
|
|
2097
|
+
query?: never;
|
|
2098
|
+
header?: never;
|
|
2099
|
+
path?: never;
|
|
2100
|
+
cookie?: never;
|
|
2101
|
+
};
|
|
2102
|
+
/** Handle the incoming request */
|
|
2103
|
+
get: operations["settings.getCompanySettings"];
|
|
2104
|
+
put?: never;
|
|
2105
|
+
/** Handle the incoming request */
|
|
2106
|
+
post: operations["settings.updateCompanySettings"];
|
|
2107
|
+
delete?: never;
|
|
2108
|
+
options?: never;
|
|
2109
|
+
head?: never;
|
|
2110
|
+
patch?: never;
|
|
2111
|
+
trace?: never;
|
|
2112
|
+
};
|
|
2113
|
+
"/currencies/{currency}/exchange-rate": {
|
|
2114
|
+
parameters: {
|
|
2115
|
+
query?: never;
|
|
2116
|
+
header?: never;
|
|
2117
|
+
path?: never;
|
|
2118
|
+
cookie?: never;
|
|
2119
|
+
};
|
|
2120
|
+
/**
|
|
2121
|
+
* El último tipo de cambio conocido de esta moneda contra la de la empresa
|
|
2122
|
+
* @description **Catálogo `meta`.** Lectura libre: la alcanza cualquier token válido, sin scope y sin consentimiento adicional del dueño del tenant.
|
|
2123
|
+
*
|
|
2124
|
+
* ⚠️ **Las dos ramas responden `200`.** Cuando hay cambio registrado viene
|
|
2125
|
+
* `exchangeRate`, un array de un solo elemento (así lo consume
|
|
2126
|
+
* `ExchangeRateConverter.vue`); cuando no hay ninguno viene
|
|
2127
|
+
* `error: no_exchange_rate_available` — con `200`, no con `404`. Quien
|
|
2128
|
+
* llame tiene que mirar QUÉ clave llegó, no el código de estado.
|
|
2129
|
+
*
|
|
2130
|
+
* Una moneda que no existe sí es un `404`, y también la empresa sin ajuste
|
|
2131
|
+
* `currency`. Eso va en esta prosa porque el `@response` de abajo sustituye
|
|
2132
|
+
* a lo que el generador dedujera; sin él, este `200` se publicaba como un
|
|
2133
|
+
* objeto opaco.
|
|
2134
|
+
*/
|
|
2135
|
+
get: operations["exchangeRate.getExchangeRate"];
|
|
2136
|
+
put?: never;
|
|
2137
|
+
post?: never;
|
|
2138
|
+
delete?: never;
|
|
2139
|
+
options?: never;
|
|
2140
|
+
head?: never;
|
|
2141
|
+
patch?: never;
|
|
2142
|
+
trace?: never;
|
|
2143
|
+
};
|
|
2144
|
+
"/settings": {
|
|
2145
|
+
parameters: {
|
|
2146
|
+
query?: never;
|
|
2147
|
+
header?: never;
|
|
2148
|
+
path?: never;
|
|
2149
|
+
cookie?: never;
|
|
2150
|
+
};
|
|
2151
|
+
/** Handle the incoming request */
|
|
2152
|
+
get: operations["settings.getSettings"];
|
|
2153
|
+
put?: never;
|
|
2154
|
+
/**
|
|
2155
|
+
* Escribe ajustes de la INSTANCIA (no de la empresa)
|
|
2156
|
+
* @description Un token cuyo scope gobierne esta escritura no puede tocar las claves de
|
|
1695
2157
|
* credencial: si el cuerpo trae alguna, la respuesta es un `422` con
|
|
1696
2158
|
* `success: false` y un `message` que las nombra, y **no se escribe
|
|
1697
2159
|
* ninguna** (ver {@see \App\Support\SensitiveSettingKeys}). Ese caso va en
|
|
@@ -2319,7 +2781,12 @@ export interface paths {
|
|
|
2319
2781
|
path?: never;
|
|
2320
2782
|
cookie?: never;
|
|
2321
2783
|
};
|
|
2322
|
-
/**
|
|
2784
|
+
/**
|
|
2785
|
+
* Retrieve a list of existing Items
|
|
2786
|
+
* @description El `@return` de JsonResponse se retira como en el índice de facturas:
|
|
2787
|
+
* nunca fue el tipo real y, con dos returns, dejaba la respuesta sin forma
|
|
2788
|
+
* en el spec.
|
|
2789
|
+
*/
|
|
2323
2790
|
get: operations["items.index"];
|
|
2324
2791
|
put?: never;
|
|
2325
2792
|
/** Create Item */
|
|
@@ -3583,6 +4050,22 @@ export interface paths {
|
|
|
3583
4050
|
patch?: never;
|
|
3584
4051
|
trace?: never;
|
|
3585
4052
|
};
|
|
4053
|
+
"/contracts/{contract}/renew": {
|
|
4054
|
+
parameters: {
|
|
4055
|
+
query?: never;
|
|
4056
|
+
header?: never;
|
|
4057
|
+
path?: never;
|
|
4058
|
+
cookie?: never;
|
|
4059
|
+
};
|
|
4060
|
+
get?: never;
|
|
4061
|
+
put?: never;
|
|
4062
|
+
post: operations["contract.renewContract"];
|
|
4063
|
+
delete?: never;
|
|
4064
|
+
options?: never;
|
|
4065
|
+
head?: never;
|
|
4066
|
+
patch?: never;
|
|
4067
|
+
trace?: never;
|
|
4068
|
+
};
|
|
3586
4069
|
"/roles/{role}/abilities": {
|
|
3587
4070
|
parameters: {
|
|
3588
4071
|
query?: never;
|
|
@@ -3920,6 +4403,54 @@ export interface paths {
|
|
|
3920
4403
|
patch?: never;
|
|
3921
4404
|
trace?: never;
|
|
3922
4405
|
};
|
|
4406
|
+
"/invoices/{invoice}/shared-link": {
|
|
4407
|
+
parameters: {
|
|
4408
|
+
query?: never;
|
|
4409
|
+
header?: never;
|
|
4410
|
+
path?: never;
|
|
4411
|
+
cookie?: never;
|
|
4412
|
+
};
|
|
4413
|
+
get: operations["invoice.sharedLink"];
|
|
4414
|
+
put?: never;
|
|
4415
|
+
post?: never;
|
|
4416
|
+
delete?: never;
|
|
4417
|
+
options?: never;
|
|
4418
|
+
head?: never;
|
|
4419
|
+
patch?: never;
|
|
4420
|
+
trace?: never;
|
|
4421
|
+
};
|
|
4422
|
+
"/contracts/{contract}/shared-link": {
|
|
4423
|
+
parameters: {
|
|
4424
|
+
query?: never;
|
|
4425
|
+
header?: never;
|
|
4426
|
+
path?: never;
|
|
4427
|
+
cookie?: never;
|
|
4428
|
+
};
|
|
4429
|
+
get: operations["contract.sharedLink"];
|
|
4430
|
+
put?: never;
|
|
4431
|
+
post?: never;
|
|
4432
|
+
delete?: never;
|
|
4433
|
+
options?: never;
|
|
4434
|
+
head?: never;
|
|
4435
|
+
patch?: never;
|
|
4436
|
+
trace?: never;
|
|
4437
|
+
};
|
|
4438
|
+
"/estimates/{estimate}/shared-link": {
|
|
4439
|
+
parameters: {
|
|
4440
|
+
query?: never;
|
|
4441
|
+
header?: never;
|
|
4442
|
+
path?: never;
|
|
4443
|
+
cookie?: never;
|
|
4444
|
+
};
|
|
4445
|
+
get: operations["estimate.sharedLink"];
|
|
4446
|
+
put?: never;
|
|
4447
|
+
post?: never;
|
|
4448
|
+
delete?: never;
|
|
4449
|
+
options?: never;
|
|
4450
|
+
head?: never;
|
|
4451
|
+
patch?: never;
|
|
4452
|
+
trace?: never;
|
|
4453
|
+
};
|
|
3923
4454
|
"/expenses/{expense}/show/receipt": {
|
|
3924
4455
|
parameters: {
|
|
3925
4456
|
query?: never;
|
|
@@ -4316,6 +4847,144 @@ export interface paths {
|
|
|
4316
4847
|
patch?: never;
|
|
4317
4848
|
trace?: never;
|
|
4318
4849
|
};
|
|
4850
|
+
"/delegated-tasks": {
|
|
4851
|
+
parameters: {
|
|
4852
|
+
query?: never;
|
|
4853
|
+
header?: never;
|
|
4854
|
+
path?: never;
|
|
4855
|
+
cookie?: never;
|
|
4856
|
+
};
|
|
4857
|
+
/**
|
|
4858
|
+
* El poll del agente: sus tareas delegadas y aún sin resolver
|
|
4859
|
+
* @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í.
|
|
4860
|
+
*
|
|
4861
|
+
* Solo tareas del propio tenant que estén `pending` o `in_progress`. Cada
|
|
4862
|
+
* una viaja con su señal de autonomía —`write_effect`, `default_mode` y
|
|
4863
|
+
* `verifiability_level`—, que es lo que le dice al agente si puede aplicar
|
|
4864
|
+
* directamente o tiene que proponer y esperar aprobación.
|
|
4865
|
+
*/
|
|
4866
|
+
get: operations["tenantDelegationCallback.delegatedIndex"];
|
|
4867
|
+
put?: never;
|
|
4868
|
+
post?: never;
|
|
4869
|
+
delete?: never;
|
|
4870
|
+
options?: never;
|
|
4871
|
+
head?: never;
|
|
4872
|
+
patch?: never;
|
|
4873
|
+
trace?: never;
|
|
4874
|
+
};
|
|
4875
|
+
"/delegated-tasks/{id}/claim": {
|
|
4876
|
+
parameters: {
|
|
4877
|
+
query?: never;
|
|
4878
|
+
header?: never;
|
|
4879
|
+
path?: never;
|
|
4880
|
+
cookie?: never;
|
|
4881
|
+
};
|
|
4882
|
+
get?: never;
|
|
4883
|
+
put?: never;
|
|
4884
|
+
/**
|
|
4885
|
+
* El agente RECLAMA una tarea pendiente y la pone en curso
|
|
4886
|
+
* @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í.
|
|
4887
|
+
*
|
|
4888
|
+
* Idempotente: reclamar una que ya se tenía devuelve la misma tarea sin
|
|
4889
|
+
* efecto. Una ya resuelta no se re-reclama (`409`), y una que no es del
|
|
4890
|
+
* propio tenant no existe (`404`).
|
|
4891
|
+
*/
|
|
4892
|
+
post: operations["tenantDelegationCallback.taskClaim"];
|
|
4893
|
+
delete?: never;
|
|
4894
|
+
options?: never;
|
|
4895
|
+
head?: never;
|
|
4896
|
+
patch?: never;
|
|
4897
|
+
trace?: never;
|
|
4898
|
+
};
|
|
4899
|
+
"/delegated-tasks/{id}/propose": {
|
|
4900
|
+
parameters: {
|
|
4901
|
+
query?: never;
|
|
4902
|
+
header?: never;
|
|
4903
|
+
path?: never;
|
|
4904
|
+
cookie?: never;
|
|
4905
|
+
};
|
|
4906
|
+
get?: never;
|
|
4907
|
+
put?: never;
|
|
4908
|
+
/**
|
|
4909
|
+
* El agente PROPONE un borrador reversible en vez de aplicarlo
|
|
4910
|
+
* @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í.
|
|
4911
|
+
*
|
|
4912
|
+
* Preview-antes-de-aplicar: para lo que muta datos, el agente no escribe —
|
|
4913
|
+
* manda su propuesta (`summary`, `changes[]`, `evals[]`), la tarea sigue en
|
|
4914
|
+
* curso y el dueño decide. Es el checkpoint reversible.
|
|
4915
|
+
*
|
|
4916
|
+
* `409` si la propuesta ya fue aprobada: esa decisión no se pisa con un
|
|
4917
|
+
* re-propose que llega tarde. `422` si la tarea no admite propuesta porque
|
|
4918
|
+
* ya corre en modo autónomo — ahí lo que toca es `complete`.
|
|
4919
|
+
*
|
|
4920
|
+
* El sello de verifiabilidad lo deriva el servidor de los `evals`; el que
|
|
4921
|
+
* venga en el cuerpo se reemplaza.
|
|
4922
|
+
*/
|
|
4923
|
+
post: operations["tenantDelegationCallback.taskPropose"];
|
|
4924
|
+
delete?: never;
|
|
4925
|
+
options?: never;
|
|
4926
|
+
head?: never;
|
|
4927
|
+
patch?: never;
|
|
4928
|
+
trace?: never;
|
|
4929
|
+
};
|
|
4930
|
+
"/delegated-tasks/{id}/complete": {
|
|
4931
|
+
parameters: {
|
|
4932
|
+
query?: never;
|
|
4933
|
+
header?: never;
|
|
4934
|
+
path?: never;
|
|
4935
|
+
cookie?: never;
|
|
4936
|
+
};
|
|
4937
|
+
get?: never;
|
|
4938
|
+
put?: never;
|
|
4939
|
+
/**
|
|
4940
|
+
* El agente reporta la tarea COMPLETADA, con un resultado verificable
|
|
4941
|
+
* @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í.
|
|
4942
|
+
*
|
|
4943
|
+
* Acepta el `result_data` estructurado (preferido) y/o un `result` en prosa;
|
|
4944
|
+
* al menos uno es obligatorio. Idempotente sobre una tarea ya completada.
|
|
4945
|
+
*
|
|
4946
|
+
* Lo que puede cerrarse directo depende del modo: en modo autónomo sí, y en
|
|
4947
|
+
* modo `preview` hace falta una propuesta aprobada — el agente no se salta
|
|
4948
|
+
* su propio checkpoint (`409`, con `code: proposal_required`).
|
|
4949
|
+
*
|
|
4950
|
+
* ⚠️ Reportar «completada» no basta para quedar aplicada. Si la tarea
|
|
4951
|
+
* reclama escrituras, el reporte tiene que traer evidencia —sello `pass`
|
|
4952
|
+
* derivado de los `evals`—: un reporte que declara fallo, o que llega sin
|
|
4953
|
+
* esa evidencia, cierra la tarea como `failed`. `applied_at` afirma que las
|
|
4954
|
+
* escrituras aprobadas ocurrieron, así que no se presume del visto bueno.
|
|
4955
|
+
*/
|
|
4956
|
+
post: operations["tenantDelegationCallback.taskComplete"];
|
|
4957
|
+
delete?: never;
|
|
4958
|
+
options?: never;
|
|
4959
|
+
head?: never;
|
|
4960
|
+
patch?: never;
|
|
4961
|
+
trace?: never;
|
|
4962
|
+
};
|
|
4963
|
+
"/delegated-tasks/{id}/fail": {
|
|
4964
|
+
parameters: {
|
|
4965
|
+
query?: never;
|
|
4966
|
+
header?: never;
|
|
4967
|
+
path?: never;
|
|
4968
|
+
cookie?: never;
|
|
4969
|
+
};
|
|
4970
|
+
get?: never;
|
|
4971
|
+
put?: never;
|
|
4972
|
+
/**
|
|
4973
|
+
* El agente reporta la tarea FALLIDA
|
|
4974
|
+
* @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í.
|
|
4975
|
+
*
|
|
4976
|
+
* Igual que al completar, hace falta al menos `result` (prosa) o
|
|
4977
|
+
* `result_data` (estructurado): una tarea fallida también lleva su sello
|
|
4978
|
+
* derivado por el servidor, para que el panel pinte los `evals` honestos y
|
|
4979
|
+
* no lo que el agente diga de sí mismo.
|
|
4980
|
+
*/
|
|
4981
|
+
post: operations["tenantDelegationCallback.taskFail"];
|
|
4982
|
+
delete?: never;
|
|
4983
|
+
options?: never;
|
|
4984
|
+
head?: never;
|
|
4985
|
+
patch?: never;
|
|
4986
|
+
trace?: never;
|
|
4987
|
+
};
|
|
4319
4988
|
"/tenant-modules": {
|
|
4320
4989
|
parameters: {
|
|
4321
4990
|
query?: never;
|
|
@@ -4895,23 +5564,54 @@ export interface paths {
|
|
|
4895
5564
|
patch?: never;
|
|
4896
5565
|
trace?: never;
|
|
4897
5566
|
};
|
|
4898
|
-
"/settings/
|
|
5567
|
+
"/settings/verifactu": {
|
|
4899
5568
|
parameters: {
|
|
4900
5569
|
query?: never;
|
|
4901
5570
|
header?: never;
|
|
4902
5571
|
path?: never;
|
|
4903
5572
|
cookie?: never;
|
|
4904
5573
|
};
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
5574
|
+
/**
|
|
5575
|
+
* Get the current VeriFactu configuration (taxpayer data)
|
|
5576
|
+
* @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í.
|
|
5577
|
+
*
|
|
5578
|
+
* LEE Y NADA MÁS. Hasta 2026-08-22 este GET creaba el contribuyente en
|
|
5579
|
+
* VeriFactu si no existía: `resolveTaxpayer` intentaba SIEMPRE el
|
|
5580
|
+
* `createTaxpayer` y además escribía `verifactu_taxpayer_id` en el tenant.
|
|
5581
|
+
* O sea que abrir la pantalla de ajustes daba de alta a la empresa ante un
|
|
5582
|
+
* tercero, y un `GET` repetido por un monitor o un prefetch la daba de alta
|
|
5583
|
+
* sola. Un GET que registra a la empresa en la AEAT no es una lectura.
|
|
5584
|
+
*
|
|
5585
|
+
* Quien quiera crearlo lo pide explícitamente: `PUT /settings/verifactu`
|
|
5586
|
+
* (guardar la configuración, que es lo que hace el panel) o el
|
|
5587
|
+
* `POST /settings/verifactu/taxpayer` de abajo. Mientras no exista, esto
|
|
5588
|
+
* devuelve el payload vacío, que ya distingue el caso con
|
|
5589
|
+
* `authorization_status = 'none'`.
|
|
5590
|
+
*/
|
|
5591
|
+
get: operations["veriFactuSettings.index"];
|
|
5592
|
+
/**
|
|
5593
|
+
* Update VeriFactu settings (environment, representative mode)
|
|
5594
|
+
* @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í.
|
|
5595
|
+
*
|
|
5596
|
+
* Si hay taxpayer en VeriFactu, actualiza via API. Si el tenant aún no
|
|
5597
|
+
* tiene credencial, o faltan los datos para crear el contribuyente, guarda
|
|
5598
|
+
* en local para cuando se configure — ese es el único caso en que «guardado
|
|
5599
|
+
* localmente» es verdad y no un fallo disfrazado.
|
|
5600
|
+
*
|
|
5601
|
+
* Hasta 2026-08-27 CUALQUIER excepción caía al guardado local y contestaba
|
|
5602
|
+
* 200 «Configuración guardada localmente»: con VeriFactu caído, el
|
|
5603
|
+
* formulario decía «guardado» sobre un `is_production` que no llegó a donde
|
|
5604
|
+
* importa. Ahora un fallo de la API remota contesta 502 con el error.
|
|
5605
|
+
*/
|
|
5606
|
+
put: operations["veriFactuSettings.update"];
|
|
5607
|
+
post?: never;
|
|
4908
5608
|
delete?: never;
|
|
4909
5609
|
options?: never;
|
|
4910
5610
|
head?: never;
|
|
4911
5611
|
patch?: never;
|
|
4912
5612
|
trace?: never;
|
|
4913
5613
|
};
|
|
4914
|
-
"/settings/
|
|
5614
|
+
"/settings/verifactu/taxpayer": {
|
|
4915
5615
|
parameters: {
|
|
4916
5616
|
query?: never;
|
|
4917
5617
|
header?: never;
|
|
@@ -4920,43 +5620,104 @@ export interface paths {
|
|
|
4920
5620
|
};
|
|
4921
5621
|
get?: never;
|
|
4922
5622
|
put?: never;
|
|
4923
|
-
|
|
4924
|
-
|
|
5623
|
+
/**
|
|
5624
|
+
* Alta explícita del contribuyente en VeriFactu
|
|
5625
|
+
* @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í.
|
|
5626
|
+
*
|
|
5627
|
+
* Es el POST que se lleva el efecto que tenía el GET. Si ya existe, lo
|
|
5628
|
+
* devuelve sin crear nada (idempotente); si faltan el NIF o el nombre de la
|
|
5629
|
+
* empresa responde 422 diciéndolo, en vez de dejar un aviso en el log y
|
|
5630
|
+
* devolver un payload vacío que no explica por qué está vacío.
|
|
5631
|
+
*/
|
|
5632
|
+
post: operations["veriFactuSettings.storeTaxpayer"];
|
|
5633
|
+
delete?: never;
|
|
4925
5634
|
options?: never;
|
|
4926
5635
|
head?: never;
|
|
4927
5636
|
patch?: never;
|
|
4928
5637
|
trace?: never;
|
|
4929
5638
|
};
|
|
4930
|
-
"/settings/
|
|
5639
|
+
"/settings/verifactu/certificate": {
|
|
4931
5640
|
parameters: {
|
|
4932
5641
|
query?: never;
|
|
4933
5642
|
header?: never;
|
|
4934
5643
|
path?: never;
|
|
4935
5644
|
cookie?: never;
|
|
4936
5645
|
};
|
|
4937
|
-
get
|
|
5646
|
+
get?: never;
|
|
4938
5647
|
put?: never;
|
|
4939
|
-
|
|
5648
|
+
/**
|
|
5649
|
+
* Upload a .pfx/.p12 certificate to VeriFactu
|
|
5650
|
+
* @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í.
|
|
5651
|
+
*/
|
|
5652
|
+
post: operations["veriFactuSettings.uploadCertificate"];
|
|
4940
5653
|
delete?: never;
|
|
4941
5654
|
options?: never;
|
|
4942
5655
|
head?: never;
|
|
4943
5656
|
patch?: never;
|
|
4944
5657
|
trace?: never;
|
|
4945
5658
|
};
|
|
4946
|
-
"/settings/webhooks
|
|
5659
|
+
"/settings/webhooks": {
|
|
4947
5660
|
parameters: {
|
|
4948
5661
|
query?: never;
|
|
4949
5662
|
header?: never;
|
|
4950
5663
|
path?: never;
|
|
4951
5664
|
cookie?: never;
|
|
4952
5665
|
};
|
|
4953
|
-
get
|
|
5666
|
+
get: operations["webhookEndpoints.index"];
|
|
4954
5667
|
put?: never;
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
5668
|
+
post: operations["webhookEndpoints.store"];
|
|
5669
|
+
delete?: never;
|
|
5670
|
+
options?: never;
|
|
5671
|
+
head?: never;
|
|
5672
|
+
patch?: never;
|
|
5673
|
+
trace?: never;
|
|
5674
|
+
};
|
|
5675
|
+
"/settings/webhooks/{id}": {
|
|
5676
|
+
parameters: {
|
|
5677
|
+
query?: never;
|
|
5678
|
+
header?: never;
|
|
5679
|
+
path?: never;
|
|
5680
|
+
cookie?: never;
|
|
5681
|
+
};
|
|
5682
|
+
get?: never;
|
|
5683
|
+
put?: never;
|
|
5684
|
+
post?: never;
|
|
5685
|
+
delete: operations["webhookEndpoints.destroy"];
|
|
5686
|
+
options?: never;
|
|
5687
|
+
head?: never;
|
|
5688
|
+
patch?: never;
|
|
5689
|
+
trace?: never;
|
|
5690
|
+
};
|
|
5691
|
+
"/settings/webhooks/{id}/deliveries": {
|
|
5692
|
+
parameters: {
|
|
5693
|
+
query?: never;
|
|
5694
|
+
header?: never;
|
|
5695
|
+
path?: never;
|
|
5696
|
+
cookie?: never;
|
|
5697
|
+
};
|
|
5698
|
+
get: operations["webhookEndpoints.deliveries"];
|
|
5699
|
+
put?: never;
|
|
5700
|
+
post?: never;
|
|
5701
|
+
delete?: never;
|
|
5702
|
+
options?: never;
|
|
5703
|
+
head?: never;
|
|
5704
|
+
patch?: never;
|
|
5705
|
+
trace?: never;
|
|
5706
|
+
};
|
|
5707
|
+
"/settings/webhooks/deliveries/{id}/replay": {
|
|
5708
|
+
parameters: {
|
|
5709
|
+
query?: never;
|
|
5710
|
+
header?: never;
|
|
5711
|
+
path?: never;
|
|
5712
|
+
cookie?: never;
|
|
5713
|
+
};
|
|
5714
|
+
get?: never;
|
|
5715
|
+
put?: never;
|
|
5716
|
+
/**
|
|
5717
|
+
* Re-encola una entrega dead|failed dentro de la ventana de replay. La
|
|
5718
|
+
* fila vuelve a pending con los contadores a cero (conserva su id → el
|
|
5719
|
+
* receptor la deduplica por X-Pimia-Delivery si ya la procesó)
|
|
5720
|
+
*/
|
|
4960
5721
|
post: operations["webhookEndpoints.replay"];
|
|
4961
5722
|
delete?: never;
|
|
4962
5723
|
options?: never;
|
|
@@ -5123,6 +5884,23 @@ export interface components {
|
|
|
5123
5884
|
name: string;
|
|
5124
5885
|
} | null;
|
|
5125
5886
|
};
|
|
5887
|
+
/**
|
|
5888
|
+
* ActivateContractRequest
|
|
5889
|
+
* @description Activación de un contrato (`POST /contracts/{contract}/activate`).
|
|
5890
|
+
*
|
|
5891
|
+
* Sin cuerpo, el contrato CREA su recurrente gobernada; con
|
|
5892
|
+
* `recurring_invoice_id`, ADOPTA esa — heredándole los límites del periodo
|
|
5893
|
+
* pero sin pisar su frecuencia, sus líneas ni sus impuestos, que son
|
|
5894
|
+
* configuración humana (Contract::activate()).
|
|
5895
|
+
*
|
|
5896
|
+
* El `exists` va acotado por empresa por la misma lección de siempre (#395):
|
|
5897
|
+
* dentro de una instancia conviven varias empresas, y el id a secas casaría
|
|
5898
|
+
* la recurrente de otra. El modelo lo re-comprueba (empresa Y cliente), pero
|
|
5899
|
+
* el 422 de aquí llega antes y dice qué falla.
|
|
5900
|
+
*/
|
|
5901
|
+
ActivateContractRequest: {
|
|
5902
|
+
recurring_invoice_id?: number | null;
|
|
5903
|
+
};
|
|
5126
5904
|
/** AddressResource */
|
|
5127
5905
|
AddressResource: {
|
|
5128
5906
|
id: number;
|
|
@@ -5368,6 +6146,102 @@ export interface components {
|
|
|
5368
6146
|
/** Format: date-time */
|
|
5369
6147
|
updated_at: string | null;
|
|
5370
6148
|
};
|
|
6149
|
+
/**
|
|
6150
|
+
* ContractRequest
|
|
6151
|
+
* @description Alta y edición de un contrato (`POST /contracts`, `PUT /contracts/{id}`).
|
|
6152
|
+
*
|
|
6153
|
+
* Dos decisiones que no son costumbre sino contrato (#583):
|
|
6154
|
+
*
|
|
6155
|
+
* - **`status` NO se acepta aquí.** El ciclo de vida va por sus acciones
|
|
6156
|
+
* (`activate`/`cancel`/`renew`), que son las que gobiernan las recurrentes;
|
|
6157
|
+
* aceptar `status` en el PUT sería un contrato ACTIVE sin recurrente o
|
|
6158
|
+
* CANCELLED sin pausar nada — el estado mentiría. La lista blanca del
|
|
6159
|
+
* payload son estas reglas (ContractFields), así que no declararlo ya es
|
|
6160
|
+
* excluirlo.
|
|
6161
|
+
* - **Los cerrados llevan `Rule::in`**, y no solo por validar: el generador
|
|
6162
|
+
* del spec deduce el enum de la regla, y el estudio dejó medido lo que pasa
|
|
6163
|
+
* cuando no se hace — `frequency`/`status`/`limit_by` de la recurrente son
|
|
6164
|
+
* `string` sin enum en el contrato público y el SDK hereda esa opacidad.
|
|
6165
|
+
*/
|
|
6166
|
+
ContractRequest: {
|
|
6167
|
+
title: string;
|
|
6168
|
+
description?: string | null;
|
|
6169
|
+
contract_number?: string | null;
|
|
6170
|
+
customer_id: number;
|
|
6171
|
+
/** Format: date-time */
|
|
6172
|
+
starts_at: string;
|
|
6173
|
+
/**
|
|
6174
|
+
* Format: date-time
|
|
6175
|
+
* @description Nullable = contrato indefinido: la recurrente gobernada hereda
|
|
6176
|
+
* `limit_by = NONE`.
|
|
6177
|
+
*/
|
|
6178
|
+
ends_at?: string | null;
|
|
6179
|
+
/**
|
|
6180
|
+
* @description Céntimos, enteros — la convención monetaria de la casa. El tope
|
|
6181
|
+
* es el mismo que el de `total` en documentos.
|
|
6182
|
+
*/
|
|
6183
|
+
amount: number;
|
|
6184
|
+
currency_id?: number | null;
|
|
6185
|
+
/** @enum {string} */
|
|
6186
|
+
billing_every: "MONTHLY" | "QUARTERLY" | "SEMIANNUAL" | "ANNUAL";
|
|
6187
|
+
/**
|
|
6188
|
+
* @description 1..31 y no 1..28: el 29-31 es entrada legítima («factúrame a fin
|
|
6189
|
+
* de mes») que la compilación fija al 28 — rechazarla aquí obligaría
|
|
6190
|
+
* al cliente a conocer una limitación de cron que es nuestra.
|
|
6191
|
+
*/
|
|
6192
|
+
billing_anchor_day?: number | null;
|
|
6193
|
+
/** @enum {string|null} */
|
|
6194
|
+
renewal_mode?: "NONE" | "MANUAL" | "TACIT" | null;
|
|
6195
|
+
/**
|
|
6196
|
+
* @description Nullable = «usa el default del catálogo regional» (#584). El tope
|
|
6197
|
+
* corta los disparates sin opinar sobre ninguna legislación.
|
|
6198
|
+
*/
|
|
6199
|
+
notice_days?: number | null;
|
|
6200
|
+
/**
|
|
6201
|
+
* @description El presupuesto de origen, acotado por empresa — la lección del
|
|
6202
|
+
* `item_id` de las recurrentes (#395): sin el `where`, un contrato
|
|
6203
|
+
* podía quedar apuntando al presupuesto de OTRA empresa del tenant.
|
|
6204
|
+
*/
|
|
6205
|
+
estimate_id?: number | null;
|
|
6206
|
+
};
|
|
6207
|
+
/** ContractResource */
|
|
6208
|
+
ContractResource: {
|
|
6209
|
+
id: number;
|
|
6210
|
+
title: string;
|
|
6211
|
+
description: string | null;
|
|
6212
|
+
contract_number: string | null;
|
|
6213
|
+
customer_id: number | null;
|
|
6214
|
+
company_id: number | null;
|
|
6215
|
+
creator_id: number | null;
|
|
6216
|
+
currency_id: number | null;
|
|
6217
|
+
status: string;
|
|
6218
|
+
ha_vencido: boolean;
|
|
6219
|
+
starts_at: string | null;
|
|
6220
|
+
ends_at: string | null;
|
|
6221
|
+
amount: number | null;
|
|
6222
|
+
billing_every: string;
|
|
6223
|
+
billing_anchor_day: number | null;
|
|
6224
|
+
renewal_mode: string;
|
|
6225
|
+
notice_days: number | null;
|
|
6226
|
+
/**
|
|
6227
|
+
* @description El efectivo: el del contrato o el default del catálogo regional
|
|
6228
|
+
* (config/contracts.php). La pantalla enseña este, no el crudo.
|
|
6229
|
+
*/
|
|
6230
|
+
notice_days_effective: number;
|
|
6231
|
+
/**
|
|
6232
|
+
* @description ¿Hay firmado adjunto? El fichero se sube por su POST multiparte
|
|
6233
|
+
* dedicado (#584) y se pisa al resubir.
|
|
6234
|
+
*/
|
|
6235
|
+
has_document: boolean;
|
|
6236
|
+
estimate_id: number | null;
|
|
6237
|
+
/** Format: date-time */
|
|
6238
|
+
cancelled_at: string | null;
|
|
6239
|
+
fields?: components["schemas"]["CustomFieldValueResource"][];
|
|
6240
|
+
customer?: components["schemas"]["CustomerResource"] | null;
|
|
6241
|
+
estimate?: components["schemas"]["EstimateResource"] | null;
|
|
6242
|
+
recurring_invoices?: components["schemas"]["RecurringInvoiceResource"][];
|
|
6243
|
+
invoices?: components["schemas"]["InvoiceResource"][];
|
|
6244
|
+
};
|
|
5371
6245
|
/**
|
|
5372
6246
|
* ConvertEstimateRequest
|
|
5373
6247
|
* @description Cuerpo —opcional— de la conversión de un presupuesto en factura.
|
|
@@ -5710,6 +6584,19 @@ export interface components {
|
|
|
5710
6584
|
*/
|
|
5711
6585
|
external_ref: string | null;
|
|
5712
6586
|
};
|
|
6587
|
+
/**
|
|
6588
|
+
* DeleteContractsRequest
|
|
6589
|
+
* @description Borrado múltiple de contratos (`POST /contracts/delete`). Mismo patrón que
|
|
6590
|
+
* DeleteRecurringInvoicesRequest: el `exists` convierte el id inexistente en
|
|
6591
|
+
* un 422 que dice cuál falla, en vez del 500 de iterar sobre un `find()` nulo.
|
|
6592
|
+
*
|
|
6593
|
+
* Lo que NO valida esto: que cada contrato esté en borrador. Esa es la regla
|
|
6594
|
+
* de negocio (decisión 8: lo activo se cancela, no se borra) y vive en
|
|
6595
|
+
* `Contract::deleteContracts()`, que aborta el lote entero en voz alta.
|
|
6596
|
+
*/
|
|
6597
|
+
DeleteContractsRequest: {
|
|
6598
|
+
ids: number[];
|
|
6599
|
+
};
|
|
5713
6600
|
/** DeleteCustomersRequest */
|
|
5714
6601
|
DeleteCustomersRequest: {
|
|
5715
6602
|
ids: number[];
|
|
@@ -6495,6 +7382,7 @@ export interface components {
|
|
|
6495
7382
|
sent_at: string | null;
|
|
6496
7383
|
/** Format: date-time */
|
|
6497
7384
|
viewed_at: string | null;
|
|
7385
|
+
contract_id: number | null;
|
|
6498
7386
|
};
|
|
6499
7387
|
/** InvoiceItem */
|
|
6500
7388
|
InvoiceItem: {
|
|
@@ -7033,6 +7921,54 @@ export interface components {
|
|
|
7033
7921
|
taxes?: components["schemas"]["TaxResource"][];
|
|
7034
7922
|
currency?: components["schemas"]["CurrencyResource"] | null;
|
|
7035
7923
|
};
|
|
7924
|
+
/** ItemSummaryResource */
|
|
7925
|
+
ItemSummaryResource: {
|
|
7926
|
+
id: number;
|
|
7927
|
+
name: string;
|
|
7928
|
+
item_type: string;
|
|
7929
|
+
sku: string | null;
|
|
7930
|
+
supplier_reference: string | null;
|
|
7931
|
+
description: string | null;
|
|
7932
|
+
price: number;
|
|
7933
|
+
purchase_price: number | null;
|
|
7934
|
+
default_discount: number;
|
|
7935
|
+
category_id: number | null;
|
|
7936
|
+
category?: {
|
|
7937
|
+
id: number;
|
|
7938
|
+
name: string;
|
|
7939
|
+
};
|
|
7940
|
+
unit_id: number | null;
|
|
7941
|
+
/**
|
|
7942
|
+
* @description Del `leftJoin` del índice, no de la relación: es el único dato de
|
|
7943
|
+
* la unidad que los listados pintan.
|
|
7944
|
+
*/
|
|
7945
|
+
unit_name: string | null;
|
|
7946
|
+
company_id: number | null;
|
|
7947
|
+
currency_id: number | null;
|
|
7948
|
+
tax_per_item: string;
|
|
7949
|
+
purchase_tax_type_id: number | null;
|
|
7950
|
+
is_active: boolean;
|
|
7951
|
+
is_time_trackable: boolean;
|
|
7952
|
+
opening_stock: number;
|
|
7953
|
+
stock_alert_qty: number | null;
|
|
7954
|
+
allow_sale_without_stock: boolean;
|
|
7955
|
+
/** Format: date-time */
|
|
7956
|
+
created_at: string | null;
|
|
7957
|
+
/** Format: date-time */
|
|
7958
|
+
updated_at: string | null;
|
|
7959
|
+
taxes?: {
|
|
7960
|
+
id: number;
|
|
7961
|
+
tax_type_id: number | null;
|
|
7962
|
+
item_id: number | null;
|
|
7963
|
+
company_id: number | null;
|
|
7964
|
+
name: string;
|
|
7965
|
+
amount: number;
|
|
7966
|
+
percent: number;
|
|
7967
|
+
base_amount: number;
|
|
7968
|
+
currency_id: number | null;
|
|
7969
|
+
type: string | null;
|
|
7970
|
+
}[];
|
|
7971
|
+
};
|
|
7036
7972
|
/** ItemsRequest */
|
|
7037
7973
|
ItemsRequest: {
|
|
7038
7974
|
name: string;
|
|
@@ -7763,6 +8699,18 @@ export interface components {
|
|
|
7763
8699
|
creator?: components["schemas"]["UserResource"] | null;
|
|
7764
8700
|
currency?: components["schemas"]["CurrencyResource"] | null;
|
|
7765
8701
|
};
|
|
8702
|
+
/**
|
|
8703
|
+
* RenewContractRequest
|
|
8704
|
+
* @description Renovación manual de un contrato (`POST /contracts/{contract}/renew`).
|
|
8705
|
+
*
|
|
8706
|
+
* Solo la fecha nueva: que sea POSTERIOR al fin actual —renovar es extender—
|
|
8707
|
+
* lo comprueba `Contract::renew()`, porque depende del estado del contrato y
|
|
8708
|
+
* no del cuerpo. La renovación tácita no pasa por aquí: es el job de fase 2.
|
|
8709
|
+
*/
|
|
8710
|
+
RenewContractRequest: {
|
|
8711
|
+
/** Format: date-time */
|
|
8712
|
+
ends_at: string;
|
|
8713
|
+
};
|
|
7766
8714
|
/** Role */
|
|
7767
8715
|
Role: {
|
|
7768
8716
|
id: number;
|
|
@@ -7803,7 +8751,7 @@ export interface components {
|
|
|
7803
8751
|
* ningún permiso es una operación legítima, y `required` la
|
|
7804
8752
|
* prohibiría (un array vacío no pasa `required`).
|
|
7805
8753
|
*/
|
|
7806
|
-
abilities: ("dashboard" | "view-customer" | "create-customer" | "edit-customer" | "delete-customer" | "view-estimate" | "create-estimate" | "edit-estimate" | "delete-estimate" | "send-estimate" | "view-invoice" | "create-invoice" | "edit-invoice" | "delete-invoice" | "send-invoice" | "view-recurring-invoice" | "create-recurring-invoice" | "edit-recurring-invoice" | "delete-recurring-invoice" | "view-payment" | "create-payment" | "edit-payment" | "delete-payment" | "send-payment" | "view-expense" | "create-expense" | "edit-expense" | "delete-expense" | "view-delivery-note" | "create-delivery-note" | "edit-delivery-note" | "delete-delivery-note" | "view-item" | "create-item" | "edit-item" | "delete-item" | "view-lead" | "create-lead" | "edit-lead" | "delete-lead" | "convert-lead" | "view-contact" | "create-contact" | "edit-contact" | "delete-contact" | "view-project" | "create-project" | "edit-project" | "delete-project" | "view-task" | "create-task" | "edit-task" | "delete-task" | "view-own-task" | "edit-own-task" | "view-time-entry" | "create-time-entry" | "edit-time-entry" | "delete-time-entry" | "view-own-time-entry" | "create-own-time-entry" | "edit-own-time-entry" | "delete-own-time-entry" | "view-tax-type" | "create-tax-type" | "edit-tax-type" | "delete-tax-type" | "view-custom-field" | "create-custom-field" | "edit-custom-field" | "delete-custom-field" | "view-role" | "create-role" | "edit-role" | "delete-role" | "view-financial-reports" | "view-all-notes" | "manage-all-notes" | "time_clock.punch" | "time_clock.view_own" | "time_clock.view_team" | "time_clock.correct" | "absence.request" | "absence.approve" | "report.download_legal" | "view-employee" | "create-employee" | "edit-employee" | "delete-employee" | "view-work-schedule" | "manage-work-schedule" | "view-work-calendar" | "manage-work-calendar" | "pos.operate" | "pos.supervise" | "pos.void" | "pos.discount_high" | "pos.cash_movement" | "pos.return" | "pos.admin" | "pos.report" | "view-appointment" | "create-appointment" | "edit-appointment" | "delete-appointment")[];
|
|
8754
|
+
abilities: ("dashboard" | "view-customer" | "create-customer" | "edit-customer" | "delete-customer" | "view-estimate" | "create-estimate" | "edit-estimate" | "delete-estimate" | "send-estimate" | "view-invoice" | "create-invoice" | "edit-invoice" | "delete-invoice" | "send-invoice" | "view-recurring-invoice" | "create-recurring-invoice" | "edit-recurring-invoice" | "delete-recurring-invoice" | "view-payment" | "create-payment" | "edit-payment" | "delete-payment" | "send-payment" | "view-expense" | "create-expense" | "edit-expense" | "delete-expense" | "view-delivery-note" | "create-delivery-note" | "edit-delivery-note" | "delete-delivery-note" | "view-item" | "create-item" | "edit-item" | "delete-item" | "view-lead" | "create-lead" | "edit-lead" | "delete-lead" | "convert-lead" | "view-contact" | "create-contact" | "edit-contact" | "delete-contact" | "view-project" | "create-project" | "edit-project" | "delete-project" | "view-task" | "create-task" | "edit-task" | "delete-task" | "view-own-task" | "edit-own-task" | "view-time-entry" | "create-time-entry" | "edit-time-entry" | "delete-time-entry" | "view-own-time-entry" | "create-own-time-entry" | "edit-own-time-entry" | "delete-own-time-entry" | "view-tax-type" | "create-tax-type" | "edit-tax-type" | "delete-tax-type" | "view-custom-field" | "create-custom-field" | "edit-custom-field" | "delete-custom-field" | "view-role" | "create-role" | "edit-role" | "delete-role" | "view-financial-reports" | "view-all-notes" | "manage-all-notes" | "time_clock.punch" | "time_clock.view_own" | "time_clock.view_team" | "time_clock.correct" | "absence.request" | "absence.approve" | "report.download_legal" | "view-employee" | "create-employee" | "edit-employee" | "delete-employee" | "view-work-schedule" | "manage-work-schedule" | "view-work-calendar" | "manage-work-calendar" | "pos.operate" | "pos.supervise" | "pos.void" | "pos.discount_high" | "pos.cash_movement" | "pos.return" | "pos.admin" | "pos.report" | "view-appointment" | "create-appointment" | "edit-appointment" | "delete-appointment" | "view-contract" | "create-contract" | "edit-contract" | "delete-contract")[];
|
|
7807
8755
|
};
|
|
7808
8756
|
/**
|
|
7809
8757
|
* RoleRequest
|
|
@@ -7828,7 +8776,7 @@ export interface components {
|
|
|
7828
8776
|
name: string;
|
|
7829
8777
|
abilities?: {
|
|
7830
8778
|
/** @enum {string} */
|
|
7831
|
-
ability: "dashboard" | "view-customer" | "create-customer" | "edit-customer" | "delete-customer" | "view-estimate" | "create-estimate" | "edit-estimate" | "delete-estimate" | "send-estimate" | "view-invoice" | "create-invoice" | "edit-invoice" | "delete-invoice" | "send-invoice" | "view-recurring-invoice" | "create-recurring-invoice" | "edit-recurring-invoice" | "delete-recurring-invoice" | "view-payment" | "create-payment" | "edit-payment" | "delete-payment" | "send-payment" | "view-expense" | "create-expense" | "edit-expense" | "delete-expense" | "view-delivery-note" | "create-delivery-note" | "edit-delivery-note" | "delete-delivery-note" | "view-item" | "create-item" | "edit-item" | "delete-item" | "view-lead" | "create-lead" | "edit-lead" | "delete-lead" | "convert-lead" | "view-contact" | "create-contact" | "edit-contact" | "delete-contact" | "view-project" | "create-project" | "edit-project" | "delete-project" | "view-task" | "create-task" | "edit-task" | "delete-task" | "view-own-task" | "edit-own-task" | "view-time-entry" | "create-time-entry" | "edit-time-entry" | "delete-time-entry" | "view-own-time-entry" | "create-own-time-entry" | "edit-own-time-entry" | "delete-own-time-entry" | "view-tax-type" | "create-tax-type" | "edit-tax-type" | "delete-tax-type" | "view-custom-field" | "create-custom-field" | "edit-custom-field" | "delete-custom-field" | "view-role" | "create-role" | "edit-role" | "delete-role" | "view-financial-reports" | "view-all-notes" | "manage-all-notes" | "time_clock.punch" | "time_clock.view_own" | "time_clock.view_team" | "time_clock.correct" | "absence.request" | "absence.approve" | "report.download_legal" | "view-employee" | "create-employee" | "edit-employee" | "delete-employee" | "view-work-schedule" | "manage-work-schedule" | "view-work-calendar" | "manage-work-calendar" | "pos.operate" | "pos.supervise" | "pos.void" | "pos.discount_high" | "pos.cash_movement" | "pos.return" | "pos.admin" | "pos.report" | "view-appointment" | "create-appointment" | "edit-appointment" | "delete-appointment";
|
|
8779
|
+
ability: "dashboard" | "view-customer" | "create-customer" | "edit-customer" | "delete-customer" | "view-estimate" | "create-estimate" | "edit-estimate" | "delete-estimate" | "send-estimate" | "view-invoice" | "create-invoice" | "edit-invoice" | "delete-invoice" | "send-invoice" | "view-recurring-invoice" | "create-recurring-invoice" | "edit-recurring-invoice" | "delete-recurring-invoice" | "view-payment" | "create-payment" | "edit-payment" | "delete-payment" | "send-payment" | "view-expense" | "create-expense" | "edit-expense" | "delete-expense" | "view-delivery-note" | "create-delivery-note" | "edit-delivery-note" | "delete-delivery-note" | "view-item" | "create-item" | "edit-item" | "delete-item" | "view-lead" | "create-lead" | "edit-lead" | "delete-lead" | "convert-lead" | "view-contact" | "create-contact" | "edit-contact" | "delete-contact" | "view-project" | "create-project" | "edit-project" | "delete-project" | "view-task" | "create-task" | "edit-task" | "delete-task" | "view-own-task" | "edit-own-task" | "view-time-entry" | "create-time-entry" | "edit-time-entry" | "delete-time-entry" | "view-own-time-entry" | "create-own-time-entry" | "edit-own-time-entry" | "delete-own-time-entry" | "view-tax-type" | "create-tax-type" | "edit-tax-type" | "delete-tax-type" | "view-custom-field" | "create-custom-field" | "edit-custom-field" | "delete-custom-field" | "view-role" | "create-role" | "edit-role" | "delete-role" | "view-financial-reports" | "view-all-notes" | "manage-all-notes" | "time_clock.punch" | "time_clock.view_own" | "time_clock.view_team" | "time_clock.correct" | "absence.request" | "absence.approve" | "report.download_legal" | "view-employee" | "create-employee" | "edit-employee" | "delete-employee" | "view-work-schedule" | "manage-work-schedule" | "view-work-calendar" | "manage-work-calendar" | "pos.operate" | "pos.supervise" | "pos.void" | "pos.discount_high" | "pos.cash_movement" | "pos.return" | "pos.admin" | "pos.report" | "view-appointment" | "create-appointment" | "edit-appointment" | "delete-appointment" | "view-contract" | "create-contract" | "edit-contract" | "delete-contract";
|
|
7832
8780
|
}[] | null;
|
|
7833
8781
|
};
|
|
7834
8782
|
/** RoleResource */
|
|
@@ -8888,6 +9836,38 @@ export interface operations {
|
|
|
8888
9836
|
422: components["responses"]["ValidationException"];
|
|
8889
9837
|
};
|
|
8890
9838
|
};
|
|
9839
|
+
"contract.activateContract": {
|
|
9840
|
+
parameters: {
|
|
9841
|
+
query?: never;
|
|
9842
|
+
header?: never;
|
|
9843
|
+
path: {
|
|
9844
|
+
/** @description The contract ID */
|
|
9845
|
+
contract: number;
|
|
9846
|
+
};
|
|
9847
|
+
cookie?: never;
|
|
9848
|
+
};
|
|
9849
|
+
requestBody?: {
|
|
9850
|
+
content: {
|
|
9851
|
+
"application/json": components["schemas"]["ActivateContractRequest"];
|
|
9852
|
+
};
|
|
9853
|
+
};
|
|
9854
|
+
responses: {
|
|
9855
|
+
/** @description `ContractResource` */
|
|
9856
|
+
200: {
|
|
9857
|
+
headers: {
|
|
9858
|
+
[name: string]: unknown;
|
|
9859
|
+
};
|
|
9860
|
+
content: {
|
|
9861
|
+
"application/json": {
|
|
9862
|
+
data: components["schemas"]["ContractResource"];
|
|
9863
|
+
};
|
|
9864
|
+
};
|
|
9865
|
+
};
|
|
9866
|
+
403: components["responses"]["AuthorizationException"];
|
|
9867
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
9868
|
+
422: components["responses"]["ValidationException"];
|
|
9869
|
+
};
|
|
9870
|
+
};
|
|
8891
9871
|
appVersion: {
|
|
8892
9872
|
parameters: {
|
|
8893
9873
|
query?: never;
|
|
@@ -9536,6 +10516,44 @@ export interface operations {
|
|
|
9536
10516
|
422: components["responses"]["ValidationException"];
|
|
9537
10517
|
};
|
|
9538
10518
|
};
|
|
10519
|
+
"contract.cancelContract": {
|
|
10520
|
+
parameters: {
|
|
10521
|
+
query?: never;
|
|
10522
|
+
header?: never;
|
|
10523
|
+
path: {
|
|
10524
|
+
/** @description The contract ID */
|
|
10525
|
+
contract: number;
|
|
10526
|
+
};
|
|
10527
|
+
cookie?: never;
|
|
10528
|
+
};
|
|
10529
|
+
requestBody?: never;
|
|
10530
|
+
responses: {
|
|
10531
|
+
/** @description `ContractResource` */
|
|
10532
|
+
200: {
|
|
10533
|
+
headers: {
|
|
10534
|
+
[name: string]: unknown;
|
|
10535
|
+
};
|
|
10536
|
+
content: {
|
|
10537
|
+
"application/json": {
|
|
10538
|
+
data: components["schemas"]["ContractResource"];
|
|
10539
|
+
};
|
|
10540
|
+
};
|
|
10541
|
+
};
|
|
10542
|
+
403: components["responses"]["AuthorizationException"];
|
|
10543
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
10544
|
+
422: {
|
|
10545
|
+
headers: {
|
|
10546
|
+
[name: string]: unknown;
|
|
10547
|
+
};
|
|
10548
|
+
content: {
|
|
10549
|
+
"application/json": {
|
|
10550
|
+
success: boolean;
|
|
10551
|
+
message: string;
|
|
10552
|
+
};
|
|
10553
|
+
};
|
|
10554
|
+
};
|
|
10555
|
+
};
|
|
10556
|
+
};
|
|
9539
10557
|
"estimate.changeEstimateStatus": {
|
|
9540
10558
|
parameters: {
|
|
9541
10559
|
query?: never;
|
|
@@ -10094,30 +11112,36 @@ export interface operations {
|
|
|
10094
11112
|
404: components["responses"]["ModelNotFoundException"];
|
|
10095
11113
|
};
|
|
10096
11114
|
};
|
|
10097
|
-
"
|
|
11115
|
+
"contractDocument.upload": {
|
|
10098
11116
|
parameters: {
|
|
10099
11117
|
query?: never;
|
|
10100
11118
|
header?: never;
|
|
10101
11119
|
path: {
|
|
10102
|
-
/** @description The
|
|
10103
|
-
|
|
11120
|
+
/** @description The contract ID */
|
|
11121
|
+
contract: number;
|
|
10104
11122
|
};
|
|
10105
11123
|
cookie?: never;
|
|
10106
11124
|
};
|
|
10107
|
-
requestBody
|
|
11125
|
+
requestBody: {
|
|
10108
11126
|
content: {
|
|
10109
|
-
"
|
|
11127
|
+
"multipart/form-data": {
|
|
11128
|
+
/**
|
|
11129
|
+
* Format: binary
|
|
11130
|
+
* @description Maximum file size: 10240 kilobytes.
|
|
11131
|
+
*/
|
|
11132
|
+
document: Blob;
|
|
11133
|
+
};
|
|
10110
11134
|
};
|
|
10111
11135
|
};
|
|
10112
11136
|
responses: {
|
|
10113
|
-
/** @description `
|
|
11137
|
+
/** @description `ContractResource` */
|
|
10114
11138
|
200: {
|
|
10115
11139
|
headers: {
|
|
10116
11140
|
[name: string]: unknown;
|
|
10117
11141
|
};
|
|
10118
11142
|
content: {
|
|
10119
11143
|
"application/json": {
|
|
10120
|
-
data: components["schemas"]["
|
|
11144
|
+
data: components["schemas"]["ContractResource"];
|
|
10121
11145
|
};
|
|
10122
11146
|
};
|
|
10123
11147
|
};
|
|
@@ -10126,47 +11150,53 @@ export interface operations {
|
|
|
10126
11150
|
422: components["responses"]["ValidationException"];
|
|
10127
11151
|
};
|
|
10128
11152
|
};
|
|
10129
|
-
"
|
|
11153
|
+
"contractDocument.destroy": {
|
|
10130
11154
|
parameters: {
|
|
10131
11155
|
query?: never;
|
|
10132
11156
|
header?: never;
|
|
10133
|
-
path
|
|
11157
|
+
path: {
|
|
11158
|
+
/** @description The contract ID */
|
|
11159
|
+
contract: number;
|
|
11160
|
+
};
|
|
10134
11161
|
cookie?: never;
|
|
10135
11162
|
};
|
|
10136
11163
|
requestBody?: never;
|
|
10137
11164
|
responses: {
|
|
10138
|
-
/** @description
|
|
11165
|
+
/** @description `ContractResource` */
|
|
10139
11166
|
200: {
|
|
10140
11167
|
headers: {
|
|
10141
11168
|
[name: string]: unknown;
|
|
10142
11169
|
};
|
|
10143
11170
|
content: {
|
|
10144
11171
|
"application/json": {
|
|
10145
|
-
data: components["schemas"]["
|
|
11172
|
+
data: components["schemas"]["ContractResource"];
|
|
10146
11173
|
};
|
|
10147
11174
|
};
|
|
10148
11175
|
};
|
|
11176
|
+
403: components["responses"]["AuthorizationException"];
|
|
11177
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
10149
11178
|
};
|
|
10150
11179
|
};
|
|
10151
|
-
"
|
|
11180
|
+
"contracts.delete": {
|
|
10152
11181
|
parameters: {
|
|
10153
11182
|
query?: never;
|
|
10154
11183
|
header?: never;
|
|
10155
|
-
path
|
|
10156
|
-
invoice: string;
|
|
10157
|
-
};
|
|
11184
|
+
path?: never;
|
|
10158
11185
|
cookie?: never;
|
|
10159
11186
|
};
|
|
10160
|
-
requestBody
|
|
11187
|
+
requestBody: {
|
|
11188
|
+
content: {
|
|
11189
|
+
"application/json": components["schemas"]["DeleteContractsRequest"];
|
|
11190
|
+
};
|
|
11191
|
+
};
|
|
10161
11192
|
responses: {
|
|
10162
|
-
/** @description `InvoiceResource` */
|
|
10163
11193
|
200: {
|
|
10164
11194
|
headers: {
|
|
10165
11195
|
[name: string]: unknown;
|
|
10166
11196
|
};
|
|
10167
11197
|
content: {
|
|
10168
11198
|
"application/json": {
|
|
10169
|
-
|
|
11199
|
+
success: boolean;
|
|
10170
11200
|
};
|
|
10171
11201
|
};
|
|
10172
11202
|
};
|
|
@@ -10174,7 +11204,7 @@ export interface operations {
|
|
|
10174
11204
|
422: components["responses"]["ValidationException"];
|
|
10175
11205
|
};
|
|
10176
11206
|
};
|
|
10177
|
-
"
|
|
11207
|
+
"contracts.index": {
|
|
10178
11208
|
parameters: {
|
|
10179
11209
|
query?: never;
|
|
10180
11210
|
header?: never;
|
|
@@ -10183,27 +11213,257 @@ export interface operations {
|
|
|
10183
11213
|
};
|
|
10184
11214
|
requestBody?: never;
|
|
10185
11215
|
responses: {
|
|
10186
|
-
/** @description Array of `
|
|
11216
|
+
/** @description Array of `ContractResource` */
|
|
10187
11217
|
200: {
|
|
10188
11218
|
headers: {
|
|
10189
11219
|
[name: string]: unknown;
|
|
10190
11220
|
};
|
|
10191
11221
|
content: {
|
|
10192
11222
|
"application/json": {
|
|
10193
|
-
data: components["schemas"]["
|
|
11223
|
+
data: components["schemas"]["ContractResource"][];
|
|
11224
|
+
meta: {
|
|
11225
|
+
contract_total_count: number;
|
|
11226
|
+
};
|
|
10194
11227
|
};
|
|
10195
11228
|
};
|
|
10196
11229
|
};
|
|
11230
|
+
403: components["responses"]["AuthorizationException"];
|
|
10197
11231
|
};
|
|
10198
11232
|
};
|
|
10199
|
-
"
|
|
11233
|
+
"contracts.store": {
|
|
10200
11234
|
parameters: {
|
|
10201
11235
|
query?: never;
|
|
10202
11236
|
header?: never;
|
|
10203
11237
|
path?: never;
|
|
10204
11238
|
cookie?: never;
|
|
10205
11239
|
};
|
|
10206
|
-
requestBody
|
|
11240
|
+
requestBody: {
|
|
11241
|
+
content: {
|
|
11242
|
+
"application/json": components["schemas"]["ContractRequest"];
|
|
11243
|
+
};
|
|
11244
|
+
};
|
|
11245
|
+
responses: {
|
|
11246
|
+
/** @description `ContractResource` */
|
|
11247
|
+
201: {
|
|
11248
|
+
headers: {
|
|
11249
|
+
[name: string]: unknown;
|
|
11250
|
+
};
|
|
11251
|
+
content: {
|
|
11252
|
+
"application/json": {
|
|
11253
|
+
data: components["schemas"]["ContractResource"];
|
|
11254
|
+
};
|
|
11255
|
+
};
|
|
11256
|
+
};
|
|
11257
|
+
403: components["responses"]["AuthorizationException"];
|
|
11258
|
+
422: components["responses"]["ValidationException"];
|
|
11259
|
+
};
|
|
11260
|
+
};
|
|
11261
|
+
"contracts.show": {
|
|
11262
|
+
parameters: {
|
|
11263
|
+
query?: never;
|
|
11264
|
+
header?: never;
|
|
11265
|
+
path: {
|
|
11266
|
+
/** @description The contract ID */
|
|
11267
|
+
contract: number;
|
|
11268
|
+
};
|
|
11269
|
+
cookie?: never;
|
|
11270
|
+
};
|
|
11271
|
+
requestBody?: never;
|
|
11272
|
+
responses: {
|
|
11273
|
+
/** @description `ContractResource` */
|
|
11274
|
+
200: {
|
|
11275
|
+
headers: {
|
|
11276
|
+
[name: string]: unknown;
|
|
11277
|
+
};
|
|
11278
|
+
content: {
|
|
11279
|
+
"application/json": {
|
|
11280
|
+
data: components["schemas"]["ContractResource"];
|
|
11281
|
+
};
|
|
11282
|
+
};
|
|
11283
|
+
};
|
|
11284
|
+
403: components["responses"]["AuthorizationException"];
|
|
11285
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
11286
|
+
};
|
|
11287
|
+
};
|
|
11288
|
+
"contracts.update": {
|
|
11289
|
+
parameters: {
|
|
11290
|
+
query?: never;
|
|
11291
|
+
header?: never;
|
|
11292
|
+
path: {
|
|
11293
|
+
/** @description The contract ID */
|
|
11294
|
+
contract: number;
|
|
11295
|
+
};
|
|
11296
|
+
cookie?: never;
|
|
11297
|
+
};
|
|
11298
|
+
requestBody: {
|
|
11299
|
+
content: {
|
|
11300
|
+
"application/json": components["schemas"]["ContractRequest"];
|
|
11301
|
+
};
|
|
11302
|
+
};
|
|
11303
|
+
responses: {
|
|
11304
|
+
/** @description `ContractResource` */
|
|
11305
|
+
200: {
|
|
11306
|
+
headers: {
|
|
11307
|
+
[name: string]: unknown;
|
|
11308
|
+
};
|
|
11309
|
+
content: {
|
|
11310
|
+
"application/json": {
|
|
11311
|
+
data: components["schemas"]["ContractResource"];
|
|
11312
|
+
};
|
|
11313
|
+
};
|
|
11314
|
+
};
|
|
11315
|
+
403: components["responses"]["AuthorizationException"];
|
|
11316
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
11317
|
+
422: components["responses"]["ValidationException"];
|
|
11318
|
+
};
|
|
11319
|
+
};
|
|
11320
|
+
"contracts.destroy": {
|
|
11321
|
+
parameters: {
|
|
11322
|
+
query?: never;
|
|
11323
|
+
header?: never;
|
|
11324
|
+
path: {
|
|
11325
|
+
/** @description The contract ID */
|
|
11326
|
+
contract: number;
|
|
11327
|
+
};
|
|
11328
|
+
cookie?: never;
|
|
11329
|
+
};
|
|
11330
|
+
requestBody?: never;
|
|
11331
|
+
responses: {
|
|
11332
|
+
200: {
|
|
11333
|
+
headers: {
|
|
11334
|
+
[name: string]: unknown;
|
|
11335
|
+
};
|
|
11336
|
+
content: {
|
|
11337
|
+
"application/json": {
|
|
11338
|
+
success: boolean;
|
|
11339
|
+
};
|
|
11340
|
+
};
|
|
11341
|
+
};
|
|
11342
|
+
403: components["responses"]["AuthorizationException"];
|
|
11343
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
11344
|
+
422: {
|
|
11345
|
+
headers: {
|
|
11346
|
+
[name: string]: unknown;
|
|
11347
|
+
};
|
|
11348
|
+
content: {
|
|
11349
|
+
"application/json": {
|
|
11350
|
+
success: boolean;
|
|
11351
|
+
message: string;
|
|
11352
|
+
};
|
|
11353
|
+
};
|
|
11354
|
+
};
|
|
11355
|
+
};
|
|
11356
|
+
};
|
|
11357
|
+
"estimate.convertEstimate": {
|
|
11358
|
+
parameters: {
|
|
11359
|
+
query?: never;
|
|
11360
|
+
header?: never;
|
|
11361
|
+
path: {
|
|
11362
|
+
/** @description The estimate ID */
|
|
11363
|
+
estimate: number;
|
|
11364
|
+
};
|
|
11365
|
+
cookie?: never;
|
|
11366
|
+
};
|
|
11367
|
+
requestBody?: {
|
|
11368
|
+
content: {
|
|
11369
|
+
"application/json": components["schemas"]["ConvertEstimateRequest"];
|
|
11370
|
+
};
|
|
11371
|
+
};
|
|
11372
|
+
responses: {
|
|
11373
|
+
/** @description `InvoiceResource` */
|
|
11374
|
+
200: {
|
|
11375
|
+
headers: {
|
|
11376
|
+
[name: string]: unknown;
|
|
11377
|
+
};
|
|
11378
|
+
content: {
|
|
11379
|
+
"application/json": {
|
|
11380
|
+
data: components["schemas"]["InvoiceResource"];
|
|
11381
|
+
};
|
|
11382
|
+
};
|
|
11383
|
+
};
|
|
11384
|
+
403: components["responses"]["AuthorizationException"];
|
|
11385
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
11386
|
+
422: components["responses"]["ValidationException"];
|
|
11387
|
+
};
|
|
11388
|
+
};
|
|
11389
|
+
"general.countries": {
|
|
11390
|
+
parameters: {
|
|
11391
|
+
query?: never;
|
|
11392
|
+
header?: never;
|
|
11393
|
+
path?: never;
|
|
11394
|
+
cookie?: never;
|
|
11395
|
+
};
|
|
11396
|
+
requestBody?: never;
|
|
11397
|
+
responses: {
|
|
11398
|
+
/** @description Array of `CountryResource` */
|
|
11399
|
+
200: {
|
|
11400
|
+
headers: {
|
|
11401
|
+
[name: string]: unknown;
|
|
11402
|
+
};
|
|
11403
|
+
content: {
|
|
11404
|
+
"application/json": {
|
|
11405
|
+
data: components["schemas"]["CountryResource"][];
|
|
11406
|
+
};
|
|
11407
|
+
};
|
|
11408
|
+
};
|
|
11409
|
+
};
|
|
11410
|
+
};
|
|
11411
|
+
"invoice.creditNote": {
|
|
11412
|
+
parameters: {
|
|
11413
|
+
query?: never;
|
|
11414
|
+
header?: never;
|
|
11415
|
+
path: {
|
|
11416
|
+
invoice: string;
|
|
11417
|
+
};
|
|
11418
|
+
cookie?: never;
|
|
11419
|
+
};
|
|
11420
|
+
requestBody?: never;
|
|
11421
|
+
responses: {
|
|
11422
|
+
/** @description `InvoiceResource` */
|
|
11423
|
+
200: {
|
|
11424
|
+
headers: {
|
|
11425
|
+
[name: string]: unknown;
|
|
11426
|
+
};
|
|
11427
|
+
content: {
|
|
11428
|
+
"application/json": {
|
|
11429
|
+
data: components["schemas"]["InvoiceResource"];
|
|
11430
|
+
};
|
|
11431
|
+
};
|
|
11432
|
+
};
|
|
11433
|
+
403: components["responses"]["AuthorizationException"];
|
|
11434
|
+
422: components["responses"]["ValidationException"];
|
|
11435
|
+
};
|
|
11436
|
+
};
|
|
11437
|
+
"general.currencies": {
|
|
11438
|
+
parameters: {
|
|
11439
|
+
query?: never;
|
|
11440
|
+
header?: never;
|
|
11441
|
+
path?: never;
|
|
11442
|
+
cookie?: never;
|
|
11443
|
+
};
|
|
11444
|
+
requestBody?: never;
|
|
11445
|
+
responses: {
|
|
11446
|
+
/** @description Array of `CurrencyResource` */
|
|
11447
|
+
200: {
|
|
11448
|
+
headers: {
|
|
11449
|
+
[name: string]: unknown;
|
|
11450
|
+
};
|
|
11451
|
+
content: {
|
|
11452
|
+
"application/json": {
|
|
11453
|
+
data: components["schemas"]["CurrencyResource"][];
|
|
11454
|
+
};
|
|
11455
|
+
};
|
|
11456
|
+
};
|
|
11457
|
+
};
|
|
11458
|
+
};
|
|
11459
|
+
"custom-fields.index": {
|
|
11460
|
+
parameters: {
|
|
11461
|
+
query?: never;
|
|
11462
|
+
header?: never;
|
|
11463
|
+
path?: never;
|
|
11464
|
+
cookie?: never;
|
|
11465
|
+
};
|
|
11466
|
+
requestBody?: never;
|
|
10207
11467
|
responses: {
|
|
10208
11468
|
/** @description Array of `CustomFieldResource` */
|
|
10209
11469
|
200: {
|
|
@@ -10700,7 +11960,376 @@ export interface operations {
|
|
|
10700
11960
|
403: components["responses"]["AuthorizationException"];
|
|
10701
11961
|
};
|
|
10702
11962
|
};
|
|
10703
|
-
"general.dateFormats": {
|
|
11963
|
+
"general.dateFormats": {
|
|
11964
|
+
parameters: {
|
|
11965
|
+
query?: never;
|
|
11966
|
+
header?: never;
|
|
11967
|
+
path?: never;
|
|
11968
|
+
cookie?: never;
|
|
11969
|
+
};
|
|
11970
|
+
requestBody?: never;
|
|
11971
|
+
responses: {
|
|
11972
|
+
200: {
|
|
11973
|
+
headers: {
|
|
11974
|
+
[name: string]: unknown;
|
|
11975
|
+
};
|
|
11976
|
+
content: {
|
|
11977
|
+
"application/json": {
|
|
11978
|
+
date_formats: {
|
|
11979
|
+
display_date: string;
|
|
11980
|
+
carbon_format_value: string;
|
|
11981
|
+
moment_format_value: string;
|
|
11982
|
+
}[];
|
|
11983
|
+
};
|
|
11984
|
+
};
|
|
11985
|
+
};
|
|
11986
|
+
};
|
|
11987
|
+
};
|
|
11988
|
+
"delegableCatalog.index": {
|
|
11989
|
+
parameters: {
|
|
11990
|
+
query?: never;
|
|
11991
|
+
header?: never;
|
|
11992
|
+
path?: never;
|
|
11993
|
+
cookie?: never;
|
|
11994
|
+
};
|
|
11995
|
+
requestBody?: never;
|
|
11996
|
+
responses: {
|
|
11997
|
+
200: {
|
|
11998
|
+
headers: {
|
|
11999
|
+
[name: string]: unknown;
|
|
12000
|
+
};
|
|
12001
|
+
content: {
|
|
12002
|
+
"application/json": {
|
|
12003
|
+
hermes_configured: boolean;
|
|
12004
|
+
slug: string | null;
|
|
12005
|
+
tasks: {
|
|
12006
|
+
task_type: string;
|
|
12007
|
+
label: string;
|
|
12008
|
+
agent_skill: string | null;
|
|
12009
|
+
enabled: boolean;
|
|
12010
|
+
delegable: boolean;
|
|
12011
|
+
write_effect: boolean;
|
|
12012
|
+
default_mode: string;
|
|
12013
|
+
verifiability_level: number | null;
|
|
12014
|
+
icon: string | null;
|
|
12015
|
+
color: string | null;
|
|
12016
|
+
source: string | null;
|
|
12017
|
+
verified: boolean;
|
|
12018
|
+
skill_verified_at: string | null;
|
|
12019
|
+
retired_at: string | null;
|
|
12020
|
+
retired_reason: string | null;
|
|
12021
|
+
}[];
|
|
12022
|
+
};
|
|
12023
|
+
};
|
|
12024
|
+
};
|
|
12025
|
+
403: components["responses"]["AuthorizationException"];
|
|
12026
|
+
};
|
|
12027
|
+
};
|
|
12028
|
+
"delegableCatalog.delegations": {
|
|
12029
|
+
parameters: {
|
|
12030
|
+
query?: never;
|
|
12031
|
+
header?: never;
|
|
12032
|
+
path?: never;
|
|
12033
|
+
cookie?: never;
|
|
12034
|
+
};
|
|
12035
|
+
requestBody?: never;
|
|
12036
|
+
responses: {
|
|
12037
|
+
200: {
|
|
12038
|
+
headers: {
|
|
12039
|
+
[name: string]: unknown;
|
|
12040
|
+
};
|
|
12041
|
+
content: {
|
|
12042
|
+
"application/json": {
|
|
12043
|
+
copilot_url: string | null;
|
|
12044
|
+
delegations: {
|
|
12045
|
+
id: number;
|
|
12046
|
+
title: string;
|
|
12047
|
+
task_type: string | null;
|
|
12048
|
+
agent_skill: string | null;
|
|
12049
|
+
status: string;
|
|
12050
|
+
hermes_kanban_id: string | null;
|
|
12051
|
+
plane: string;
|
|
12052
|
+
origin_client_id: string | null;
|
|
12053
|
+
origin_client_name: string | null;
|
|
12054
|
+
result: string | null;
|
|
12055
|
+
result_data: {
|
|
12056
|
+
[key: string]: unknown;
|
|
12057
|
+
} | null;
|
|
12058
|
+
proposal: {
|
|
12059
|
+
[key: string]: unknown;
|
|
12060
|
+
} | null;
|
|
12061
|
+
proposal_status: string | null;
|
|
12062
|
+
proposed_at: string | null;
|
|
12063
|
+
applied_at: string | null;
|
|
12064
|
+
delegated_at: string | null;
|
|
12065
|
+
created_at: string | null;
|
|
12066
|
+
updated_at: string | null;
|
|
12067
|
+
}[];
|
|
12068
|
+
};
|
|
12069
|
+
};
|
|
12070
|
+
};
|
|
12071
|
+
403: components["responses"]["AuthorizationException"];
|
|
12072
|
+
};
|
|
12073
|
+
};
|
|
12074
|
+
"delegableCatalog.approveProposal": {
|
|
12075
|
+
parameters: {
|
|
12076
|
+
query?: never;
|
|
12077
|
+
header?: never;
|
|
12078
|
+
path: {
|
|
12079
|
+
id: number;
|
|
12080
|
+
};
|
|
12081
|
+
cookie?: never;
|
|
12082
|
+
};
|
|
12083
|
+
requestBody?: {
|
|
12084
|
+
content: {
|
|
12085
|
+
"application/json": {
|
|
12086
|
+
human_touch_minutes?: number | null;
|
|
12087
|
+
/** @enum {string|null} */
|
|
12088
|
+
verification_outcome?: "pass" | "edit" | null;
|
|
12089
|
+
};
|
|
12090
|
+
};
|
|
12091
|
+
};
|
|
12092
|
+
responses: {
|
|
12093
|
+
200: {
|
|
12094
|
+
headers: {
|
|
12095
|
+
[name: string]: unknown;
|
|
12096
|
+
};
|
|
12097
|
+
content: {
|
|
12098
|
+
"application/json": {
|
|
12099
|
+
task: {
|
|
12100
|
+
id: number;
|
|
12101
|
+
title: string;
|
|
12102
|
+
task_type: string | null;
|
|
12103
|
+
agent_skill: string | null;
|
|
12104
|
+
status: string;
|
|
12105
|
+
hermes_kanban_id: string | null;
|
|
12106
|
+
plane: string;
|
|
12107
|
+
origin_client_id: string | null;
|
|
12108
|
+
origin_client_name: string | null;
|
|
12109
|
+
result: string | null;
|
|
12110
|
+
result_data: {
|
|
12111
|
+
[key: string]: unknown;
|
|
12112
|
+
} | null;
|
|
12113
|
+
proposal: {
|
|
12114
|
+
[key: string]: unknown;
|
|
12115
|
+
} | null;
|
|
12116
|
+
proposal_status: string | null;
|
|
12117
|
+
proposed_at: string | null;
|
|
12118
|
+
applied_at: string | null;
|
|
12119
|
+
delegated_at: string | null;
|
|
12120
|
+
created_at: string | null;
|
|
12121
|
+
updated_at: string | null;
|
|
12122
|
+
};
|
|
12123
|
+
};
|
|
12124
|
+
};
|
|
12125
|
+
};
|
|
12126
|
+
403: components["responses"]["AuthorizationException"];
|
|
12127
|
+
422: components["responses"]["ValidationException"];
|
|
12128
|
+
};
|
|
12129
|
+
};
|
|
12130
|
+
"delegableCatalog.rejectProposal": {
|
|
12131
|
+
parameters: {
|
|
12132
|
+
query?: never;
|
|
12133
|
+
header?: never;
|
|
12134
|
+
path: {
|
|
12135
|
+
id: number;
|
|
12136
|
+
};
|
|
12137
|
+
cookie?: never;
|
|
12138
|
+
};
|
|
12139
|
+
requestBody?: {
|
|
12140
|
+
content: {
|
|
12141
|
+
"application/json": {
|
|
12142
|
+
reason?: string | null;
|
|
12143
|
+
human_touch_minutes?: number | null;
|
|
12144
|
+
};
|
|
12145
|
+
};
|
|
12146
|
+
};
|
|
12147
|
+
responses: {
|
|
12148
|
+
200: {
|
|
12149
|
+
headers: {
|
|
12150
|
+
[name: string]: unknown;
|
|
12151
|
+
};
|
|
12152
|
+
content: {
|
|
12153
|
+
"application/json": {
|
|
12154
|
+
task: {
|
|
12155
|
+
id: number;
|
|
12156
|
+
title: string;
|
|
12157
|
+
task_type: string | null;
|
|
12158
|
+
agent_skill: string | null;
|
|
12159
|
+
status: string;
|
|
12160
|
+
hermes_kanban_id: string | null;
|
|
12161
|
+
plane: string;
|
|
12162
|
+
origin_client_id: string | null;
|
|
12163
|
+
origin_client_name: string | null;
|
|
12164
|
+
result: string | null;
|
|
12165
|
+
result_data: {
|
|
12166
|
+
[key: string]: unknown;
|
|
12167
|
+
} | null;
|
|
12168
|
+
proposal: {
|
|
12169
|
+
[key: string]: unknown;
|
|
12170
|
+
} | null;
|
|
12171
|
+
proposal_status: string | null;
|
|
12172
|
+
proposed_at: string | null;
|
|
12173
|
+
applied_at: string | null;
|
|
12174
|
+
delegated_at: string | null;
|
|
12175
|
+
created_at: string | null;
|
|
12176
|
+
updated_at: string | null;
|
|
12177
|
+
};
|
|
12178
|
+
};
|
|
12179
|
+
};
|
|
12180
|
+
};
|
|
12181
|
+
403: components["responses"]["AuthorizationException"];
|
|
12182
|
+
422: components["responses"]["ValidationException"];
|
|
12183
|
+
};
|
|
12184
|
+
};
|
|
12185
|
+
"delegableCatalog.needsChangesProposal": {
|
|
12186
|
+
parameters: {
|
|
12187
|
+
query?: never;
|
|
12188
|
+
header?: never;
|
|
12189
|
+
path: {
|
|
12190
|
+
id: number;
|
|
12191
|
+
};
|
|
12192
|
+
cookie?: never;
|
|
12193
|
+
};
|
|
12194
|
+
requestBody?: {
|
|
12195
|
+
content: {
|
|
12196
|
+
"application/json": {
|
|
12197
|
+
reason?: string | null;
|
|
12198
|
+
};
|
|
12199
|
+
};
|
|
12200
|
+
};
|
|
12201
|
+
responses: {
|
|
12202
|
+
200: {
|
|
12203
|
+
headers: {
|
|
12204
|
+
[name: string]: unknown;
|
|
12205
|
+
};
|
|
12206
|
+
content: {
|
|
12207
|
+
"application/json": {
|
|
12208
|
+
task: {
|
|
12209
|
+
id: number;
|
|
12210
|
+
title: string;
|
|
12211
|
+
task_type: string | null;
|
|
12212
|
+
agent_skill: string | null;
|
|
12213
|
+
status: string;
|
|
12214
|
+
hermes_kanban_id: string | null;
|
|
12215
|
+
plane: string;
|
|
12216
|
+
origin_client_id: string | null;
|
|
12217
|
+
origin_client_name: string | null;
|
|
12218
|
+
result: string | null;
|
|
12219
|
+
result_data: {
|
|
12220
|
+
[key: string]: unknown;
|
|
12221
|
+
} | null;
|
|
12222
|
+
proposal: {
|
|
12223
|
+
[key: string]: unknown;
|
|
12224
|
+
} | null;
|
|
12225
|
+
proposal_status: string | null;
|
|
12226
|
+
proposed_at: string | null;
|
|
12227
|
+
applied_at: string | null;
|
|
12228
|
+
delegated_at: string | null;
|
|
12229
|
+
created_at: string | null;
|
|
12230
|
+
updated_at: string | null;
|
|
12231
|
+
};
|
|
12232
|
+
};
|
|
12233
|
+
};
|
|
12234
|
+
};
|
|
12235
|
+
403: components["responses"]["AuthorizationException"];
|
|
12236
|
+
422: components["responses"]["ValidationException"];
|
|
12237
|
+
};
|
|
12238
|
+
};
|
|
12239
|
+
"delegableCatalog.upsert": {
|
|
12240
|
+
parameters: {
|
|
12241
|
+
query?: never;
|
|
12242
|
+
header?: never;
|
|
12243
|
+
path: {
|
|
12244
|
+
task_type: string;
|
|
12245
|
+
};
|
|
12246
|
+
cookie?: never;
|
|
12247
|
+
};
|
|
12248
|
+
requestBody: {
|
|
12249
|
+
content: {
|
|
12250
|
+
"application/json": {
|
|
12251
|
+
agent_skill: string;
|
|
12252
|
+
label: string;
|
|
12253
|
+
write_effect?: boolean;
|
|
12254
|
+
verifiability_level?: number | null;
|
|
12255
|
+
icon?: string | null;
|
|
12256
|
+
color?: string | null;
|
|
12257
|
+
};
|
|
12258
|
+
};
|
|
12259
|
+
};
|
|
12260
|
+
responses: {
|
|
12261
|
+
200: {
|
|
12262
|
+
headers: {
|
|
12263
|
+
[name: string]: unknown;
|
|
12264
|
+
};
|
|
12265
|
+
content: {
|
|
12266
|
+
"application/json": {
|
|
12267
|
+
task: {
|
|
12268
|
+
task_type: string;
|
|
12269
|
+
label: string;
|
|
12270
|
+
agent_skill: string | null;
|
|
12271
|
+
enabled: boolean;
|
|
12272
|
+
delegable: boolean;
|
|
12273
|
+
write_effect: boolean;
|
|
12274
|
+
default_mode: string;
|
|
12275
|
+
verifiability_level: number | null;
|
|
12276
|
+
icon: string | null;
|
|
12277
|
+
color: string | null;
|
|
12278
|
+
source: string | null;
|
|
12279
|
+
verified: boolean;
|
|
12280
|
+
skill_verified_at: string | null;
|
|
12281
|
+
retired_at: string | null;
|
|
12282
|
+
retired_reason: string | null;
|
|
12283
|
+
};
|
|
12284
|
+
verified: boolean;
|
|
12285
|
+
};
|
|
12286
|
+
};
|
|
12287
|
+
};
|
|
12288
|
+
403: components["responses"]["AuthorizationException"];
|
|
12289
|
+
422: components["responses"]["ValidationException"];
|
|
12290
|
+
};
|
|
12291
|
+
};
|
|
12292
|
+
"delegableCatalog.disable": {
|
|
12293
|
+
parameters: {
|
|
12294
|
+
query?: never;
|
|
12295
|
+
header?: never;
|
|
12296
|
+
path: {
|
|
12297
|
+
task_type: string;
|
|
12298
|
+
};
|
|
12299
|
+
cookie?: never;
|
|
12300
|
+
};
|
|
12301
|
+
requestBody?: never;
|
|
12302
|
+
responses: {
|
|
12303
|
+
200: {
|
|
12304
|
+
headers: {
|
|
12305
|
+
[name: string]: unknown;
|
|
12306
|
+
};
|
|
12307
|
+
content: {
|
|
12308
|
+
"application/json": {
|
|
12309
|
+
task: {
|
|
12310
|
+
task_type: string;
|
|
12311
|
+
label: string;
|
|
12312
|
+
agent_skill: string | null;
|
|
12313
|
+
enabled: boolean;
|
|
12314
|
+
delegable: boolean;
|
|
12315
|
+
write_effect: boolean;
|
|
12316
|
+
default_mode: string;
|
|
12317
|
+
verifiability_level: number | null;
|
|
12318
|
+
icon: string | null;
|
|
12319
|
+
color: string | null;
|
|
12320
|
+
source: string | null;
|
|
12321
|
+
verified: boolean;
|
|
12322
|
+
skill_verified_at: string | null;
|
|
12323
|
+
retired_at: string | null;
|
|
12324
|
+
retired_reason: string | null;
|
|
12325
|
+
};
|
|
12326
|
+
};
|
|
12327
|
+
};
|
|
12328
|
+
};
|
|
12329
|
+
403: components["responses"]["AuthorizationException"];
|
|
12330
|
+
};
|
|
12331
|
+
};
|
|
12332
|
+
"delegableCatalog.discover": {
|
|
10704
12333
|
parameters: {
|
|
10705
12334
|
query?: never;
|
|
10706
12335
|
header?: never;
|
|
@@ -10715,14 +12344,151 @@ export interface operations {
|
|
|
10715
12344
|
};
|
|
10716
12345
|
content: {
|
|
10717
12346
|
"application/json": {
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
12347
|
+
slug: string;
|
|
12348
|
+
skills: {
|
|
12349
|
+
agent_skill: string;
|
|
12350
|
+
task_type: string;
|
|
12351
|
+
label: string;
|
|
12352
|
+
description: string | null;
|
|
12353
|
+
disabled_on_hermes: boolean;
|
|
12354
|
+
write_effect: boolean;
|
|
12355
|
+
verifiability_level: number | null;
|
|
12356
|
+
in_catalog: boolean;
|
|
12357
|
+
enabled: boolean;
|
|
10722
12358
|
}[];
|
|
10723
12359
|
};
|
|
10724
12360
|
};
|
|
10725
12361
|
};
|
|
12362
|
+
403: components["responses"]["AuthorizationException"];
|
|
12363
|
+
};
|
|
12364
|
+
};
|
|
12365
|
+
"delegableCatalog.reverify": {
|
|
12366
|
+
parameters: {
|
|
12367
|
+
query?: never;
|
|
12368
|
+
header?: never;
|
|
12369
|
+
path: {
|
|
12370
|
+
task_type: string;
|
|
12371
|
+
};
|
|
12372
|
+
cookie?: never;
|
|
12373
|
+
};
|
|
12374
|
+
requestBody?: never;
|
|
12375
|
+
responses: {
|
|
12376
|
+
200: {
|
|
12377
|
+
headers: {
|
|
12378
|
+
[name: string]: unknown;
|
|
12379
|
+
};
|
|
12380
|
+
content: {
|
|
12381
|
+
"application/json": {
|
|
12382
|
+
task: {
|
|
12383
|
+
task_type: string;
|
|
12384
|
+
label: string;
|
|
12385
|
+
agent_skill: string | null;
|
|
12386
|
+
enabled: boolean;
|
|
12387
|
+
delegable: boolean;
|
|
12388
|
+
write_effect: boolean;
|
|
12389
|
+
default_mode: string;
|
|
12390
|
+
verifiability_level: number | null;
|
|
12391
|
+
icon: string | null;
|
|
12392
|
+
color: string | null;
|
|
12393
|
+
source: string | null;
|
|
12394
|
+
verified: boolean;
|
|
12395
|
+
skill_verified_at: string | null;
|
|
12396
|
+
retired_at: string | null;
|
|
12397
|
+
retired_reason: string | null;
|
|
12398
|
+
};
|
|
12399
|
+
verified: boolean;
|
|
12400
|
+
};
|
|
12401
|
+
};
|
|
12402
|
+
};
|
|
12403
|
+
403: components["responses"]["AuthorizationException"];
|
|
12404
|
+
};
|
|
12405
|
+
};
|
|
12406
|
+
"delegableCatalog.execute": {
|
|
12407
|
+
parameters: {
|
|
12408
|
+
query?: never;
|
|
12409
|
+
header?: never;
|
|
12410
|
+
path?: never;
|
|
12411
|
+
cookie?: never;
|
|
12412
|
+
};
|
|
12413
|
+
requestBody: {
|
|
12414
|
+
content: {
|
|
12415
|
+
"application/json": {
|
|
12416
|
+
prompt: string;
|
|
12417
|
+
task_type?: string | null;
|
|
12418
|
+
};
|
|
12419
|
+
};
|
|
12420
|
+
};
|
|
12421
|
+
responses: {
|
|
12422
|
+
200: {
|
|
12423
|
+
headers: {
|
|
12424
|
+
[name: string]: unknown;
|
|
12425
|
+
};
|
|
12426
|
+
content: {
|
|
12427
|
+
"application/json": {
|
|
12428
|
+
skill: string | null;
|
|
12429
|
+
response: string;
|
|
12430
|
+
usage: {
|
|
12431
|
+
[key: string]: unknown;
|
|
12432
|
+
} | null;
|
|
12433
|
+
};
|
|
12434
|
+
};
|
|
12435
|
+
};
|
|
12436
|
+
403: components["responses"]["AuthorizationException"];
|
|
12437
|
+
422: components["responses"]["ValidationException"];
|
|
12438
|
+
};
|
|
12439
|
+
};
|
|
12440
|
+
"delegableCatalog.delegate": {
|
|
12441
|
+
parameters: {
|
|
12442
|
+
query?: never;
|
|
12443
|
+
header?: never;
|
|
12444
|
+
path?: never;
|
|
12445
|
+
cookie?: never;
|
|
12446
|
+
};
|
|
12447
|
+
requestBody: {
|
|
12448
|
+
content: {
|
|
12449
|
+
"application/json": {
|
|
12450
|
+
title: string;
|
|
12451
|
+
task_type?: string | null;
|
|
12452
|
+
context?: string | null;
|
|
12453
|
+
};
|
|
12454
|
+
};
|
|
12455
|
+
};
|
|
12456
|
+
responses: {
|
|
12457
|
+
200: {
|
|
12458
|
+
headers: {
|
|
12459
|
+
[name: string]: unknown;
|
|
12460
|
+
};
|
|
12461
|
+
content: {
|
|
12462
|
+
"application/json": {
|
|
12463
|
+
task: {
|
|
12464
|
+
id: number;
|
|
12465
|
+
title: string;
|
|
12466
|
+
task_type: string | null;
|
|
12467
|
+
agent_skill: string | null;
|
|
12468
|
+
status: string;
|
|
12469
|
+
hermes_kanban_id: string | null;
|
|
12470
|
+
plane: string;
|
|
12471
|
+
origin_client_id: string | null;
|
|
12472
|
+
origin_client_name: string | null;
|
|
12473
|
+
result: string | null;
|
|
12474
|
+
result_data: {
|
|
12475
|
+
[key: string]: unknown;
|
|
12476
|
+
} | null;
|
|
12477
|
+
proposal: {
|
|
12478
|
+
[key: string]: unknown;
|
|
12479
|
+
} | null;
|
|
12480
|
+
proposal_status: string | null;
|
|
12481
|
+
proposed_at: string | null;
|
|
12482
|
+
applied_at: string | null;
|
|
12483
|
+
delegated_at: string | null;
|
|
12484
|
+
created_at: string | null;
|
|
12485
|
+
updated_at: string | null;
|
|
12486
|
+
};
|
|
12487
|
+
};
|
|
12488
|
+
};
|
|
12489
|
+
};
|
|
12490
|
+
403: components["responses"]["AuthorizationException"];
|
|
12491
|
+
422: components["responses"]["ValidationException"];
|
|
10726
12492
|
};
|
|
10727
12493
|
};
|
|
10728
12494
|
"deliveryNotes.markDelivered": {
|
|
@@ -11974,6 +13740,165 @@ export interface operations {
|
|
|
11974
13740
|
422: components["responses"]["ValidationException"];
|
|
11975
13741
|
};
|
|
11976
13742
|
};
|
|
13743
|
+
"gestoriaLink.asesorias": {
|
|
13744
|
+
parameters: {
|
|
13745
|
+
query?: {
|
|
13746
|
+
q?: string;
|
|
13747
|
+
};
|
|
13748
|
+
header?: never;
|
|
13749
|
+
path?: never;
|
|
13750
|
+
cookie?: never;
|
|
13751
|
+
};
|
|
13752
|
+
requestBody?: never;
|
|
13753
|
+
responses: {
|
|
13754
|
+
200: {
|
|
13755
|
+
headers: {
|
|
13756
|
+
[name: string]: unknown;
|
|
13757
|
+
};
|
|
13758
|
+
content: {
|
|
13759
|
+
"application/json": {
|
|
13760
|
+
data: {
|
|
13761
|
+
id: string;
|
|
13762
|
+
name: string;
|
|
13763
|
+
nif_masked: string | null;
|
|
13764
|
+
email: string;
|
|
13765
|
+
}[];
|
|
13766
|
+
};
|
|
13767
|
+
};
|
|
13768
|
+
};
|
|
13769
|
+
};
|
|
13770
|
+
};
|
|
13771
|
+
"gestoriaLink.status": {
|
|
13772
|
+
parameters: {
|
|
13773
|
+
query?: never;
|
|
13774
|
+
header?: never;
|
|
13775
|
+
path?: never;
|
|
13776
|
+
cookie?: never;
|
|
13777
|
+
};
|
|
13778
|
+
requestBody?: never;
|
|
13779
|
+
responses: {
|
|
13780
|
+
200: {
|
|
13781
|
+
headers: {
|
|
13782
|
+
[name: string]: unknown;
|
|
13783
|
+
};
|
|
13784
|
+
content: {
|
|
13785
|
+
"application/json": {
|
|
13786
|
+
data: {
|
|
13787
|
+
id: number;
|
|
13788
|
+
status: string;
|
|
13789
|
+
link_code: string;
|
|
13790
|
+
/** Format: date-time */
|
|
13791
|
+
requested_at: string | null;
|
|
13792
|
+
/** Format: date-time */
|
|
13793
|
+
accepted_at: string | null;
|
|
13794
|
+
permissions: unknown[] | null | {
|
|
13795
|
+
read_invoices: boolean;
|
|
13796
|
+
read_customers: boolean;
|
|
13797
|
+
read_suppliers: boolean;
|
|
13798
|
+
export_accounting: boolean;
|
|
13799
|
+
delete_data: boolean;
|
|
13800
|
+
};
|
|
13801
|
+
gestoria: {
|
|
13802
|
+
id: string | null;
|
|
13803
|
+
name: string | null;
|
|
13804
|
+
nif: string | null;
|
|
13805
|
+
email: string | null;
|
|
13806
|
+
phone: string | null;
|
|
13807
|
+
};
|
|
13808
|
+
} | {
|
|
13809
|
+
/** @constant */
|
|
13810
|
+
status: "none";
|
|
13811
|
+
permissions: {
|
|
13812
|
+
read_invoices: boolean;
|
|
13813
|
+
read_customers: boolean;
|
|
13814
|
+
read_suppliers: boolean;
|
|
13815
|
+
export_accounting: boolean;
|
|
13816
|
+
delete_data: boolean;
|
|
13817
|
+
};
|
|
13818
|
+
};
|
|
13819
|
+
};
|
|
13820
|
+
};
|
|
13821
|
+
};
|
|
13822
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
13823
|
+
};
|
|
13824
|
+
};
|
|
13825
|
+
"gestoriaLink.request": {
|
|
13826
|
+
parameters: {
|
|
13827
|
+
query?: never;
|
|
13828
|
+
header?: never;
|
|
13829
|
+
path?: never;
|
|
13830
|
+
cookie?: never;
|
|
13831
|
+
};
|
|
13832
|
+
requestBody?: {
|
|
13833
|
+
content: {
|
|
13834
|
+
"application/json": {
|
|
13835
|
+
gestoria_id?: number | null;
|
|
13836
|
+
link_code?: string | null;
|
|
13837
|
+
};
|
|
13838
|
+
};
|
|
13839
|
+
};
|
|
13840
|
+
responses: {
|
|
13841
|
+
201: {
|
|
13842
|
+
headers: {
|
|
13843
|
+
[name: string]: unknown;
|
|
13844
|
+
};
|
|
13845
|
+
content: {
|
|
13846
|
+
"application/json": {
|
|
13847
|
+
/** @constant */
|
|
13848
|
+
message: "Solicitud enviada a la asesoría.";
|
|
13849
|
+
data: {
|
|
13850
|
+
id: number;
|
|
13851
|
+
status: string;
|
|
13852
|
+
link_code: string;
|
|
13853
|
+
/** Format: date-time */
|
|
13854
|
+
requested_at: string | null;
|
|
13855
|
+
/** Format: date-time */
|
|
13856
|
+
accepted_at: string | null;
|
|
13857
|
+
permissions: unknown[] | null | {
|
|
13858
|
+
read_invoices: boolean;
|
|
13859
|
+
read_customers: boolean;
|
|
13860
|
+
read_suppliers: boolean;
|
|
13861
|
+
export_accounting: boolean;
|
|
13862
|
+
delete_data: boolean;
|
|
13863
|
+
};
|
|
13864
|
+
gestoria: {
|
|
13865
|
+
id: string | null;
|
|
13866
|
+
name: string | null;
|
|
13867
|
+
nif: string | null;
|
|
13868
|
+
email: string | null;
|
|
13869
|
+
phone: string | null;
|
|
13870
|
+
};
|
|
13871
|
+
};
|
|
13872
|
+
};
|
|
13873
|
+
};
|
|
13874
|
+
};
|
|
13875
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
13876
|
+
422: components["responses"]["ValidationException"];
|
|
13877
|
+
};
|
|
13878
|
+
};
|
|
13879
|
+
"gestoriaLink.revoke": {
|
|
13880
|
+
parameters: {
|
|
13881
|
+
query?: never;
|
|
13882
|
+
header?: never;
|
|
13883
|
+
path?: never;
|
|
13884
|
+
cookie?: never;
|
|
13885
|
+
};
|
|
13886
|
+
requestBody?: never;
|
|
13887
|
+
responses: {
|
|
13888
|
+
200: {
|
|
13889
|
+
headers: {
|
|
13890
|
+
[name: string]: unknown;
|
|
13891
|
+
};
|
|
13892
|
+
content: {
|
|
13893
|
+
"application/json": {
|
|
13894
|
+
/** @constant */
|
|
13895
|
+
message: "Vinculación revocada.";
|
|
13896
|
+
};
|
|
13897
|
+
};
|
|
13898
|
+
};
|
|
13899
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
13900
|
+
};
|
|
13901
|
+
};
|
|
11977
13902
|
"general.getAllUsedCurrencies": {
|
|
11978
13903
|
parameters: {
|
|
11979
13904
|
query?: never;
|
|
@@ -13591,14 +15516,21 @@ export interface operations {
|
|
|
13591
15516
|
};
|
|
13592
15517
|
"items.index": {
|
|
13593
15518
|
parameters: {
|
|
13594
|
-
query?:
|
|
15519
|
+
query?: {
|
|
15520
|
+
/** @description Con `summary`, cada fila trae solo lo que los listados leen: identidad, precios y banderas, la categoría reducida a `{id, name}`, el nombre de la unidad y los impuestos del artículo (enteros, con la misma forma que la vista completa). Sin empresa, sin moneda y sin la unidad como objeto — el recurso completo arrastra la empresa entera por fila, roles incluidos, y contra un catálogo de 200 artículos eso son ~4 s y ~900 KB de los que el 86 % es ese lastre. El artículo completo sigue en el detalle y en el índice sin este parámetro. */
|
|
15521
|
+
view?: "summary";
|
|
15522
|
+
};
|
|
13595
15523
|
header?: never;
|
|
13596
15524
|
path?: never;
|
|
13597
15525
|
cookie?: never;
|
|
13598
15526
|
};
|
|
13599
15527
|
requestBody?: never;
|
|
13600
15528
|
responses: {
|
|
13601
|
-
/**
|
|
15529
|
+
/**
|
|
15530
|
+
* @description Array of `ItemResource`
|
|
15531
|
+
*
|
|
15532
|
+
* Array of `ItemSummaryResource`
|
|
15533
|
+
*/
|
|
13602
15534
|
200: {
|
|
13603
15535
|
headers: {
|
|
13604
15536
|
[name: string]: unknown;
|
|
@@ -13610,6 +15542,12 @@ export interface operations {
|
|
|
13610
15542
|
tax_types: components["schemas"]["TaxType"][];
|
|
13611
15543
|
item_total_count: number;
|
|
13612
15544
|
};
|
|
15545
|
+
} | {
|
|
15546
|
+
data: (components["schemas"]["ItemSummaryResource"] & Record<string, never>)[];
|
|
15547
|
+
meta: {
|
|
15548
|
+
tax_types: components["schemas"]["TaxType"][];
|
|
15549
|
+
item_total_count: number;
|
|
15550
|
+
};
|
|
13613
15551
|
};
|
|
13614
15552
|
};
|
|
13615
15553
|
};
|
|
@@ -16206,20 +18144,52 @@ export interface operations {
|
|
|
16206
18144
|
};
|
|
16207
18145
|
header?: never;
|
|
16208
18146
|
path: {
|
|
16209
|
-
hash: string;
|
|
18147
|
+
hash: string;
|
|
18148
|
+
};
|
|
18149
|
+
cookie?: never;
|
|
18150
|
+
};
|
|
18151
|
+
requestBody?: never;
|
|
18152
|
+
responses: {
|
|
18153
|
+
200: {
|
|
18154
|
+
headers: {
|
|
18155
|
+
[name: string]: unknown;
|
|
18156
|
+
};
|
|
18157
|
+
content: {
|
|
18158
|
+
"text/csv": Blob;
|
|
18159
|
+
};
|
|
18160
|
+
};
|
|
18161
|
+
422: components["responses"]["ValidationException"];
|
|
18162
|
+
};
|
|
18163
|
+
};
|
|
18164
|
+
"contract.renewContract": {
|
|
18165
|
+
parameters: {
|
|
18166
|
+
query?: never;
|
|
18167
|
+
header?: never;
|
|
18168
|
+
path: {
|
|
18169
|
+
/** @description The contract ID */
|
|
18170
|
+
contract: number;
|
|
16210
18171
|
};
|
|
16211
18172
|
cookie?: never;
|
|
16212
18173
|
};
|
|
16213
|
-
requestBody
|
|
18174
|
+
requestBody: {
|
|
18175
|
+
content: {
|
|
18176
|
+
"application/json": components["schemas"]["RenewContractRequest"];
|
|
18177
|
+
};
|
|
18178
|
+
};
|
|
16214
18179
|
responses: {
|
|
18180
|
+
/** @description `ContractResource` */
|
|
16215
18181
|
200: {
|
|
16216
18182
|
headers: {
|
|
16217
18183
|
[name: string]: unknown;
|
|
16218
18184
|
};
|
|
16219
18185
|
content: {
|
|
16220
|
-
"
|
|
18186
|
+
"application/json": {
|
|
18187
|
+
data: components["schemas"]["ContractResource"];
|
|
18188
|
+
};
|
|
16221
18189
|
};
|
|
16222
18190
|
};
|
|
18191
|
+
403: components["responses"]["AuthorizationException"];
|
|
18192
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
16223
18193
|
422: components["responses"]["ValidationException"];
|
|
16224
18194
|
};
|
|
16225
18195
|
};
|
|
@@ -16859,6 +18829,126 @@ export interface operations {
|
|
|
16859
18829
|
};
|
|
16860
18830
|
};
|
|
16861
18831
|
};
|
|
18832
|
+
"invoice.sharedLink": {
|
|
18833
|
+
parameters: {
|
|
18834
|
+
query?: never;
|
|
18835
|
+
header?: never;
|
|
18836
|
+
path: {
|
|
18837
|
+
/** @description The invoice ID */
|
|
18838
|
+
invoice: number;
|
|
18839
|
+
};
|
|
18840
|
+
cookie?: never;
|
|
18841
|
+
};
|
|
18842
|
+
requestBody?: never;
|
|
18843
|
+
responses: {
|
|
18844
|
+
200: {
|
|
18845
|
+
headers: {
|
|
18846
|
+
[name: string]: unknown;
|
|
18847
|
+
};
|
|
18848
|
+
content: {
|
|
18849
|
+
"application/json": {
|
|
18850
|
+
data: {
|
|
18851
|
+
url: string;
|
|
18852
|
+
expires_at: string;
|
|
18853
|
+
};
|
|
18854
|
+
};
|
|
18855
|
+
};
|
|
18856
|
+
};
|
|
18857
|
+
403: components["responses"]["AuthorizationException"];
|
|
18858
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
18859
|
+
422: {
|
|
18860
|
+
headers: {
|
|
18861
|
+
[name: string]: unknown;
|
|
18862
|
+
};
|
|
18863
|
+
content: {
|
|
18864
|
+
"application/json": {
|
|
18865
|
+
/** @constant */
|
|
18866
|
+
message: "Un borrador no tiene enlace: publica la factura primero.";
|
|
18867
|
+
};
|
|
18868
|
+
};
|
|
18869
|
+
};
|
|
18870
|
+
};
|
|
18871
|
+
};
|
|
18872
|
+
"contract.sharedLink": {
|
|
18873
|
+
parameters: {
|
|
18874
|
+
query?: never;
|
|
18875
|
+
header?: never;
|
|
18876
|
+
path: {
|
|
18877
|
+
/** @description The contract ID */
|
|
18878
|
+
contract: number;
|
|
18879
|
+
};
|
|
18880
|
+
cookie?: never;
|
|
18881
|
+
};
|
|
18882
|
+
requestBody?: never;
|
|
18883
|
+
responses: {
|
|
18884
|
+
200: {
|
|
18885
|
+
headers: {
|
|
18886
|
+
[name: string]: unknown;
|
|
18887
|
+
};
|
|
18888
|
+
content: {
|
|
18889
|
+
"application/json": {
|
|
18890
|
+
data: {
|
|
18891
|
+
url: string;
|
|
18892
|
+
expires_at: string;
|
|
18893
|
+
};
|
|
18894
|
+
};
|
|
18895
|
+
};
|
|
18896
|
+
};
|
|
18897
|
+
403: components["responses"]["AuthorizationException"];
|
|
18898
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
18899
|
+
422: {
|
|
18900
|
+
headers: {
|
|
18901
|
+
[name: string]: unknown;
|
|
18902
|
+
};
|
|
18903
|
+
content: {
|
|
18904
|
+
"application/json": {
|
|
18905
|
+
/** @constant */
|
|
18906
|
+
message: "Un contrato sin activar no tiene enlace todavía.";
|
|
18907
|
+
};
|
|
18908
|
+
};
|
|
18909
|
+
};
|
|
18910
|
+
};
|
|
18911
|
+
};
|
|
18912
|
+
"estimate.sharedLink": {
|
|
18913
|
+
parameters: {
|
|
18914
|
+
query?: never;
|
|
18915
|
+
header?: never;
|
|
18916
|
+
path: {
|
|
18917
|
+
/** @description The estimate ID */
|
|
18918
|
+
estimate: number;
|
|
18919
|
+
};
|
|
18920
|
+
cookie?: never;
|
|
18921
|
+
};
|
|
18922
|
+
requestBody?: never;
|
|
18923
|
+
responses: {
|
|
18924
|
+
200: {
|
|
18925
|
+
headers: {
|
|
18926
|
+
[name: string]: unknown;
|
|
18927
|
+
};
|
|
18928
|
+
content: {
|
|
18929
|
+
"application/json": {
|
|
18930
|
+
data: {
|
|
18931
|
+
url: string;
|
|
18932
|
+
expires_at: string;
|
|
18933
|
+
};
|
|
18934
|
+
};
|
|
18935
|
+
};
|
|
18936
|
+
};
|
|
18937
|
+
403: components["responses"]["AuthorizationException"];
|
|
18938
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
18939
|
+
422: {
|
|
18940
|
+
headers: {
|
|
18941
|
+
[name: string]: unknown;
|
|
18942
|
+
};
|
|
18943
|
+
content: {
|
|
18944
|
+
"application/json": {
|
|
18945
|
+
/** @constant */
|
|
18946
|
+
message: "Un presupuesto sin número no tiene enlace todavía.";
|
|
18947
|
+
};
|
|
18948
|
+
};
|
|
18949
|
+
};
|
|
18950
|
+
};
|
|
18951
|
+
};
|
|
16862
18952
|
"expense.showReceipt": {
|
|
16863
18953
|
parameters: {
|
|
16864
18954
|
query?: never;
|
|
@@ -17720,7 +19810,140 @@ export interface operations {
|
|
|
17720
19810
|
query?: never;
|
|
17721
19811
|
header?: never;
|
|
17722
19812
|
path: {
|
|
17723
|
-
hash: string;
|
|
19813
|
+
hash: string;
|
|
19814
|
+
};
|
|
19815
|
+
cookie?: never;
|
|
19816
|
+
};
|
|
19817
|
+
requestBody?: never;
|
|
19818
|
+
responses: {
|
|
19819
|
+
200: {
|
|
19820
|
+
headers: {
|
|
19821
|
+
[name: string]: unknown;
|
|
19822
|
+
};
|
|
19823
|
+
content: {
|
|
19824
|
+
"application/pdf": Blob;
|
|
19825
|
+
};
|
|
19826
|
+
};
|
|
19827
|
+
403: components["responses"]["AuthorizationException"];
|
|
19828
|
+
};
|
|
19829
|
+
};
|
|
19830
|
+
"tax-types.index": {
|
|
19831
|
+
parameters: {
|
|
19832
|
+
query?: never;
|
|
19833
|
+
header?: never;
|
|
19834
|
+
path?: never;
|
|
19835
|
+
cookie?: never;
|
|
19836
|
+
};
|
|
19837
|
+
requestBody?: never;
|
|
19838
|
+
responses: {
|
|
19839
|
+
/** @description Array of `TaxTypeResource` */
|
|
19840
|
+
200: {
|
|
19841
|
+
headers: {
|
|
19842
|
+
[name: string]: unknown;
|
|
19843
|
+
};
|
|
19844
|
+
content: {
|
|
19845
|
+
"application/json": {
|
|
19846
|
+
data: components["schemas"]["TaxTypeResource"][];
|
|
19847
|
+
};
|
|
19848
|
+
};
|
|
19849
|
+
};
|
|
19850
|
+
403: components["responses"]["AuthorizationException"];
|
|
19851
|
+
};
|
|
19852
|
+
};
|
|
19853
|
+
"tax-types.store": {
|
|
19854
|
+
parameters: {
|
|
19855
|
+
query?: never;
|
|
19856
|
+
header?: never;
|
|
19857
|
+
path?: never;
|
|
19858
|
+
cookie?: never;
|
|
19859
|
+
};
|
|
19860
|
+
requestBody: {
|
|
19861
|
+
content: {
|
|
19862
|
+
"application/json": components["schemas"]["TaxTypeRequest"];
|
|
19863
|
+
};
|
|
19864
|
+
};
|
|
19865
|
+
responses: {
|
|
19866
|
+
/** @description `TaxTypeResource` */
|
|
19867
|
+
201: {
|
|
19868
|
+
headers: {
|
|
19869
|
+
[name: string]: unknown;
|
|
19870
|
+
};
|
|
19871
|
+
content: {
|
|
19872
|
+
"application/json": {
|
|
19873
|
+
data: components["schemas"]["TaxTypeResource"];
|
|
19874
|
+
};
|
|
19875
|
+
};
|
|
19876
|
+
};
|
|
19877
|
+
403: components["responses"]["AuthorizationException"];
|
|
19878
|
+
422: components["responses"]["ValidationException"];
|
|
19879
|
+
};
|
|
19880
|
+
};
|
|
19881
|
+
"tax-types.show": {
|
|
19882
|
+
parameters: {
|
|
19883
|
+
query?: never;
|
|
19884
|
+
header?: never;
|
|
19885
|
+
path: {
|
|
19886
|
+
/** @description The tax type ID */
|
|
19887
|
+
taxType: number;
|
|
19888
|
+
};
|
|
19889
|
+
cookie?: never;
|
|
19890
|
+
};
|
|
19891
|
+
requestBody?: never;
|
|
19892
|
+
responses: {
|
|
19893
|
+
/** @description `TaxTypeResource` */
|
|
19894
|
+
200: {
|
|
19895
|
+
headers: {
|
|
19896
|
+
[name: string]: unknown;
|
|
19897
|
+
};
|
|
19898
|
+
content: {
|
|
19899
|
+
"application/json": {
|
|
19900
|
+
data: components["schemas"]["TaxTypeResource"];
|
|
19901
|
+
};
|
|
19902
|
+
};
|
|
19903
|
+
};
|
|
19904
|
+
403: components["responses"]["AuthorizationException"];
|
|
19905
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
19906
|
+
};
|
|
19907
|
+
};
|
|
19908
|
+
"tax-types.update": {
|
|
19909
|
+
parameters: {
|
|
19910
|
+
query?: never;
|
|
19911
|
+
header?: never;
|
|
19912
|
+
path: {
|
|
19913
|
+
/** @description The tax type ID */
|
|
19914
|
+
taxType: number;
|
|
19915
|
+
};
|
|
19916
|
+
cookie?: never;
|
|
19917
|
+
};
|
|
19918
|
+
requestBody: {
|
|
19919
|
+
content: {
|
|
19920
|
+
"application/json": components["schemas"]["TaxTypeRequest"];
|
|
19921
|
+
};
|
|
19922
|
+
};
|
|
19923
|
+
responses: {
|
|
19924
|
+
/** @description `TaxTypeResource` */
|
|
19925
|
+
200: {
|
|
19926
|
+
headers: {
|
|
19927
|
+
[name: string]: unknown;
|
|
19928
|
+
};
|
|
19929
|
+
content: {
|
|
19930
|
+
"application/json": {
|
|
19931
|
+
data: components["schemas"]["TaxTypeResource"];
|
|
19932
|
+
};
|
|
19933
|
+
};
|
|
19934
|
+
};
|
|
19935
|
+
403: components["responses"]["AuthorizationException"];
|
|
19936
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
19937
|
+
422: components["responses"]["ValidationException"];
|
|
19938
|
+
};
|
|
19939
|
+
};
|
|
19940
|
+
"tax-types.destroy": {
|
|
19941
|
+
parameters: {
|
|
19942
|
+
query?: never;
|
|
19943
|
+
header?: never;
|
|
19944
|
+
path: {
|
|
19945
|
+
/** @description The tax type ID */
|
|
19946
|
+
taxType: number;
|
|
17724
19947
|
};
|
|
17725
19948
|
cookie?: never;
|
|
17726
19949
|
};
|
|
@@ -17731,133 +19954,235 @@ export interface operations {
|
|
|
17731
19954
|
[name: string]: unknown;
|
|
17732
19955
|
};
|
|
17733
19956
|
content: {
|
|
17734
|
-
"application/
|
|
19957
|
+
"application/json": {
|
|
19958
|
+
success: boolean;
|
|
19959
|
+
};
|
|
17735
19960
|
};
|
|
17736
19961
|
};
|
|
17737
19962
|
403: components["responses"]["AuthorizationException"];
|
|
19963
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
17738
19964
|
};
|
|
17739
19965
|
};
|
|
17740
|
-
"
|
|
19966
|
+
"taxTypes.toggleActive": {
|
|
17741
19967
|
parameters: {
|
|
17742
19968
|
query?: never;
|
|
17743
19969
|
header?: never;
|
|
17744
|
-
path
|
|
19970
|
+
path: {
|
|
19971
|
+
/** @description The tax type ID */
|
|
19972
|
+
taxType: number;
|
|
19973
|
+
};
|
|
17745
19974
|
cookie?: never;
|
|
17746
19975
|
};
|
|
17747
19976
|
requestBody?: never;
|
|
17748
19977
|
responses: {
|
|
17749
|
-
/** @description
|
|
19978
|
+
/** @description `TaxTypeResource` */
|
|
17750
19979
|
200: {
|
|
17751
19980
|
headers: {
|
|
17752
19981
|
[name: string]: unknown;
|
|
17753
19982
|
};
|
|
17754
19983
|
content: {
|
|
17755
19984
|
"application/json": {
|
|
17756
|
-
data: components["schemas"]["TaxTypeResource"]
|
|
19985
|
+
data: components["schemas"]["TaxTypeResource"];
|
|
17757
19986
|
};
|
|
17758
19987
|
};
|
|
17759
19988
|
};
|
|
17760
19989
|
403: components["responses"]["AuthorizationException"];
|
|
19990
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
17761
19991
|
};
|
|
17762
19992
|
};
|
|
17763
|
-
"
|
|
19993
|
+
"tenantDelegationCallback.delegatedIndex": {
|
|
17764
19994
|
parameters: {
|
|
17765
19995
|
query?: never;
|
|
17766
19996
|
header?: never;
|
|
17767
19997
|
path?: never;
|
|
17768
19998
|
cookie?: never;
|
|
17769
19999
|
};
|
|
17770
|
-
requestBody
|
|
17771
|
-
content: {
|
|
17772
|
-
"application/json": components["schemas"]["TaxTypeRequest"];
|
|
17773
|
-
};
|
|
17774
|
-
};
|
|
20000
|
+
requestBody?: never;
|
|
17775
20001
|
responses: {
|
|
17776
|
-
|
|
17777
|
-
201: {
|
|
20002
|
+
200: {
|
|
17778
20003
|
headers: {
|
|
17779
20004
|
[name: string]: unknown;
|
|
17780
20005
|
};
|
|
17781
20006
|
content: {
|
|
17782
20007
|
"application/json": {
|
|
17783
|
-
|
|
17784
|
-
|
|
20008
|
+
id: number;
|
|
20009
|
+
tenant_id: string;
|
|
20010
|
+
task_type: string | null;
|
|
20011
|
+
agent_skill: string | null;
|
|
20012
|
+
title: string;
|
|
20013
|
+
context: {
|
|
20014
|
+
[key: string]: unknown;
|
|
20015
|
+
} | null;
|
|
20016
|
+
delegation_status: string;
|
|
20017
|
+
delegated_at: string | null;
|
|
20018
|
+
hermes_kanban_id: string | null;
|
|
20019
|
+
result_data: {
|
|
20020
|
+
[key: string]: unknown;
|
|
20021
|
+
} | null;
|
|
20022
|
+
delegation_result: string | null;
|
|
20023
|
+
delegation_proposal: {
|
|
20024
|
+
[key: string]: unknown;
|
|
20025
|
+
} | null;
|
|
20026
|
+
delegation_proposal_status: string | null;
|
|
20027
|
+
delegation_proposed_at: string | null;
|
|
20028
|
+
delegation_applied_at: string | null;
|
|
20029
|
+
plane: string;
|
|
20030
|
+
origin_client_id: string | null;
|
|
20031
|
+
created_at: string | null;
|
|
20032
|
+
updated_at: string | null;
|
|
20033
|
+
write_effect: boolean;
|
|
20034
|
+
default_mode: string;
|
|
20035
|
+
verifiability_level: number | null;
|
|
20036
|
+
}[];
|
|
17785
20037
|
};
|
|
17786
20038
|
};
|
|
17787
|
-
403: components["responses"]["AuthorizationException"];
|
|
17788
|
-
422: components["responses"]["ValidationException"];
|
|
17789
20039
|
};
|
|
17790
20040
|
};
|
|
17791
|
-
"
|
|
20041
|
+
"tenantDelegationCallback.taskClaim": {
|
|
17792
20042
|
parameters: {
|
|
17793
20043
|
query?: never;
|
|
17794
20044
|
header?: never;
|
|
17795
20045
|
path: {
|
|
17796
|
-
|
|
17797
|
-
taxType: number;
|
|
20046
|
+
id: number;
|
|
17798
20047
|
};
|
|
17799
20048
|
cookie?: never;
|
|
17800
20049
|
};
|
|
17801
20050
|
requestBody?: never;
|
|
17802
20051
|
responses: {
|
|
17803
|
-
/** @description `TaxTypeResource` */
|
|
17804
20052
|
200: {
|
|
17805
20053
|
headers: {
|
|
17806
20054
|
[name: string]: unknown;
|
|
17807
20055
|
};
|
|
17808
20056
|
content: {
|
|
17809
20057
|
"application/json": {
|
|
17810
|
-
|
|
20058
|
+
id: number;
|
|
20059
|
+
tenant_id: string;
|
|
20060
|
+
task_type: string | null;
|
|
20061
|
+
agent_skill: string | null;
|
|
20062
|
+
title: string;
|
|
20063
|
+
context: {
|
|
20064
|
+
[key: string]: unknown;
|
|
20065
|
+
} | null;
|
|
20066
|
+
delegation_status: string;
|
|
20067
|
+
delegated_at: string | null;
|
|
20068
|
+
hermes_kanban_id: string | null;
|
|
20069
|
+
result_data: {
|
|
20070
|
+
[key: string]: unknown;
|
|
20071
|
+
} | null;
|
|
20072
|
+
delegation_result: string | null;
|
|
20073
|
+
delegation_proposal: {
|
|
20074
|
+
[key: string]: unknown;
|
|
20075
|
+
} | null;
|
|
20076
|
+
delegation_proposal_status: string | null;
|
|
20077
|
+
delegation_proposed_at: string | null;
|
|
20078
|
+
delegation_applied_at: string | null;
|
|
20079
|
+
plane: string;
|
|
20080
|
+
origin_client_id: string | null;
|
|
20081
|
+
created_at: string | null;
|
|
20082
|
+
updated_at: string | null;
|
|
17811
20083
|
};
|
|
17812
20084
|
};
|
|
17813
20085
|
};
|
|
17814
|
-
403: components["responses"]["AuthorizationException"];
|
|
17815
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
17816
20086
|
};
|
|
17817
20087
|
};
|
|
17818
|
-
"
|
|
20088
|
+
"tenantDelegationCallback.taskPropose": {
|
|
17819
20089
|
parameters: {
|
|
17820
20090
|
query?: never;
|
|
17821
20091
|
header?: never;
|
|
17822
20092
|
path: {
|
|
17823
|
-
|
|
17824
|
-
taxType: number;
|
|
20093
|
+
id: number;
|
|
17825
20094
|
};
|
|
17826
20095
|
cookie?: never;
|
|
17827
20096
|
};
|
|
17828
20097
|
requestBody: {
|
|
17829
20098
|
content: {
|
|
17830
|
-
"application/json":
|
|
20099
|
+
"application/json": {
|
|
20100
|
+
proposal: {
|
|
20101
|
+
schema_version?: number | null;
|
|
20102
|
+
/** @enum {string|null} */
|
|
20103
|
+
mode?: "applied" | "preview" | null;
|
|
20104
|
+
agent_trace_id?: string | null;
|
|
20105
|
+
summary: string;
|
|
20106
|
+
changes?: {
|
|
20107
|
+
label: string;
|
|
20108
|
+
type?: string | null;
|
|
20109
|
+
action?: string | null;
|
|
20110
|
+
link?: string | null;
|
|
20111
|
+
record_id?: string | null;
|
|
20112
|
+
apply?: string[] | null;
|
|
20113
|
+
}[] | null;
|
|
20114
|
+
evals?: {
|
|
20115
|
+
label: string;
|
|
20116
|
+
pass: boolean;
|
|
20117
|
+
detail?: string | null;
|
|
20118
|
+
nivel?: number | null;
|
|
20119
|
+
cuenta_para_sello?: boolean | null;
|
|
20120
|
+
}[] | null;
|
|
20121
|
+
verifiability?: {
|
|
20122
|
+
nivel?: number | null;
|
|
20123
|
+
cuenta_para_sello?: boolean | null;
|
|
20124
|
+
/** @enum {string|null} */
|
|
20125
|
+
sello?: "pass" | "fail" | "n/a" | null;
|
|
20126
|
+
} | null;
|
|
20127
|
+
};
|
|
20128
|
+
};
|
|
17831
20129
|
};
|
|
17832
20130
|
};
|
|
17833
20131
|
responses: {
|
|
17834
|
-
/** @description `TaxTypeResource` */
|
|
17835
20132
|
200: {
|
|
17836
20133
|
headers: {
|
|
17837
20134
|
[name: string]: unknown;
|
|
17838
20135
|
};
|
|
17839
20136
|
content: {
|
|
17840
20137
|
"application/json": {
|
|
17841
|
-
|
|
20138
|
+
id: number;
|
|
20139
|
+
tenant_id: string;
|
|
20140
|
+
task_type: string | null;
|
|
20141
|
+
agent_skill: string | null;
|
|
20142
|
+
title: string;
|
|
20143
|
+
context: {
|
|
20144
|
+
[key: string]: unknown;
|
|
20145
|
+
} | null;
|
|
20146
|
+
delegation_status: string;
|
|
20147
|
+
delegated_at: string | null;
|
|
20148
|
+
hermes_kanban_id: string | null;
|
|
20149
|
+
result_data: {
|
|
20150
|
+
[key: string]: unknown;
|
|
20151
|
+
} | null;
|
|
20152
|
+
delegation_result: string | null;
|
|
20153
|
+
delegation_proposal: {
|
|
20154
|
+
[key: string]: unknown;
|
|
20155
|
+
} | null;
|
|
20156
|
+
delegation_proposal_status: string | null;
|
|
20157
|
+
delegation_proposed_at: string | null;
|
|
20158
|
+
delegation_applied_at: string | null;
|
|
20159
|
+
plane: string;
|
|
20160
|
+
origin_client_id: string | null;
|
|
20161
|
+
created_at: string | null;
|
|
20162
|
+
updated_at: string | null;
|
|
17842
20163
|
};
|
|
17843
20164
|
};
|
|
17844
20165
|
};
|
|
17845
|
-
403: components["responses"]["AuthorizationException"];
|
|
17846
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
17847
20166
|
422: components["responses"]["ValidationException"];
|
|
17848
20167
|
};
|
|
17849
20168
|
};
|
|
17850
|
-
"
|
|
20169
|
+
"tenantDelegationCallback.taskComplete": {
|
|
17851
20170
|
parameters: {
|
|
17852
20171
|
query?: never;
|
|
17853
20172
|
header?: never;
|
|
17854
20173
|
path: {
|
|
17855
|
-
|
|
17856
|
-
taxType: number;
|
|
20174
|
+
id: number;
|
|
17857
20175
|
};
|
|
17858
20176
|
cookie?: never;
|
|
17859
20177
|
};
|
|
17860
|
-
requestBody?:
|
|
20178
|
+
requestBody?: {
|
|
20179
|
+
content: {
|
|
20180
|
+
"application/json": {
|
|
20181
|
+
result?: string | null;
|
|
20182
|
+
result_data?: string[] | null;
|
|
20183
|
+
};
|
|
20184
|
+
};
|
|
20185
|
+
};
|
|
17861
20186
|
responses: {
|
|
17862
20187
|
200: {
|
|
17863
20188
|
headers: {
|
|
@@ -17865,39 +20190,90 @@ export interface operations {
|
|
|
17865
20190
|
};
|
|
17866
20191
|
content: {
|
|
17867
20192
|
"application/json": {
|
|
17868
|
-
|
|
20193
|
+
id: number;
|
|
20194
|
+
tenant_id: string;
|
|
20195
|
+
task_type: string | null;
|
|
20196
|
+
agent_skill: string | null;
|
|
20197
|
+
title: string;
|
|
20198
|
+
context: {
|
|
20199
|
+
[key: string]: unknown;
|
|
20200
|
+
} | null;
|
|
20201
|
+
delegation_status: string;
|
|
20202
|
+
delegated_at: string | null;
|
|
20203
|
+
hermes_kanban_id: string | null;
|
|
20204
|
+
result_data: {
|
|
20205
|
+
[key: string]: unknown;
|
|
20206
|
+
} | null;
|
|
20207
|
+
delegation_result: string | null;
|
|
20208
|
+
delegation_proposal: {
|
|
20209
|
+
[key: string]: unknown;
|
|
20210
|
+
} | null;
|
|
20211
|
+
delegation_proposal_status: string | null;
|
|
20212
|
+
delegation_proposed_at: string | null;
|
|
20213
|
+
delegation_applied_at: string | null;
|
|
20214
|
+
plane: string;
|
|
20215
|
+
origin_client_id: string | null;
|
|
20216
|
+
created_at: string | null;
|
|
20217
|
+
updated_at: string | null;
|
|
17869
20218
|
};
|
|
17870
20219
|
};
|
|
17871
20220
|
};
|
|
17872
|
-
|
|
17873
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
20221
|
+
422: components["responses"]["ValidationException"];
|
|
17874
20222
|
};
|
|
17875
20223
|
};
|
|
17876
|
-
"
|
|
20224
|
+
"tenantDelegationCallback.taskFail": {
|
|
17877
20225
|
parameters: {
|
|
17878
20226
|
query?: never;
|
|
17879
20227
|
header?: never;
|
|
17880
20228
|
path: {
|
|
17881
|
-
|
|
17882
|
-
taxType: number;
|
|
20229
|
+
id: number;
|
|
17883
20230
|
};
|
|
17884
20231
|
cookie?: never;
|
|
17885
20232
|
};
|
|
17886
|
-
requestBody?:
|
|
20233
|
+
requestBody?: {
|
|
20234
|
+
content: {
|
|
20235
|
+
"application/json": {
|
|
20236
|
+
result?: string | null;
|
|
20237
|
+
result_data?: string[] | null;
|
|
20238
|
+
};
|
|
20239
|
+
};
|
|
20240
|
+
};
|
|
17887
20241
|
responses: {
|
|
17888
|
-
/** @description `TaxTypeResource` */
|
|
17889
20242
|
200: {
|
|
17890
20243
|
headers: {
|
|
17891
20244
|
[name: string]: unknown;
|
|
17892
20245
|
};
|
|
17893
20246
|
content: {
|
|
17894
20247
|
"application/json": {
|
|
17895
|
-
|
|
20248
|
+
id: number;
|
|
20249
|
+
tenant_id: string;
|
|
20250
|
+
task_type: string | null;
|
|
20251
|
+
agent_skill: string | null;
|
|
20252
|
+
title: string;
|
|
20253
|
+
context: {
|
|
20254
|
+
[key: string]: unknown;
|
|
20255
|
+
} | null;
|
|
20256
|
+
delegation_status: string;
|
|
20257
|
+
delegated_at: string | null;
|
|
20258
|
+
hermes_kanban_id: string | null;
|
|
20259
|
+
result_data: {
|
|
20260
|
+
[key: string]: unknown;
|
|
20261
|
+
} | null;
|
|
20262
|
+
delegation_result: string | null;
|
|
20263
|
+
delegation_proposal: {
|
|
20264
|
+
[key: string]: unknown;
|
|
20265
|
+
} | null;
|
|
20266
|
+
delegation_proposal_status: string | null;
|
|
20267
|
+
delegation_proposed_at: string | null;
|
|
20268
|
+
delegation_applied_at: string | null;
|
|
20269
|
+
plane: string;
|
|
20270
|
+
origin_client_id: string | null;
|
|
20271
|
+
created_at: string | null;
|
|
20272
|
+
updated_at: string | null;
|
|
17896
20273
|
};
|
|
17897
20274
|
};
|
|
17898
20275
|
};
|
|
17899
|
-
|
|
17900
|
-
404: components["responses"]["ModelNotFoundException"];
|
|
20276
|
+
422: components["responses"]["ValidationException"];
|
|
17901
20277
|
};
|
|
17902
20278
|
};
|
|
17903
20279
|
"tenantModules.index": {
|
|
@@ -21692,6 +24068,168 @@ export interface operations {
|
|
|
21692
24068
|
};
|
|
21693
24069
|
};
|
|
21694
24070
|
};
|
|
24071
|
+
"veriFactuSettings.index": {
|
|
24072
|
+
parameters: {
|
|
24073
|
+
query?: never;
|
|
24074
|
+
header?: never;
|
|
24075
|
+
path?: never;
|
|
24076
|
+
cookie?: never;
|
|
24077
|
+
};
|
|
24078
|
+
requestBody?: never;
|
|
24079
|
+
responses: {
|
|
24080
|
+
200: {
|
|
24081
|
+
headers: {
|
|
24082
|
+
[name: string]: unknown;
|
|
24083
|
+
};
|
|
24084
|
+
content: {
|
|
24085
|
+
"application/json": {
|
|
24086
|
+
data: unknown[] | {
|
|
24087
|
+
id: null;
|
|
24088
|
+
nif: string;
|
|
24089
|
+
name: string;
|
|
24090
|
+
certificate_expires_at: null;
|
|
24091
|
+
is_production: boolean;
|
|
24092
|
+
use_representative: boolean;
|
|
24093
|
+
representative_nif: null;
|
|
24094
|
+
representative_name: null;
|
|
24095
|
+
/** @constant */
|
|
24096
|
+
authorization_status: "none";
|
|
24097
|
+
};
|
|
24098
|
+
};
|
|
24099
|
+
};
|
|
24100
|
+
};
|
|
24101
|
+
500: {
|
|
24102
|
+
headers: {
|
|
24103
|
+
[name: string]: unknown;
|
|
24104
|
+
};
|
|
24105
|
+
content: {
|
|
24106
|
+
"application/json": {
|
|
24107
|
+
error: string;
|
|
24108
|
+
};
|
|
24109
|
+
};
|
|
24110
|
+
};
|
|
24111
|
+
};
|
|
24112
|
+
};
|
|
24113
|
+
"veriFactuSettings.update": {
|
|
24114
|
+
parameters: {
|
|
24115
|
+
query?: never;
|
|
24116
|
+
header?: never;
|
|
24117
|
+
path?: never;
|
|
24118
|
+
cookie?: never;
|
|
24119
|
+
};
|
|
24120
|
+
requestBody?: {
|
|
24121
|
+
content: {
|
|
24122
|
+
"application/json": {
|
|
24123
|
+
is_production?: boolean;
|
|
24124
|
+
use_representative?: boolean;
|
|
24125
|
+
representative_nif?: string | null;
|
|
24126
|
+
representative_name?: string | null;
|
|
24127
|
+
};
|
|
24128
|
+
};
|
|
24129
|
+
};
|
|
24130
|
+
responses: {
|
|
24131
|
+
/**
|
|
24132
|
+
* @description Sin contribuyente y sin datos para crearlo (NIF o nombre): local
|
|
24133
|
+
* hasta que existan.
|
|
24134
|
+
*/
|
|
24135
|
+
200: {
|
|
24136
|
+
headers: {
|
|
24137
|
+
[name: string]: unknown;
|
|
24138
|
+
};
|
|
24139
|
+
content: {
|
|
24140
|
+
"application/json": {
|
|
24141
|
+
/** @constant */
|
|
24142
|
+
message: "Configuración guardada localmente. Se sincronizará con VeriFactu cuando se configure el contribuyente.";
|
|
24143
|
+
data: unknown[];
|
|
24144
|
+
} | {
|
|
24145
|
+
/** @constant */
|
|
24146
|
+
message: "Configuración actualizada correctamente.";
|
|
24147
|
+
data: unknown[];
|
|
24148
|
+
};
|
|
24149
|
+
};
|
|
24150
|
+
};
|
|
24151
|
+
422: components["responses"]["ValidationException"];
|
|
24152
|
+
502: {
|
|
24153
|
+
headers: {
|
|
24154
|
+
[name: string]: unknown;
|
|
24155
|
+
};
|
|
24156
|
+
content: {
|
|
24157
|
+
"application/json": {
|
|
24158
|
+
error: string;
|
|
24159
|
+
};
|
|
24160
|
+
};
|
|
24161
|
+
};
|
|
24162
|
+
};
|
|
24163
|
+
};
|
|
24164
|
+
"veriFactuSettings.storeTaxpayer": {
|
|
24165
|
+
parameters: {
|
|
24166
|
+
query?: never;
|
|
24167
|
+
header?: never;
|
|
24168
|
+
path?: never;
|
|
24169
|
+
cookie?: never;
|
|
24170
|
+
};
|
|
24171
|
+
requestBody?: never;
|
|
24172
|
+
responses: {
|
|
24173
|
+
200: {
|
|
24174
|
+
headers: {
|
|
24175
|
+
[name: string]: unknown;
|
|
24176
|
+
};
|
|
24177
|
+
content: {
|
|
24178
|
+
"application/json": {
|
|
24179
|
+
data: {
|
|
24180
|
+
[key: string]: unknown;
|
|
24181
|
+
} | null | unknown[];
|
|
24182
|
+
};
|
|
24183
|
+
};
|
|
24184
|
+
};
|
|
24185
|
+
422: {
|
|
24186
|
+
headers: {
|
|
24187
|
+
[name: string]: unknown;
|
|
24188
|
+
};
|
|
24189
|
+
content: {
|
|
24190
|
+
"application/json": {
|
|
24191
|
+
error: string;
|
|
24192
|
+
};
|
|
24193
|
+
};
|
|
24194
|
+
};
|
|
24195
|
+
};
|
|
24196
|
+
};
|
|
24197
|
+
"veriFactuSettings.uploadCertificate": {
|
|
24198
|
+
parameters: {
|
|
24199
|
+
query?: never;
|
|
24200
|
+
header?: never;
|
|
24201
|
+
path?: never;
|
|
24202
|
+
cookie?: never;
|
|
24203
|
+
};
|
|
24204
|
+
requestBody: {
|
|
24205
|
+
content: {
|
|
24206
|
+
"multipart/form-data": {
|
|
24207
|
+
/**
|
|
24208
|
+
* Format: binary
|
|
24209
|
+
* @description Maximum file size: 5120 kilobytes.
|
|
24210
|
+
*/
|
|
24211
|
+
certificate: Blob;
|
|
24212
|
+
/** @description 5MB max */
|
|
24213
|
+
password: string;
|
|
24214
|
+
};
|
|
24215
|
+
};
|
|
24216
|
+
};
|
|
24217
|
+
responses: {
|
|
24218
|
+
200: {
|
|
24219
|
+
headers: {
|
|
24220
|
+
[name: string]: unknown;
|
|
24221
|
+
};
|
|
24222
|
+
content: {
|
|
24223
|
+
"application/json": {
|
|
24224
|
+
/** @constant */
|
|
24225
|
+
message: "Certificado subido correctamente.";
|
|
24226
|
+
data: unknown[];
|
|
24227
|
+
};
|
|
24228
|
+
};
|
|
24229
|
+
};
|
|
24230
|
+
422: components["responses"]["ValidationException"];
|
|
24231
|
+
};
|
|
24232
|
+
};
|
|
21695
24233
|
"webhookEndpoints.index": {
|
|
21696
24234
|
parameters: {
|
|
21697
24235
|
query?: never;
|