@pimia/sdk 0.8.0 → 0.10.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 +422 -99
- package/dist/client.d.ts +18 -18
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -0
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -167,7 +167,7 @@ export interface paths {
|
|
|
167
167
|
* `group_by=customer` añade by_customer; con `group_by=category`, by_category.
|
|
168
168
|
* Lo consumen las tools MCP de informes (invoice-shelf-mcp).
|
|
169
169
|
*
|
|
170
|
-
* Importes en
|
|
170
|
+
* Importes en subunidades enteras de la moneda, como el resto de la API.
|
|
171
171
|
*
|
|
172
172
|
* QUÉ FACTURAS CUENTAN, que es la clase de cifra que un integrador no puede
|
|
173
173
|
* verificar por su cuenta y que hasta el 2026-08-24 el contrato no decía:
|
|
@@ -375,7 +375,13 @@ export interface paths {
|
|
|
375
375
|
path?: never;
|
|
376
376
|
cookie?: never;
|
|
377
377
|
};
|
|
378
|
-
/**
|
|
378
|
+
/**
|
|
379
|
+
* Los formatos de CSV que el importador reconoce, por nombre
|
|
380
|
+
* @description Son las claves de `CsvBankParser::PRESETS` —cadenas— y es lo que se manda
|
|
381
|
+
* en `preset` al importar un extracto. El `@response` está porque
|
|
382
|
+
* `array_keys()` devuelve un `array` sin más, y el contrato publicaba
|
|
383
|
+
* `data: unknown[]`: un cliente generado no veía siquiera que eran textos.
|
|
384
|
+
*/
|
|
379
385
|
get: operations["bankImport.presets"];
|
|
380
386
|
put?: never;
|
|
381
387
|
post?: never;
|
|
@@ -576,7 +582,6 @@ export interface paths {
|
|
|
576
582
|
/**
|
|
577
583
|
* Update the Admin profile.
|
|
578
584
|
* Includes name, email and (or) password
|
|
579
|
-
* @description **No disponible para integradores.** Exige `admin:write`, que el Authorization Server de Pimia no emite: la acción la realiza el dueño desde su panel y un token de partner recibe `403`. Aparece en el contrato para que el hueco sea explícito, no para que se llame.
|
|
580
585
|
*/
|
|
581
586
|
put: operations["company.updateProfile"];
|
|
582
587
|
post?: never;
|
|
@@ -674,6 +679,95 @@ export interface paths {
|
|
|
674
679
|
patch?: never;
|
|
675
680
|
trace?: never;
|
|
676
681
|
};
|
|
682
|
+
"/settings/connected-apps": {
|
|
683
|
+
parameters: {
|
|
684
|
+
query?: never;
|
|
685
|
+
header?: never;
|
|
686
|
+
path?: never;
|
|
687
|
+
cookie?: never;
|
|
688
|
+
};
|
|
689
|
+
/**
|
|
690
|
+
* Apps a las que este usuario ha autorizado el acceso a su cuenta
|
|
691
|
+
* @description **Reservada al panel de Pimia.** Exige `admin:read`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir ese scope —se le rechaza en el registro y no se le anuncia— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
|
|
692
|
+
*
|
|
693
|
+
* `credentials` son las sesiones vivas del grant: una por dispositivo o
|
|
694
|
+
* proceso que completó una ceremonia OAuth. `connected_at` es el instante
|
|
695
|
+
* de ESA ceremonia y no el de la última renovación, que es lo que hace que
|
|
696
|
+
* la pantalla pueda decir «conectado desde el 25» de una sesión que rota su
|
|
697
|
+
* refresh cada día.
|
|
698
|
+
*
|
|
699
|
+
* `last_used_at` sale del PAT emparejado y no del refresh: el grant se toca
|
|
700
|
+
* en canje/refresh —una vez al día— y el PAT en CADA petición, así que es
|
|
701
|
+
* el único que sabe si esa sesión sigue trabajando. Sale null mientras la
|
|
702
|
+
* credencial no haya hecho ninguna petición todavía.
|
|
703
|
+
*
|
|
704
|
+
* `active_tokens` se queda como estaba (cuenta los PAT del client, rotados
|
|
705
|
+
* aún no caducados incluidos) para no romper a quien ya lo lee; lo que
|
|
706
|
+
* cuenta dispositivos es `credentials`.
|
|
707
|
+
*/
|
|
708
|
+
get: operations["connectedApps.index"];
|
|
709
|
+
put?: never;
|
|
710
|
+
post?: never;
|
|
711
|
+
delete?: never;
|
|
712
|
+
options?: never;
|
|
713
|
+
head?: never;
|
|
714
|
+
patch?: never;
|
|
715
|
+
trace?: never;
|
|
716
|
+
};
|
|
717
|
+
"/settings/connected-apps/credentials/{credentialId}": {
|
|
718
|
+
parameters: {
|
|
719
|
+
query?: never;
|
|
720
|
+
header?: never;
|
|
721
|
+
path?: never;
|
|
722
|
+
cookie?: never;
|
|
723
|
+
};
|
|
724
|
+
get?: never;
|
|
725
|
+
put?: never;
|
|
726
|
+
post?: never;
|
|
727
|
+
/**
|
|
728
|
+
* Cierra UNA credencial —un dispositivo— sin tocar las demás ni el grant
|
|
729
|
+
* @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í.
|
|
730
|
+
*
|
|
731
|
+
* La app sigue conectada desde donde siga viva; para retirarle el acceso
|
|
732
|
+
* entero está `destroy`. Por eso esta operación no emite `app.revoked`: al
|
|
733
|
+
* integrador no le ha caído la puerta, se le ha caído una sesión.
|
|
734
|
+
*
|
|
735
|
+
* El grant sale de la propia credencial y se comprueba con el mismo filtro
|
|
736
|
+
* que el resto de la pantalla (este usuario, este tenant, sin revocar), así
|
|
737
|
+
* que la ruta no lo nombra: no hay forma de pedir un par descuadrado.
|
|
738
|
+
*
|
|
739
|
+
* 404 cuando la credencial no existe, no es de este usuario o ya no está
|
|
740
|
+
* viva (rotada, revocada o caducada): quien cierra estaba mirando una lista
|
|
741
|
+
* de hace un momento y lo que necesita es recargarla, no un error distinto
|
|
742
|
+
* por cada motivo.
|
|
743
|
+
*/
|
|
744
|
+
delete: operations["connectedApps.destroyCredential"];
|
|
745
|
+
options?: never;
|
|
746
|
+
head?: never;
|
|
747
|
+
patch?: never;
|
|
748
|
+
trace?: never;
|
|
749
|
+
};
|
|
750
|
+
"/settings/connected-apps/{authorizationId}": {
|
|
751
|
+
parameters: {
|
|
752
|
+
query?: never;
|
|
753
|
+
header?: never;
|
|
754
|
+
path?: never;
|
|
755
|
+
cookie?: never;
|
|
756
|
+
};
|
|
757
|
+
get?: never;
|
|
758
|
+
put?: never;
|
|
759
|
+
post?: never;
|
|
760
|
+
/**
|
|
761
|
+
* Retira el acceso de la app entera: cae el grant, sus refresh tokens y los
|
|
762
|
+
* PAT que esa app acuñó para este usuario. Todas sus credenciales con él
|
|
763
|
+
* @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í.
|
|
764
|
+
*/
|
|
765
|
+
delete: operations["connectedApps.destroy"];
|
|
766
|
+
options?: never;
|
|
767
|
+
head?: never;
|
|
768
|
+
patch?: never;
|
|
769
|
+
trace?: never;
|
|
770
|
+
};
|
|
677
771
|
"/contacts": {
|
|
678
772
|
parameters: {
|
|
679
773
|
query?: never;
|
|
@@ -1286,6 +1380,36 @@ export interface paths {
|
|
|
1286
1380
|
patch?: never;
|
|
1287
1381
|
trace?: never;
|
|
1288
1382
|
};
|
|
1383
|
+
"/expenses/{expense}/receipt": {
|
|
1384
|
+
parameters: {
|
|
1385
|
+
query?: never;
|
|
1386
|
+
header?: never;
|
|
1387
|
+
path?: never;
|
|
1388
|
+
cookie?: never;
|
|
1389
|
+
};
|
|
1390
|
+
get?: never;
|
|
1391
|
+
put?: never;
|
|
1392
|
+
/**
|
|
1393
|
+
* Sube o reemplaza el justificante de un gasto
|
|
1394
|
+
* @description Es la mitad que faltaba: hasta aquí, adjuntar un papel a un gasto que ya
|
|
1395
|
+
* existe **no se podía hacer desde ningún cliente del contrato**. El `PUT`
|
|
1396
|
+
* lo publicaba como multiparte y no puede cumplirlo (ver `update()`), y el
|
|
1397
|
+
* otro camino —`POST /expenses/{expense}/upload/receipts`— pide base64 y
|
|
1398
|
+
* solo acepta `gif`, `jpg` y `png`, así que rechaza el PDF que el propio
|
|
1399
|
+
* alta sí admite (#498).
|
|
1400
|
+
*
|
|
1401
|
+
* Misma forma que `receivedInvoices.uploadDocument`, que es el precedente
|
|
1402
|
+
* de la casa para esto: `POST`, multiparte, se limpia la colección antes de
|
|
1403
|
+
* añadir —así no se acumulan huérfanos en cada resubida— y se devuelve el
|
|
1404
|
+
* recurso.
|
|
1405
|
+
*/
|
|
1406
|
+
post: operations["expenses.uploadReceipt"];
|
|
1407
|
+
delete?: never;
|
|
1408
|
+
options?: never;
|
|
1409
|
+
head?: never;
|
|
1410
|
+
patch?: never;
|
|
1411
|
+
trace?: never;
|
|
1412
|
+
};
|
|
1289
1413
|
"/expenses/delete": {
|
|
1290
1414
|
parameters: {
|
|
1291
1415
|
query?: never;
|
|
@@ -3167,7 +3291,23 @@ export interface paths {
|
|
|
3167
3291
|
path?: never;
|
|
3168
3292
|
cookie?: never;
|
|
3169
3293
|
};
|
|
3170
|
-
/**
|
|
3294
|
+
/**
|
|
3295
|
+
* Movimientos bancarios, filtrados y paginados
|
|
3296
|
+
* @description Los cinco filtros y el tamaño de página se VALIDAN, y por eso están en el
|
|
3297
|
+
* contrato: el generador no ve un `$request->bank_account_id` —acceso
|
|
3298
|
+
* dinámico— y hasta el 2026-08-25 esta operación publicaba `parameters: []`
|
|
3299
|
+
* mientras el controlador leía seis. Un integrador leyendo el spec no podía
|
|
3300
|
+
* saber que se puede filtrar.
|
|
3301
|
+
*
|
|
3302
|
+
* ⚠️ Filtrar por un `status` o un `type` que no existe ya no devuelve la
|
|
3303
|
+
* lista entera sin filtrar: da 422. Es el mismo criterio que el resto de la
|
|
3304
|
+
* API y lo que evita el «pedí los pendientes y me los dio todos».
|
|
3305
|
+
*
|
|
3306
|
+
* La respuesta es el paginador de Laravel PELADO (`data`, `current_page`,
|
|
3307
|
+
* `total`…), no el sobre `{data, meta}` del resto de la casa. Cada fila
|
|
3308
|
+
* lleva además `bank_account` y `reconciliations[]`, que el listado carga
|
|
3309
|
+
* siempre.
|
|
3310
|
+
*/
|
|
3171
3311
|
get: operations["reconciliation.transactions"];
|
|
3172
3312
|
put?: never;
|
|
3173
3313
|
post?: never;
|
|
@@ -3184,7 +3324,20 @@ export interface paths {
|
|
|
3184
3324
|
path?: never;
|
|
3185
3325
|
cookie?: never;
|
|
3186
3326
|
};
|
|
3187
|
-
/**
|
|
3327
|
+
/**
|
|
3328
|
+
* Recuento de movimientos por estado, y los dos totales
|
|
3329
|
+
* @description Los cuatro recuentos salen de un `count()` y son ENTEROS. Se declaran a
|
|
3330
|
+
* mano porque Scramble tipa bien `Builder::count()` pero no sabe resolver
|
|
3331
|
+
* `(clone $query)->pending()`: el scope local devuelve `mixed` y degradaba
|
|
3332
|
+
* los cuatro a `string`, mientras `total` —que no pasa por un scope— salía
|
|
3333
|
+
* `integer` en la misma respuesta. Cuatro cadenas y un número para el mismo
|
|
3334
|
+
* tipo de dato.
|
|
3335
|
+
*
|
|
3336
|
+
* ⚠️ `total_credits` y `total_debits` SÍ son cadenas, y a propósito: son
|
|
3337
|
+
* `SUM(amount)` sobre una columna `decimal(15,2)` que PostgreSQL entrega
|
|
3338
|
+
* como texto, y van en la UNIDAD MAYOR de la moneda, con decimales, como el
|
|
3339
|
+
* resto de la banca —no en subunidades enteras como el resto de la API.
|
|
3340
|
+
*/
|
|
3188
3341
|
get: operations["reconciliation.summary"];
|
|
3189
3342
|
put?: never;
|
|
3190
3343
|
post?: never;
|
|
@@ -3224,10 +3377,10 @@ export interface paths {
|
|
|
3224
3377
|
* ordenados por `score` descendente (importe, proximidad de fecha,
|
|
3225
3378
|
* referencia y nombre del cliente).
|
|
3226
3379
|
*
|
|
3227
|
-
* **`amount` va en
|
|
3228
|
-
* importe de documento en esta API. No lo confundas con
|
|
3229
|
-
* `bank_transactions.amount`, que sí va en
|
|
3230
|
-
* reflejo de un extracto bancario. `number` es `null` en los borradores,
|
|
3380
|
+
* **`amount` va en subunidades enteras**, como el `total` del que sale y como
|
|
3381
|
+
* todo importe de documento en esta API. No lo confundas con
|
|
3382
|
+
* `bank_transactions.amount`, que sí va en la unidad mayor con decimales por
|
|
3383
|
+
* ser el reflejo de un extracto bancario. `number` es `null` en los borradores,
|
|
3231
3384
|
* que nacen sin numerar: el identificador estable es `model.id`.
|
|
3232
3385
|
*/
|
|
3233
3386
|
get: operations["reconciliation.suggestions"];
|
|
@@ -4031,7 +4184,7 @@ export interface paths {
|
|
|
4031
4184
|
put?: never;
|
|
4032
4185
|
/**
|
|
4033
4186
|
* POST tasks/{task}/delegate — delega esta tarea CRM a su agente Pim
|
|
4034
|
-
* @description **
|
|
4187
|
+
* @description **Reservada al panel de Pimia.** Exige `crm:write`, `delegation:write`, que el Authorization Server emite SOLO al client de primera parte: un client de integrador no puede pedir esos scopes —se le rechazan en el registro y no se le anuncian— y con cualquier otro token la llamada recibe `403`. Está en el contrato porque es el panel web de Pimia quien la consume, y sus tipos salen de aquí.
|
|
4035
4188
|
*
|
|
4036
4189
|
* Reusa el plano async `delegated_tasks` (el mismo que ya cierra el round-trip
|
|
4037
4190
|
* delegar→agente→callback→sello): compone un context rico desde la tarea (título,
|
|
@@ -5046,7 +5199,7 @@ export interface components {
|
|
|
5046
5199
|
name: string;
|
|
5047
5200
|
iban: string | null;
|
|
5048
5201
|
bank_name: string | null;
|
|
5049
|
-
/** @description
|
|
5202
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5050
5203
|
opening_balance: string;
|
|
5051
5204
|
currency_code: string;
|
|
5052
5205
|
enabled: boolean;
|
|
@@ -5056,7 +5209,7 @@ export interface components {
|
|
|
5056
5209
|
updated_at: string | null;
|
|
5057
5210
|
/** Format: date-time */
|
|
5058
5211
|
deleted_at: string | null;
|
|
5059
|
-
/** @description
|
|
5212
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5060
5213
|
balance: string;
|
|
5061
5214
|
};
|
|
5062
5215
|
/** BankImport */
|
|
@@ -5085,13 +5238,21 @@ export interface components {
|
|
|
5085
5238
|
transaction_date: string;
|
|
5086
5239
|
/** Format: date-time */
|
|
5087
5240
|
value_date: string | null;
|
|
5088
|
-
/** @description
|
|
5241
|
+
/** @description En la UNIDAD MAYOR de la moneda de la cuenta, con decimales (`2322.11` son 2.322,11 de la moneda que declare su `currency_code`), a diferencia del resto de la API, que cuenta el dinero en SUBUNIDADES enteras (céntimos, en una moneda de dos decimales). La banca es la excepción porque es lo que trae un extracto bancario: redondearlo a la subunidad perdería los decimales del apunte. La conciliación convierte al comparar con facturas y gastos. */
|
|
5089
5242
|
amount: string;
|
|
5090
|
-
|
|
5243
|
+
/**
|
|
5244
|
+
* @description Signo del apunte tal y como lo trae el extracto: `credit` entra dinero, `debit` sale. El importe va siempre en positivo, así que el signo es esto.
|
|
5245
|
+
* @enum {string}
|
|
5246
|
+
*/
|
|
5247
|
+
type: "credit" | "debit";
|
|
5091
5248
|
concept: string | null;
|
|
5092
5249
|
reference: string | null;
|
|
5093
5250
|
raw_data: string | null;
|
|
5094
|
-
|
|
5251
|
+
/**
|
|
5252
|
+
* @description Punto del ciclo de conciliación en el que está el apunte: `pending` recién importado y sin cruzar, `matched` propuesto contra un documento (por `POST /banking/transactions/{id}/match` o por el automático), `reconciled` confirmado, `ignored` apartado a mano porque no corresponde a ninguno.
|
|
5253
|
+
* @enum {string}
|
|
5254
|
+
*/
|
|
5255
|
+
status: "pending" | "matched" | "reconciled" | "ignored";
|
|
5095
5256
|
import_batch: string | null;
|
|
5096
5257
|
/** Format: date-time */
|
|
5097
5258
|
created_at: string | null;
|
|
@@ -5099,6 +5260,10 @@ export interface components {
|
|
|
5099
5260
|
updated_at: string | null;
|
|
5100
5261
|
/** Format: date-time */
|
|
5101
5262
|
deleted_at: string | null;
|
|
5263
|
+
/** @description La cuenta del apunte, con `id` y `name` y nada más. Llega en el listado (`GET /banking/transactions`), que la carga siempre; en las respuestas de una operación sobre un apunte suelto no tiene por qué estar. */
|
|
5264
|
+
bank_account?: Record<string, never> | null;
|
|
5265
|
+
/** @description Los cruces del apunte con documentos del ERP, cada uno con su `reconcilable` (la factura, el gasto o la recibida). Como `bank_account`: la trae el listado, que la carga siempre. */
|
|
5266
|
+
reconciliations?: Record<string, never>[] | null;
|
|
5102
5267
|
};
|
|
5103
5268
|
/** BulkExchangeRateRequest */
|
|
5104
5269
|
BulkExchangeRateRequest: {
|
|
@@ -6004,10 +6169,11 @@ export interface components {
|
|
|
6004
6169
|
sub_total?: number | null;
|
|
6005
6170
|
total?: number | null;
|
|
6006
6171
|
/**
|
|
6007
|
-
* @description `integer` porque son
|
|
6008
|
-
* publicaba este campo como `string` —el
|
|
6009
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6010
|
-
* como 10,5
|
|
6172
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
6173
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
6174
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
6175
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
6176
|
+
* significa nada.
|
|
6011
6177
|
*/
|
|
6012
6178
|
tax?: number | null;
|
|
6013
6179
|
template_name?: string | null;
|
|
@@ -6149,10 +6315,11 @@ export interface components {
|
|
|
6149
6315
|
exchange_rate?: string | null;
|
|
6150
6316
|
payment_method_id?: string | null;
|
|
6151
6317
|
/**
|
|
6152
|
-
* @description `integer` porque son
|
|
6153
|
-
* publicaba este campo como `string` —el
|
|
6154
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6155
|
-
* como 10,5
|
|
6318
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
6319
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
6320
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
6321
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
6322
|
+
* significa nada.
|
|
6156
6323
|
*/
|
|
6157
6324
|
amount: number;
|
|
6158
6325
|
customer_id?: string | null;
|
|
@@ -6253,9 +6420,9 @@ export interface components {
|
|
|
6253
6420
|
residual_value: number;
|
|
6254
6421
|
useful_life_years: number;
|
|
6255
6422
|
depreciation_method: string;
|
|
6256
|
-
annual_depreciation:
|
|
6257
|
-
accumulated_depreciation:
|
|
6258
|
-
net_book_value:
|
|
6423
|
+
annual_depreciation: number;
|
|
6424
|
+
accumulated_depreciation: number;
|
|
6425
|
+
net_book_value: number;
|
|
6259
6426
|
depreciation_schedule: string;
|
|
6260
6427
|
company_id: number;
|
|
6261
6428
|
/** Format: date-time */
|
|
@@ -6386,9 +6553,7 @@ export interface components {
|
|
|
6386
6553
|
* respuestas de escritura, con `[]` cuando la línea no cobra
|
|
6387
6554
|
* ninguno; en el índice no viaja.
|
|
6388
6555
|
*/
|
|
6389
|
-
time_entry_ids?:
|
|
6390
|
-
[key: string]: unknown;
|
|
6391
|
-
};
|
|
6556
|
+
time_entry_ids?: number[];
|
|
6392
6557
|
taxes?: components["schemas"]["TaxResource"][];
|
|
6393
6558
|
fields?: components["schemas"]["CustomFieldValueResource"][];
|
|
6394
6559
|
};
|
|
@@ -6410,10 +6575,10 @@ export interface components {
|
|
|
6410
6575
|
discount_val: number;
|
|
6411
6576
|
sub_total: number;
|
|
6412
6577
|
total: number;
|
|
6413
|
-
effective_total:
|
|
6578
|
+
effective_total: number;
|
|
6414
6579
|
tax: number;
|
|
6415
6580
|
due_amount: number;
|
|
6416
|
-
effective_due_amount:
|
|
6581
|
+
effective_due_amount: number;
|
|
6417
6582
|
sent: string;
|
|
6418
6583
|
viewed: string;
|
|
6419
6584
|
/**
|
|
@@ -6443,10 +6608,11 @@ export interface components {
|
|
|
6443
6608
|
creator_id: number | null;
|
|
6444
6609
|
base_tax: number;
|
|
6445
6610
|
base_due_amount: number;
|
|
6446
|
-
effective_base_total:
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6611
|
+
effective_base_total: number;
|
|
6612
|
+
/** @description NULL cuando la factura no tiene `base_due_amount` calculado, y entonces es un hueco, no un cero: una factura que no ha calculado su deuda en moneda base no es una factura que no deba nada. */
|
|
6613
|
+
effective_base_due_amount: number | null;
|
|
6614
|
+
credited_total: number;
|
|
6615
|
+
credited_base_total: number;
|
|
6450
6616
|
currency_id: number | null;
|
|
6451
6617
|
formatted_created_at: string;
|
|
6452
6618
|
invoice_pdf_url: string;
|
|
@@ -6572,8 +6738,8 @@ export interface components {
|
|
|
6572
6738
|
* que esto no cueste ni una consulta, y que el scope sea
|
|
6573
6739
|
* obligatorio en cualquier índice que sirva este recurso.
|
|
6574
6740
|
*/
|
|
6575
|
-
effective_total:
|
|
6576
|
-
effective_due_amount:
|
|
6741
|
+
effective_total: number;
|
|
6742
|
+
effective_due_amount: number;
|
|
6577
6743
|
effective_paid_status: string;
|
|
6578
6744
|
effective_overdue: string;
|
|
6579
6745
|
currency_id: number | null;
|
|
@@ -6689,10 +6855,11 @@ export interface components {
|
|
|
6689
6855
|
sub_total?: number | null;
|
|
6690
6856
|
total?: number | null;
|
|
6691
6857
|
/**
|
|
6692
|
-
* @description `integer` porque son
|
|
6693
|
-
* publicaba este campo como `string` —el
|
|
6694
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6695
|
-
* como 10,5
|
|
6858
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
6859
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
6860
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
6861
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
6862
|
+
* significa nada.
|
|
6696
6863
|
*/
|
|
6697
6864
|
tax?: number | null;
|
|
6698
6865
|
/**
|
|
@@ -6870,10 +7037,11 @@ export interface components {
|
|
|
6870
7037
|
ItemsRequest: {
|
|
6871
7038
|
name: string;
|
|
6872
7039
|
/**
|
|
6873
|
-
* @description `integer` porque son
|
|
6874
|
-
* publicaba este campo como `string` —el
|
|
6875
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
6876
|
-
* como 10,5
|
|
7040
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
7041
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
7042
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
7043
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
7044
|
+
* significa nada.
|
|
6877
7045
|
*/
|
|
6878
7046
|
price: number;
|
|
6879
7047
|
/** @enum {string|null} */
|
|
@@ -7172,12 +7340,20 @@ export interface components {
|
|
|
7172
7340
|
currency?: components["schemas"]["CurrencyResource"] | null;
|
|
7173
7341
|
transaction?: components["schemas"]["TransactionResource"] | null;
|
|
7174
7342
|
};
|
|
7175
|
-
/**
|
|
7343
|
+
/**
|
|
7344
|
+
* ProfileRequest
|
|
7345
|
+
* @description `PUT /me` — el nombre, el correo y la contraseña de quien llama.
|
|
7346
|
+
*
|
|
7347
|
+
* Cambiar el **correo** o la **contraseña** exige `current_password`, la
|
|
7348
|
+
* vigente. Cambiar solo el nombre no: `name` y `email` son los dos `required`,
|
|
7349
|
+
* así que reenviar el mismo correo no cuenta como cambio.
|
|
7350
|
+
*/
|
|
7176
7351
|
ProfileRequest: {
|
|
7177
7352
|
name: string;
|
|
7178
7353
|
password?: string | null;
|
|
7179
7354
|
/** Format: email */
|
|
7180
7355
|
email: string;
|
|
7356
|
+
current_password?: string;
|
|
7181
7357
|
};
|
|
7182
7358
|
/** ProjectRequest */
|
|
7183
7359
|
ProjectRequest: {
|
|
@@ -7313,10 +7489,11 @@ export interface components {
|
|
|
7313
7489
|
sub_total: number;
|
|
7314
7490
|
total: number;
|
|
7315
7491
|
/**
|
|
7316
|
-
* @description `integer` porque son
|
|
7317
|
-
* publicaba este campo como `string` —el
|
|
7318
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
7319
|
-
* como 10,5
|
|
7492
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
7493
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
7494
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
7495
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
7496
|
+
* significa nada.
|
|
7320
7497
|
*/
|
|
7321
7498
|
tax: number;
|
|
7322
7499
|
/**
|
|
@@ -7433,10 +7610,11 @@ export interface components {
|
|
|
7433
7610
|
sub_total?: number | null;
|
|
7434
7611
|
total?: number | null;
|
|
7435
7612
|
/**
|
|
7436
|
-
* @description `integer` porque son
|
|
7437
|
-
* publicaba este campo como `string` —el
|
|
7438
|
-
* de las reglas— y la API aceptaba «10.5»,
|
|
7439
|
-
* como 10,5
|
|
7613
|
+
* @description `integer` porque son SUBUNIDADES enteras de la moneda. Sin regla
|
|
7614
|
+
* de tipo, el contrato publicaba este campo como `string` —el
|
|
7615
|
+
* generador deduce el tipo de las reglas— y la API aceptaba «10.5»,
|
|
7616
|
+
* que la columna guardaba como 10,5: media subunidad, que no
|
|
7617
|
+
* significa nada.
|
|
7440
7618
|
*/
|
|
7441
7619
|
tax?: number | null;
|
|
7442
7620
|
/**
|
|
@@ -7562,7 +7740,7 @@ export interface components {
|
|
|
7562
7740
|
discount_per_item: string | null;
|
|
7563
7741
|
notes: string | null;
|
|
7564
7742
|
discount_type: string | null;
|
|
7565
|
-
discount:
|
|
7743
|
+
discount: number | null;
|
|
7566
7744
|
discount_val: number | null;
|
|
7567
7745
|
sub_total: number | null;
|
|
7568
7746
|
total: number | null;
|
|
@@ -8435,7 +8613,7 @@ export interface operations {
|
|
|
8435
8613
|
"absence.teamCalendar": {
|
|
8436
8614
|
parameters: {
|
|
8437
8615
|
query?: {
|
|
8438
|
-
month?: string;
|
|
8616
|
+
month?: string | null;
|
|
8439
8617
|
};
|
|
8440
8618
|
header?: never;
|
|
8441
8619
|
path?: never;
|
|
@@ -8461,6 +8639,7 @@ export interface operations {
|
|
|
8461
8639
|
};
|
|
8462
8640
|
};
|
|
8463
8641
|
403: components["responses"]["AuthorizationException"];
|
|
8642
|
+
422: components["responses"]["ValidationException"];
|
|
8464
8643
|
};
|
|
8465
8644
|
};
|
|
8466
8645
|
"absence.approve": {
|
|
@@ -8602,7 +8781,7 @@ export interface operations {
|
|
|
8602
8781
|
};
|
|
8603
8782
|
responses: {
|
|
8604
8783
|
/** @description `AbsenceResource` */
|
|
8605
|
-
|
|
8784
|
+
201: {
|
|
8606
8785
|
headers: {
|
|
8607
8786
|
[name: string]: unknown;
|
|
8608
8787
|
};
|
|
@@ -8724,7 +8903,7 @@ export interface operations {
|
|
|
8724
8903
|
};
|
|
8725
8904
|
content: {
|
|
8726
8905
|
"application/json": {
|
|
8727
|
-
version:
|
|
8906
|
+
version: string | null;
|
|
8728
8907
|
/** @constant */
|
|
8729
8908
|
channel: "stable";
|
|
8730
8909
|
};
|
|
@@ -9266,7 +9445,7 @@ export interface operations {
|
|
|
9266
9445
|
};
|
|
9267
9446
|
content: {
|
|
9268
9447
|
"application/json": {
|
|
9269
|
-
data:
|
|
9448
|
+
data: string[];
|
|
9270
9449
|
};
|
|
9271
9450
|
};
|
|
9272
9451
|
};
|
|
@@ -9451,7 +9630,7 @@ export interface operations {
|
|
|
9451
9630
|
requestBody?: never;
|
|
9452
9631
|
responses: {
|
|
9453
9632
|
/** @description `EstimateResource` */
|
|
9454
|
-
|
|
9633
|
+
201: {
|
|
9455
9634
|
headers: {
|
|
9456
9635
|
[name: string]: unknown;
|
|
9457
9636
|
};
|
|
@@ -9478,7 +9657,7 @@ export interface operations {
|
|
|
9478
9657
|
requestBody?: never;
|
|
9479
9658
|
responses: {
|
|
9480
9659
|
/** @description `InvoiceResource` */
|
|
9481
|
-
|
|
9660
|
+
201: {
|
|
9482
9661
|
headers: {
|
|
9483
9662
|
[name: string]: unknown;
|
|
9484
9663
|
};
|
|
@@ -9688,6 +9867,94 @@ export interface operations {
|
|
|
9688
9867
|
};
|
|
9689
9868
|
};
|
|
9690
9869
|
};
|
|
9870
|
+
"connectedApps.index": {
|
|
9871
|
+
parameters: {
|
|
9872
|
+
query?: never;
|
|
9873
|
+
header?: never;
|
|
9874
|
+
path?: never;
|
|
9875
|
+
cookie?: never;
|
|
9876
|
+
};
|
|
9877
|
+
requestBody?: never;
|
|
9878
|
+
responses: {
|
|
9879
|
+
200: {
|
|
9880
|
+
headers: {
|
|
9881
|
+
[name: string]: unknown;
|
|
9882
|
+
};
|
|
9883
|
+
content: {
|
|
9884
|
+
"application/json": {
|
|
9885
|
+
data: {
|
|
9886
|
+
id: number;
|
|
9887
|
+
name: string;
|
|
9888
|
+
confidential: boolean;
|
|
9889
|
+
scopes: string[];
|
|
9890
|
+
permissions: {
|
|
9891
|
+
text: string;
|
|
9892
|
+
write: boolean;
|
|
9893
|
+
}[];
|
|
9894
|
+
summary: string;
|
|
9895
|
+
connected_at: string | null;
|
|
9896
|
+
last_used_at: string | null;
|
|
9897
|
+
active_tokens: number;
|
|
9898
|
+
credentials: {
|
|
9899
|
+
id: number;
|
|
9900
|
+
connected_at: string | null;
|
|
9901
|
+
last_used_at: string | null;
|
|
9902
|
+
expires_at: string | null;
|
|
9903
|
+
}[];
|
|
9904
|
+
}[];
|
|
9905
|
+
};
|
|
9906
|
+
};
|
|
9907
|
+
};
|
|
9908
|
+
};
|
|
9909
|
+
};
|
|
9910
|
+
"connectedApps.destroyCredential": {
|
|
9911
|
+
parameters: {
|
|
9912
|
+
query?: never;
|
|
9913
|
+
header?: never;
|
|
9914
|
+
path: {
|
|
9915
|
+
credentialId: number;
|
|
9916
|
+
};
|
|
9917
|
+
cookie?: never;
|
|
9918
|
+
};
|
|
9919
|
+
requestBody?: never;
|
|
9920
|
+
responses: {
|
|
9921
|
+
200: {
|
|
9922
|
+
headers: {
|
|
9923
|
+
[name: string]: unknown;
|
|
9924
|
+
};
|
|
9925
|
+
content: {
|
|
9926
|
+
"application/json": {
|
|
9927
|
+
message: string;
|
|
9928
|
+
revoked_tokens: number;
|
|
9929
|
+
};
|
|
9930
|
+
};
|
|
9931
|
+
};
|
|
9932
|
+
};
|
|
9933
|
+
};
|
|
9934
|
+
"connectedApps.destroy": {
|
|
9935
|
+
parameters: {
|
|
9936
|
+
query?: never;
|
|
9937
|
+
header?: never;
|
|
9938
|
+
path: {
|
|
9939
|
+
authorizationId: number;
|
|
9940
|
+
};
|
|
9941
|
+
cookie?: never;
|
|
9942
|
+
};
|
|
9943
|
+
requestBody?: never;
|
|
9944
|
+
responses: {
|
|
9945
|
+
200: {
|
|
9946
|
+
headers: {
|
|
9947
|
+
[name: string]: unknown;
|
|
9948
|
+
};
|
|
9949
|
+
content: {
|
|
9950
|
+
"application/json": {
|
|
9951
|
+
message: string;
|
|
9952
|
+
revoked_tokens: number;
|
|
9953
|
+
};
|
|
9954
|
+
};
|
|
9955
|
+
};
|
|
9956
|
+
};
|
|
9957
|
+
};
|
|
9691
9958
|
"contact.index": {
|
|
9692
9959
|
parameters: {
|
|
9693
9960
|
query: {
|
|
@@ -9728,7 +9995,7 @@ export interface operations {
|
|
|
9728
9995
|
};
|
|
9729
9996
|
responses: {
|
|
9730
9997
|
/** @description `ContactResource` */
|
|
9731
|
-
|
|
9998
|
+
201: {
|
|
9732
9999
|
headers: {
|
|
9733
10000
|
[name: string]: unknown;
|
|
9734
10001
|
};
|
|
@@ -9966,7 +10233,7 @@ export interface operations {
|
|
|
9966
10233
|
};
|
|
9967
10234
|
responses: {
|
|
9968
10235
|
/** @description `CustomFieldResource` */
|
|
9969
|
-
|
|
10236
|
+
201: {
|
|
9970
10237
|
headers: {
|
|
9971
10238
|
[name: string]: unknown;
|
|
9972
10239
|
};
|
|
@@ -10187,7 +10454,7 @@ export interface operations {
|
|
|
10187
10454
|
"customers.index": {
|
|
10188
10455
|
parameters: {
|
|
10189
10456
|
query?: {
|
|
10190
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: nombre, contacto, NIF, saldo pendiente neto en
|
|
10457
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: nombre, contacto, NIF, saldo pendiente neto en subunidades y fechas — sin direcciones, campos personalizados, empresa, moneda ni método de pago, y sin el avatar (que cuesta una consulta por fila). Pensado para índices y para recuentos que solo leen el `meta`; la ficha completa sigue en el detalle y en el índice sin este parámetro. */
|
|
10191
10458
|
view?: "summary";
|
|
10192
10459
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
10193
10460
|
external_ref?: string;
|
|
@@ -10601,7 +10868,7 @@ export interface operations {
|
|
|
10601
10868
|
};
|
|
10602
10869
|
responses: {
|
|
10603
10870
|
/** @description `DeliveryNoteResource` */
|
|
10604
|
-
|
|
10871
|
+
201: {
|
|
10605
10872
|
headers: {
|
|
10606
10873
|
[name: string]: unknown;
|
|
10607
10874
|
};
|
|
@@ -10753,7 +11020,7 @@ export interface operations {
|
|
|
10753
11020
|
};
|
|
10754
11021
|
responses: {
|
|
10755
11022
|
/** @description `EmployeeProfileResource` */
|
|
10756
|
-
|
|
11023
|
+
201: {
|
|
10757
11024
|
headers: {
|
|
10758
11025
|
[name: string]: unknown;
|
|
10759
11026
|
};
|
|
@@ -10912,7 +11179,7 @@ export interface operations {
|
|
|
10912
11179
|
};
|
|
10913
11180
|
responses: {
|
|
10914
11181
|
/** @description `EstimateSeriesResource` */
|
|
10915
|
-
|
|
11182
|
+
201: {
|
|
10916
11183
|
headers: {
|
|
10917
11184
|
[name: string]: unknown;
|
|
10918
11185
|
};
|
|
@@ -11068,7 +11335,7 @@ export interface operations {
|
|
|
11068
11335
|
"estimates.index": {
|
|
11069
11336
|
parameters: {
|
|
11070
11337
|
query?: {
|
|
11071
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, estado, importes en
|
|
11338
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, estado, importes en subunidades, el cliente reducido a `{id, name, email, phone}` y la URL del PDF — sin líneas, impuestos, empresa ni moneda. Pensado para índices y para recuentos que solo leen el `meta`; el documento completo sigue en el detalle y en el índice sin este parámetro. */
|
|
11072
11339
|
view?: "summary";
|
|
11073
11340
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
11074
11341
|
external_ref?: string;
|
|
@@ -11119,7 +11386,7 @@ export interface operations {
|
|
|
11119
11386
|
};
|
|
11120
11387
|
responses: {
|
|
11121
11388
|
/** @description `EstimateResource` */
|
|
11122
|
-
|
|
11389
|
+
201: {
|
|
11123
11390
|
headers: {
|
|
11124
11391
|
[name: string]: unknown;
|
|
11125
11392
|
};
|
|
@@ -11229,7 +11496,7 @@ export interface operations {
|
|
|
11229
11496
|
};
|
|
11230
11497
|
responses: {
|
|
11231
11498
|
/** @description `ExpenseCategoryResource` */
|
|
11232
|
-
|
|
11499
|
+
201: {
|
|
11233
11500
|
headers: {
|
|
11234
11501
|
[name: string]: unknown;
|
|
11235
11502
|
};
|
|
@@ -11328,6 +11595,44 @@ export interface operations {
|
|
|
11328
11595
|
404: components["responses"]["ModelNotFoundException"];
|
|
11329
11596
|
};
|
|
11330
11597
|
};
|
|
11598
|
+
"expenses.uploadReceipt": {
|
|
11599
|
+
parameters: {
|
|
11600
|
+
query?: never;
|
|
11601
|
+
header?: never;
|
|
11602
|
+
path: {
|
|
11603
|
+
/** @description The expense ID */
|
|
11604
|
+
expense: number;
|
|
11605
|
+
};
|
|
11606
|
+
cookie?: never;
|
|
11607
|
+
};
|
|
11608
|
+
requestBody: {
|
|
11609
|
+
content: {
|
|
11610
|
+
"multipart/form-data": {
|
|
11611
|
+
/**
|
|
11612
|
+
* Format: binary
|
|
11613
|
+
* @description Maximum file size: 20000 kilobytes.
|
|
11614
|
+
*/
|
|
11615
|
+
receipt: Blob;
|
|
11616
|
+
};
|
|
11617
|
+
};
|
|
11618
|
+
};
|
|
11619
|
+
responses: {
|
|
11620
|
+
/** @description `ExpenseResource` */
|
|
11621
|
+
200: {
|
|
11622
|
+
headers: {
|
|
11623
|
+
[name: string]: unknown;
|
|
11624
|
+
};
|
|
11625
|
+
content: {
|
|
11626
|
+
"application/json": {
|
|
11627
|
+
data: components["schemas"]["ExpenseResource"];
|
|
11628
|
+
};
|
|
11629
|
+
};
|
|
11630
|
+
};
|
|
11631
|
+
403: components["responses"]["AuthorizationException"];
|
|
11632
|
+
404: components["responses"]["ModelNotFoundException"];
|
|
11633
|
+
422: components["responses"]["ValidationException"];
|
|
11634
|
+
};
|
|
11635
|
+
};
|
|
11331
11636
|
"expenses.delete": {
|
|
11332
11637
|
parameters: {
|
|
11333
11638
|
query?: never;
|
|
@@ -11395,7 +11700,7 @@ export interface operations {
|
|
|
11395
11700
|
};
|
|
11396
11701
|
responses: {
|
|
11397
11702
|
/** @description `ExpenseResource` */
|
|
11398
|
-
|
|
11703
|
+
201: {
|
|
11399
11704
|
headers: {
|
|
11400
11705
|
[name: string]: unknown;
|
|
11401
11706
|
};
|
|
@@ -11950,7 +12255,7 @@ export interface operations {
|
|
|
11950
12255
|
};
|
|
11951
12256
|
responses: {
|
|
11952
12257
|
/** @description `IncidenceResource` */
|
|
11953
|
-
|
|
12258
|
+
201: {
|
|
11954
12259
|
headers: {
|
|
11955
12260
|
[name: string]: unknown;
|
|
11956
12261
|
};
|
|
@@ -12132,7 +12437,7 @@ export interface operations {
|
|
|
12132
12437
|
};
|
|
12133
12438
|
responses: {
|
|
12134
12439
|
/** @description `InvestmentAssetResource` */
|
|
12135
|
-
|
|
12440
|
+
201: {
|
|
12136
12441
|
headers: {
|
|
12137
12442
|
[name: string]: unknown;
|
|
12138
12443
|
};
|
|
@@ -12339,7 +12644,7 @@ export interface operations {
|
|
|
12339
12644
|
};
|
|
12340
12645
|
responses: {
|
|
12341
12646
|
/** @description `InvoiceSeriesResource` */
|
|
12342
|
-
|
|
12647
|
+
201: {
|
|
12343
12648
|
headers: {
|
|
12344
12649
|
[name: string]: unknown;
|
|
12345
12650
|
};
|
|
@@ -12470,7 +12775,7 @@ export interface operations {
|
|
|
12470
12775
|
};
|
|
12471
12776
|
responses: {
|
|
12472
12777
|
/** @description `InvoiceTemplateResource` */
|
|
12473
|
-
|
|
12778
|
+
201: {
|
|
12474
12779
|
headers: {
|
|
12475
12780
|
[name: string]: unknown;
|
|
12476
12781
|
};
|
|
@@ -12639,7 +12944,7 @@ export interface operations {
|
|
|
12639
12944
|
};
|
|
12640
12945
|
responses: {
|
|
12641
12946
|
/** @description `InvoiceTemplateResource` */
|
|
12642
|
-
|
|
12947
|
+
201: {
|
|
12643
12948
|
headers: {
|
|
12644
12949
|
[name: string]: unknown;
|
|
12645
12950
|
};
|
|
@@ -12849,7 +13154,7 @@ export interface operations {
|
|
|
12849
13154
|
parameters: {
|
|
12850
13155
|
query?: {
|
|
12851
13156
|
limit?: string;
|
|
12852
|
-
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, los tres ejes de estado (documento, cobro y AEAT), importes en
|
|
13157
|
+
/** @description Con `summary`, cada fila trae solo los campos del listado: fechas, número, los tres ejes de estado (documento, cobro y AEAT), importes en subunidades —incluidos los netos de rectificativas—, el cliente reducido a `{id, name, email, phone}` y la URL del PDF; sin líneas, impuestos, pagos, empresa ni la factura rectificada. Pensado para índices y para recuentos que solo leen el `meta`; el documento completo sigue en el detalle y en el índice sin este parámetro. */
|
|
12853
13158
|
view?: "summary";
|
|
12854
13159
|
/** @description Devuelve solo el recurso que lleve esta referencia externa. El alcance es el client OAuth del token: cada integrador consulta las suyas y nunca ve las de otro. Combinado con la escritura de `external_ref`, es el find-or-create sin mantener ningún mapeo local. */
|
|
12855
13160
|
external_ref?: string;
|
|
@@ -13690,7 +13995,7 @@ export interface operations {
|
|
|
13690
13995
|
};
|
|
13691
13996
|
responses: {
|
|
13692
13997
|
/** @description `LeadResource` */
|
|
13693
|
-
|
|
13998
|
+
201: {
|
|
13694
13999
|
headers: {
|
|
13695
14000
|
[name: string]: unknown;
|
|
13696
14001
|
};
|
|
@@ -14194,7 +14499,7 @@ export interface operations {
|
|
|
14194
14499
|
};
|
|
14195
14500
|
responses: {
|
|
14196
14501
|
/** @description `NoteResource` */
|
|
14197
|
-
|
|
14502
|
+
201: {
|
|
14198
14503
|
headers: {
|
|
14199
14504
|
[name: string]: unknown;
|
|
14200
14505
|
};
|
|
@@ -14585,7 +14890,7 @@ export interface operations {
|
|
|
14585
14890
|
};
|
|
14586
14891
|
responses: {
|
|
14587
14892
|
/** @description `PaymentMethodResource` */
|
|
14588
|
-
|
|
14893
|
+
201: {
|
|
14589
14894
|
headers: {
|
|
14590
14895
|
[name: string]: unknown;
|
|
14591
14896
|
};
|
|
@@ -15064,7 +15369,7 @@ export interface operations {
|
|
|
15064
15369
|
};
|
|
15065
15370
|
responses: {
|
|
15066
15371
|
/** @description `ProjectResource` */
|
|
15067
|
-
|
|
15372
|
+
201: {
|
|
15068
15373
|
headers: {
|
|
15069
15374
|
[name: string]: unknown;
|
|
15070
15375
|
};
|
|
@@ -15417,7 +15722,14 @@ export interface operations {
|
|
|
15417
15722
|
};
|
|
15418
15723
|
"reconciliation.transactions": {
|
|
15419
15724
|
parameters: {
|
|
15420
|
-
query?:
|
|
15725
|
+
query?: {
|
|
15726
|
+
bank_account_id?: number | null;
|
|
15727
|
+
status?: "pending" | "matched" | "reconciled" | "ignored" | null;
|
|
15728
|
+
type?: "credit" | "debit" | null;
|
|
15729
|
+
from_date?: string | null;
|
|
15730
|
+
to_date?: string | null;
|
|
15731
|
+
per_page?: number | null;
|
|
15732
|
+
};
|
|
15421
15733
|
header?: never;
|
|
15422
15734
|
path?: never;
|
|
15423
15735
|
cookie?: never;
|
|
@@ -15455,11 +15767,14 @@ export interface operations {
|
|
|
15455
15767
|
};
|
|
15456
15768
|
};
|
|
15457
15769
|
};
|
|
15770
|
+
422: components["responses"]["ValidationException"];
|
|
15458
15771
|
};
|
|
15459
15772
|
};
|
|
15460
15773
|
"reconciliation.summary": {
|
|
15461
15774
|
parameters: {
|
|
15462
|
-
query?:
|
|
15775
|
+
query?: {
|
|
15776
|
+
bank_account_id?: number | null;
|
|
15777
|
+
};
|
|
15463
15778
|
header?: never;
|
|
15464
15779
|
path?: never;
|
|
15465
15780
|
cookie?: never;
|
|
@@ -15474,16 +15789,17 @@ export interface operations {
|
|
|
15474
15789
|
"application/json": {
|
|
15475
15790
|
data: {
|
|
15476
15791
|
total: number;
|
|
15477
|
-
pending:
|
|
15478
|
-
matched:
|
|
15479
|
-
reconciled:
|
|
15480
|
-
ignored:
|
|
15792
|
+
pending: number;
|
|
15793
|
+
matched: number;
|
|
15794
|
+
reconciled: number;
|
|
15795
|
+
ignored: number;
|
|
15481
15796
|
total_credits: string;
|
|
15482
15797
|
total_debits: string;
|
|
15483
15798
|
};
|
|
15484
15799
|
};
|
|
15485
15800
|
};
|
|
15486
15801
|
};
|
|
15802
|
+
422: components["responses"]["ValidationException"];
|
|
15487
15803
|
};
|
|
15488
15804
|
};
|
|
15489
15805
|
"reconciliation.autoMatch": {
|
|
@@ -15493,7 +15809,13 @@ export interface operations {
|
|
|
15493
15809
|
path?: never;
|
|
15494
15810
|
cookie?: never;
|
|
15495
15811
|
};
|
|
15496
|
-
requestBody?:
|
|
15812
|
+
requestBody?: {
|
|
15813
|
+
content: {
|
|
15814
|
+
"application/json": {
|
|
15815
|
+
bank_account_id?: number | null;
|
|
15816
|
+
};
|
|
15817
|
+
};
|
|
15818
|
+
};
|
|
15497
15819
|
responses: {
|
|
15498
15820
|
200: {
|
|
15499
15821
|
headers: {
|
|
@@ -15522,6 +15844,7 @@ export interface operations {
|
|
|
15522
15844
|
};
|
|
15523
15845
|
};
|
|
15524
15846
|
};
|
|
15847
|
+
422: components["responses"]["ValidationException"];
|
|
15525
15848
|
};
|
|
15526
15849
|
};
|
|
15527
15850
|
"reconciliation.suggestions": {
|
|
@@ -15729,7 +16052,7 @@ export interface operations {
|
|
|
15729
16052
|
};
|
|
15730
16053
|
responses: {
|
|
15731
16054
|
/** @description `RecurringInvoiceResource` */
|
|
15732
|
-
|
|
16055
|
+
201: {
|
|
15733
16056
|
headers: {
|
|
15734
16057
|
[name: string]: unknown;
|
|
15735
16058
|
};
|
|
@@ -15990,7 +16313,7 @@ export interface operations {
|
|
|
15990
16313
|
};
|
|
15991
16314
|
responses: {
|
|
15992
16315
|
/** @description `RoleResource` */
|
|
15993
|
-
|
|
16316
|
+
201: {
|
|
15994
16317
|
headers: {
|
|
15995
16318
|
[name: string]: unknown;
|
|
15996
16319
|
};
|
|
@@ -17293,7 +17616,7 @@ export interface operations {
|
|
|
17293
17616
|
};
|
|
17294
17617
|
responses: {
|
|
17295
17618
|
/** @description `TaskResource` */
|
|
17296
|
-
|
|
17619
|
+
201: {
|
|
17297
17620
|
headers: {
|
|
17298
17621
|
[name: string]: unknown;
|
|
17299
17622
|
};
|
|
@@ -17451,7 +17774,7 @@ export interface operations {
|
|
|
17451
17774
|
};
|
|
17452
17775
|
responses: {
|
|
17453
17776
|
/** @description `TaxTypeResource` */
|
|
17454
|
-
|
|
17777
|
+
201: {
|
|
17455
17778
|
headers: {
|
|
17456
17779
|
[name: string]: unknown;
|
|
17457
17780
|
};
|
|
@@ -17952,7 +18275,7 @@ export interface operations {
|
|
|
17952
18275
|
};
|
|
17953
18276
|
responses: {
|
|
17954
18277
|
/** @description `TimeClockCorrectionResource` */
|
|
17955
|
-
|
|
18278
|
+
201: {
|
|
17956
18279
|
headers: {
|
|
17957
18280
|
[name: string]: unknown;
|
|
17958
18281
|
};
|
|
@@ -18091,7 +18414,7 @@ export interface operations {
|
|
|
18091
18414
|
};
|
|
18092
18415
|
responses: {
|
|
18093
18416
|
/** @description `TimeEntryResource` */
|
|
18094
|
-
|
|
18417
|
+
201: {
|
|
18095
18418
|
headers: {
|
|
18096
18419
|
[name: string]: unknown;
|
|
18097
18420
|
};
|
|
@@ -20888,7 +21211,7 @@ export interface operations {
|
|
|
20888
21211
|
};
|
|
20889
21212
|
responses: {
|
|
20890
21213
|
/** @description `UnitResource` */
|
|
20891
|
-
|
|
21214
|
+
201: {
|
|
20892
21215
|
headers: {
|
|
20893
21216
|
[name: string]: unknown;
|
|
20894
21217
|
};
|
|
@@ -21096,7 +21419,7 @@ export interface operations {
|
|
|
21096
21419
|
};
|
|
21097
21420
|
responses: {
|
|
21098
21421
|
/** @description `UserResource` */
|
|
21099
|
-
|
|
21422
|
+
201: {
|
|
21100
21423
|
headers: {
|
|
21101
21424
|
[name: string]: unknown;
|
|
21102
21425
|
};
|
|
@@ -21650,7 +21973,7 @@ export interface operations {
|
|
|
21650
21973
|
};
|
|
21651
21974
|
responses: {
|
|
21652
21975
|
/** @description `HolidayResource` */
|
|
21653
|
-
|
|
21976
|
+
201: {
|
|
21654
21977
|
headers: {
|
|
21655
21978
|
[name: string]: unknown;
|
|
21656
21979
|
};
|
|
@@ -21730,7 +22053,7 @@ export interface operations {
|
|
|
21730
22053
|
};
|
|
21731
22054
|
responses: {
|
|
21732
22055
|
/** @description `WorkCalendarResource` */
|
|
21733
|
-
|
|
22056
|
+
201: {
|
|
21734
22057
|
headers: {
|
|
21735
22058
|
[name: string]: unknown;
|
|
21736
22059
|
};
|
|
@@ -21868,7 +22191,7 @@ export interface operations {
|
|
|
21868
22191
|
};
|
|
21869
22192
|
responses: {
|
|
21870
22193
|
/** @description `WorkScheduleResource` */
|
|
21871
|
-
|
|
22194
|
+
201: {
|
|
21872
22195
|
headers: {
|
|
21873
22196
|
[name: string]: unknown;
|
|
21874
22197
|
};
|
package/dist/client.d.ts
CHANGED
|
@@ -211,10 +211,10 @@ export declare class PimiaClient {
|
|
|
211
211
|
discount_val: number;
|
|
212
212
|
sub_total: number;
|
|
213
213
|
total: number;
|
|
214
|
-
effective_total:
|
|
214
|
+
effective_total: number;
|
|
215
215
|
tax: number;
|
|
216
216
|
due_amount: number;
|
|
217
|
-
effective_due_amount:
|
|
217
|
+
effective_due_amount: number;
|
|
218
218
|
sent: string;
|
|
219
219
|
viewed: string;
|
|
220
220
|
sent_at: string;
|
|
@@ -234,10 +234,10 @@ export declare class PimiaClient {
|
|
|
234
234
|
creator_id: number | null;
|
|
235
235
|
base_tax: number;
|
|
236
236
|
base_due_amount: number;
|
|
237
|
-
effective_base_total:
|
|
238
|
-
effective_base_due_amount:
|
|
239
|
-
credited_total:
|
|
240
|
-
credited_base_total:
|
|
237
|
+
effective_base_total: number;
|
|
238
|
+
effective_base_due_amount: number | null;
|
|
239
|
+
credited_total: number;
|
|
240
|
+
credited_base_total: number;
|
|
241
241
|
currency_id: number | null;
|
|
242
242
|
formatted_created_at: string;
|
|
243
243
|
invoice_pdf_url: string;
|
|
@@ -298,10 +298,10 @@ export declare class PimiaClient {
|
|
|
298
298
|
discount_val: number;
|
|
299
299
|
sub_total: number;
|
|
300
300
|
total: number;
|
|
301
|
-
effective_total:
|
|
301
|
+
effective_total: number;
|
|
302
302
|
tax: number;
|
|
303
303
|
due_amount: number;
|
|
304
|
-
effective_due_amount:
|
|
304
|
+
effective_due_amount: number;
|
|
305
305
|
sent: string;
|
|
306
306
|
viewed: string;
|
|
307
307
|
sent_at: string;
|
|
@@ -321,10 +321,10 @@ export declare class PimiaClient {
|
|
|
321
321
|
creator_id: number | null;
|
|
322
322
|
base_tax: number;
|
|
323
323
|
base_due_amount: number;
|
|
324
|
-
effective_base_total:
|
|
325
|
-
effective_base_due_amount:
|
|
326
|
-
credited_total:
|
|
327
|
-
credited_base_total:
|
|
324
|
+
effective_base_total: number;
|
|
325
|
+
effective_base_due_amount: number | null;
|
|
326
|
+
credited_total: number;
|
|
327
|
+
credited_base_total: number;
|
|
328
328
|
currency_id: number | null;
|
|
329
329
|
formatted_created_at: string;
|
|
330
330
|
invoice_pdf_url: string;
|
|
@@ -491,10 +491,10 @@ export declare class PimiaClient {
|
|
|
491
491
|
discount_val: number;
|
|
492
492
|
sub_total: number;
|
|
493
493
|
total: number;
|
|
494
|
-
effective_total:
|
|
494
|
+
effective_total: number;
|
|
495
495
|
tax: number;
|
|
496
496
|
due_amount: number;
|
|
497
|
-
effective_due_amount:
|
|
497
|
+
effective_due_amount: number;
|
|
498
498
|
sent: string;
|
|
499
499
|
viewed: string;
|
|
500
500
|
sent_at: string;
|
|
@@ -514,10 +514,10 @@ export declare class PimiaClient {
|
|
|
514
514
|
creator_id: number | null;
|
|
515
515
|
base_tax: number;
|
|
516
516
|
base_due_amount: number;
|
|
517
|
-
effective_base_total:
|
|
518
|
-
effective_base_due_amount:
|
|
519
|
-
credited_total:
|
|
520
|
-
credited_base_total:
|
|
517
|
+
effective_base_total: number;
|
|
518
|
+
effective_base_due_amount: number | null;
|
|
519
|
+
credited_total: number;
|
|
520
|
+
credited_base_total: number;
|
|
521
521
|
currency_id: number | null;
|
|
522
522
|
formatted_created_at: string;
|
|
523
523
|
invoice_pdf_url: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -37,8 +37,21 @@ export declare const SCOPES: {
|
|
|
37
37
|
readonly reportsRead: "reports:read";
|
|
38
38
|
/** Leer la configuración de la empresa (impuestos, preferencias, series). */
|
|
39
39
|
readonly settingsRead: "settings:read";
|
|
40
|
+
/**
|
|
41
|
+
* Configurar la empresa: impuestos, preferencias, campos personalizados y el
|
|
42
|
+
* perfil del propio usuario (`PUT /me`). Ojo con ese último: cambiar el
|
|
43
|
+
* correo o la contraseña exige además `current_password`, que es del usuario
|
|
44
|
+
* y no tuya.
|
|
45
|
+
*/
|
|
46
|
+
readonly settingsWrite: "settings:write";
|
|
47
|
+
/** Cerrar y reabrir los trimestres fiscales del tenant. */
|
|
48
|
+
readonly reportsWrite: "reports:write";
|
|
40
49
|
/** Ver la tienda de módulos y qué tiene contratado el tenant. */
|
|
41
50
|
readonly storeRead: "store:read";
|
|
51
|
+
/** Instalar módulos de la tienda en el tenant. */
|
|
52
|
+
readonly storeWrite: "store:write";
|
|
53
|
+
/** Leer documentos con IA (OCR de gastos y de facturas recibidas). */
|
|
54
|
+
readonly ocrWrite: "ocr:write";
|
|
42
55
|
/** Leer la gestión de personal: empleados, ausencias, fichajes, calendarios. */
|
|
43
56
|
readonly hrRead: "hr:read";
|
|
44
57
|
/** Gestionar el personal: altas, ausencias, correcciones de fichaje, horarios. */
|
package/dist/index.js
CHANGED
|
@@ -33,8 +33,21 @@ export const SCOPES = {
|
|
|
33
33
|
reportsRead: 'reports:read',
|
|
34
34
|
/** Leer la configuración de la empresa (impuestos, preferencias, series). */
|
|
35
35
|
settingsRead: 'settings:read',
|
|
36
|
+
/**
|
|
37
|
+
* Configurar la empresa: impuestos, preferencias, campos personalizados y el
|
|
38
|
+
* perfil del propio usuario (`PUT /me`). Ojo con ese último: cambiar el
|
|
39
|
+
* correo o la contraseña exige además `current_password`, que es del usuario
|
|
40
|
+
* y no tuya.
|
|
41
|
+
*/
|
|
42
|
+
settingsWrite: 'settings:write',
|
|
43
|
+
/** Cerrar y reabrir los trimestres fiscales del tenant. */
|
|
44
|
+
reportsWrite: 'reports:write',
|
|
36
45
|
/** Ver la tienda de módulos y qué tiene contratado el tenant. */
|
|
37
46
|
storeRead: 'store:read',
|
|
47
|
+
/** Instalar módulos de la tienda en el tenant. */
|
|
48
|
+
storeWrite: 'store:write',
|
|
49
|
+
/** Leer documentos con IA (OCR de gastos y de facturas recibidas). */
|
|
50
|
+
ocrWrite: 'ocr:write',
|
|
38
51
|
/** Leer la gestión de personal: empleados, ausencias, fichajes, calendarios. */
|
|
39
52
|
hrRead: 'hr:read',
|
|
40
53
|
/** Gestionar el personal: altas, ausencias, correcciones de fichaje, horarios. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pimia/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Cliente TypeScript de la API de Pimia para apps de partner: OAuth con PKCE, rotación de refresh persistida, reintentos de rate limit y tipos generados del OpenAPI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Pimia (https://pimia.es)",
|