@vitrina/api 15.18.0 → 15.20.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/index.d.cts +2808 -314
- package/dist/index.d.ts +2808 -314
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -76078,6 +76078,7 @@ interface paths {
|
|
|
76078
76078
|
query?: {
|
|
76079
76079
|
kind?: "purchase" | "sale" | "honorario" | "manual_expense" | "tax";
|
|
76080
76080
|
source?: "sii" | "vitrina" | "manual" | "chipax";
|
|
76081
|
+
origin?: "ads";
|
|
76081
76082
|
period?: string;
|
|
76082
76083
|
from?: string;
|
|
76083
76084
|
to?: string;
|
|
@@ -82077,7 +82078,7 @@ interface paths {
|
|
|
82077
82078
|
get: {
|
|
82078
82079
|
parameters: {
|
|
82079
82080
|
query?: {
|
|
82080
|
-
kind?: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown";
|
|
82081
|
+
kind?: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown" | "ads_charge";
|
|
82081
82082
|
limit?: number;
|
|
82082
82083
|
offset?: number | null;
|
|
82083
82084
|
};
|
|
@@ -83610,7 +83611,11 @@ interface paths {
|
|
|
83610
83611
|
* "unreviewed_count": 4,
|
|
83611
83612
|
* "unclassified_count": 0,
|
|
83612
83613
|
* "unmatched_count": 0,
|
|
83613
|
-
* "
|
|
83614
|
+
* "unmatched_movements_count": 0,
|
|
83615
|
+
* "unmatched_documents_count": 0,
|
|
83616
|
+
* "unmatched_pending_clp": 0,
|
|
83617
|
+
* "unmatched_movements_pending_clp": 0,
|
|
83618
|
+
* "unmatched_documents_pending_clp": 0
|
|
83614
83619
|
* },
|
|
83615
83620
|
* "close": {
|
|
83616
83621
|
* "unreviewed_count": 4,
|
|
@@ -83656,6 +83661,10 @@ interface paths {
|
|
|
83656
83661
|
* "unmatched_movements": {
|
|
83657
83662
|
* "count": 0,
|
|
83658
83663
|
* "pending_clp": 0
|
|
83664
|
+
* },
|
|
83665
|
+
* "unmatched_documents": {
|
|
83666
|
+
* "count": 0,
|
|
83667
|
+
* "pending_clp": 0
|
|
83659
83668
|
* }
|
|
83660
83669
|
* }
|
|
83661
83670
|
* },
|
|
@@ -83803,7 +83812,11 @@ interface paths {
|
|
|
83803
83812
|
* "unreviewed_count": 4,
|
|
83804
83813
|
* "unclassified_count": 0,
|
|
83805
83814
|
* "unmatched_count": 0,
|
|
83806
|
-
* "
|
|
83815
|
+
* "unmatched_movements_count": 0,
|
|
83816
|
+
* "unmatched_documents_count": 0,
|
|
83817
|
+
* "unmatched_pending_clp": 0,
|
|
83818
|
+
* "unmatched_movements_pending_clp": 0,
|
|
83819
|
+
* "unmatched_documents_pending_clp": 0
|
|
83807
83820
|
* },
|
|
83808
83821
|
* "close": {
|
|
83809
83822
|
* "unreviewed_count": 4,
|
|
@@ -83849,6 +83862,10 @@ interface paths {
|
|
|
83849
83862
|
* "unmatched_movements": {
|
|
83850
83863
|
* "count": 0,
|
|
83851
83864
|
* "pending_clp": 0
|
|
83865
|
+
* },
|
|
83866
|
+
* "unmatched_documents": {
|
|
83867
|
+
* "count": 0,
|
|
83868
|
+
* "pending_clp": 0
|
|
83852
83869
|
* }
|
|
83853
83870
|
* }
|
|
83854
83871
|
* },
|
|
@@ -84087,7 +84104,7 @@ interface paths {
|
|
|
84087
84104
|
patch?: never;
|
|
84088
84105
|
trace?: never;
|
|
84089
84106
|
};
|
|
84090
|
-
"/finanzas/chipax": {
|
|
84107
|
+
"/finanzas/chipax/shadow": {
|
|
84091
84108
|
parameters: {
|
|
84092
84109
|
query?: never;
|
|
84093
84110
|
header?: never;
|
|
@@ -84095,8 +84112,8 @@ interface paths {
|
|
|
84095
84112
|
cookie?: never;
|
|
84096
84113
|
};
|
|
84097
84114
|
/**
|
|
84098
|
-
*
|
|
84099
|
-
* @description
|
|
84115
|
+
* Mes en sombra: the months read from Chipax
|
|
84116
|
+
* @description Each month with a Chipax read, newest first: its newest read (any status) and when it was last read successfully. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read` and `finanzas_reports:read` (the Contador seat, owners and admins).
|
|
84100
84117
|
*/
|
|
84101
84118
|
get: {
|
|
84102
84119
|
parameters: {
|
|
@@ -84107,7 +84124,7 @@ interface paths {
|
|
|
84107
84124
|
};
|
|
84108
84125
|
requestBody?: never;
|
|
84109
84126
|
responses: {
|
|
84110
|
-
/** @description
|
|
84127
|
+
/** @description Months */
|
|
84111
84128
|
200: {
|
|
84112
84129
|
headers: {
|
|
84113
84130
|
[name: string]: unknown;
|
|
@@ -84115,30 +84132,51 @@ interface paths {
|
|
|
84115
84132
|
content: {
|
|
84116
84133
|
/**
|
|
84117
84134
|
* @example {
|
|
84118
|
-
* "data":
|
|
84119
|
-
*
|
|
84120
|
-
*
|
|
84121
|
-
*
|
|
84122
|
-
*
|
|
84123
|
-
*
|
|
84124
|
-
*
|
|
84125
|
-
*
|
|
84126
|
-
*
|
|
84127
|
-
*
|
|
84128
|
-
*
|
|
84129
|
-
*
|
|
84130
|
-
*
|
|
84131
|
-
*
|
|
84132
|
-
*
|
|
84133
|
-
* "
|
|
84134
|
-
* "created_at": "2026-10-30T22:01:02.000Z",
|
|
84135
|
-
* "report": null
|
|
84135
|
+
* "data": [
|
|
84136
|
+
* {
|
|
84137
|
+
* "month": "2026-10",
|
|
84138
|
+
* "label": "octubre 2026",
|
|
84139
|
+
* "latest_read": {
|
|
84140
|
+
* "id": "01930000-0000-7000-8000-000000000017",
|
|
84141
|
+
* "month": "2026-10",
|
|
84142
|
+
* "status": "done",
|
|
84143
|
+
* "history_from": "2025-01-01",
|
|
84144
|
+
* "error": null,
|
|
84145
|
+
* "requested_by": "00000000-0000-4000-8000-000000000001",
|
|
84146
|
+
* "started_at": null,
|
|
84147
|
+
* "finished_at": null,
|
|
84148
|
+
* "created_at": "2026-11-02T12:00:00.000Z"
|
|
84149
|
+
* },
|
|
84150
|
+
* "read_at": "2026-11-02T12:04:10.000Z"
|
|
84136
84151
|
* }
|
|
84137
|
-
*
|
|
84152
|
+
* ]
|
|
84138
84153
|
* }
|
|
84139
84154
|
*/
|
|
84140
84155
|
"application/json": {
|
|
84141
|
-
data:
|
|
84156
|
+
data: {
|
|
84157
|
+
month: string;
|
|
84158
|
+
/** @description «septiembre 2026». */
|
|
84159
|
+
label: string;
|
|
84160
|
+
latest_read: {
|
|
84161
|
+
/** Format: uuid */
|
|
84162
|
+
id: string;
|
|
84163
|
+
month: string;
|
|
84164
|
+
/** @enum {string} */
|
|
84165
|
+
status: "queued" | "running" | "done" | "failed";
|
|
84166
|
+
/** @description Payables are compared among documents issued since this day (the earliest Chipax import, else a year before the month). */
|
|
84167
|
+
history_from: string;
|
|
84168
|
+
error: string | null;
|
|
84169
|
+
requested_by: string | null;
|
|
84170
|
+
/** @description ISO 8601 timestamp. */
|
|
84171
|
+
started_at: string | null;
|
|
84172
|
+
/** @description ISO 8601 timestamp. */
|
|
84173
|
+
finished_at: string | null;
|
|
84174
|
+
/** @description ISO 8601 timestamp. */
|
|
84175
|
+
created_at: string;
|
|
84176
|
+
};
|
|
84177
|
+
/** @description When the month was last read successfully. */
|
|
84178
|
+
read_at: string | null;
|
|
84179
|
+
}[];
|
|
84142
84180
|
};
|
|
84143
84181
|
};
|
|
84144
84182
|
};
|
|
@@ -84199,37 +84237,161 @@ interface paths {
|
|
|
84199
84237
|
};
|
|
84200
84238
|
};
|
|
84201
84239
|
put?: never;
|
|
84202
|
-
|
|
84240
|
+
/**
|
|
84241
|
+
* Mes en sombra: read Chipax's side of a month
|
|
84242
|
+
* @description Queues a read of Chipax for the month (bank lines and balances, open payables, classified items, Resultado Operacional), over the documents issued since `history_from`. Takes minutes (Chipax's rate limit). One read at a time; refused while a Chipax import runs (409 `import_running`) or another read runs (409 `read_running`); 409 `not_connected` without Chipax credentials. Vitrina only READS Chipax: it logs in and sends GET requests; it never creates, edits or deletes anything in the Chipax account. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas_admin:write`.
|
|
84243
|
+
*/
|
|
84244
|
+
post: {
|
|
84245
|
+
parameters: {
|
|
84246
|
+
query?: never;
|
|
84247
|
+
header?: {
|
|
84248
|
+
/** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
|
|
84249
|
+
"Idempotency-Key"?: string;
|
|
84250
|
+
};
|
|
84251
|
+
path?: never;
|
|
84252
|
+
cookie?: never;
|
|
84253
|
+
};
|
|
84254
|
+
requestBody?: {
|
|
84255
|
+
content: {
|
|
84256
|
+
/**
|
|
84257
|
+
* @example {
|
|
84258
|
+
* "month": "2026-10"
|
|
84259
|
+
* }
|
|
84260
|
+
*/
|
|
84261
|
+
"application/json": {
|
|
84262
|
+
/** @description The shadow month (default: the month before the current one, America/Santiago). Up to the current month; a future month answers 400. */
|
|
84263
|
+
month?: string;
|
|
84264
|
+
};
|
|
84265
|
+
};
|
|
84266
|
+
};
|
|
84267
|
+
responses: {
|
|
84268
|
+
/** @description Read queued */
|
|
84269
|
+
202: {
|
|
84270
|
+
headers: {
|
|
84271
|
+
[name: string]: unknown;
|
|
84272
|
+
};
|
|
84273
|
+
content: {
|
|
84274
|
+
/**
|
|
84275
|
+
* @example {
|
|
84276
|
+
* "data": {
|
|
84277
|
+
* "id": "01930000-0000-7000-8000-000000000017",
|
|
84278
|
+
* "month": "2026-10",
|
|
84279
|
+
* "status": "queued",
|
|
84280
|
+
* "history_from": "2025-01-01",
|
|
84281
|
+
* "error": null,
|
|
84282
|
+
* "requested_by": "00000000-0000-4000-8000-000000000001",
|
|
84283
|
+
* "started_at": null,
|
|
84284
|
+
* "finished_at": null,
|
|
84285
|
+
* "created_at": "2026-11-02T12:00:00.000Z"
|
|
84286
|
+
* }
|
|
84287
|
+
* }
|
|
84288
|
+
*/
|
|
84289
|
+
"application/json": {
|
|
84290
|
+
data: {
|
|
84291
|
+
/** Format: uuid */
|
|
84292
|
+
id: string;
|
|
84293
|
+
month: string;
|
|
84294
|
+
/** @enum {string} */
|
|
84295
|
+
status: "queued" | "running" | "done" | "failed";
|
|
84296
|
+
/** @description Payables are compared among documents issued since this day (the earliest Chipax import, else a year before the month). */
|
|
84297
|
+
history_from: string;
|
|
84298
|
+
error: string | null;
|
|
84299
|
+
requested_by: string | null;
|
|
84300
|
+
/** @description ISO 8601 timestamp. */
|
|
84301
|
+
started_at: string | null;
|
|
84302
|
+
/** @description ISO 8601 timestamp. */
|
|
84303
|
+
finished_at: string | null;
|
|
84304
|
+
/** @description ISO 8601 timestamp. */
|
|
84305
|
+
created_at: string;
|
|
84306
|
+
};
|
|
84307
|
+
};
|
|
84308
|
+
};
|
|
84309
|
+
};
|
|
84310
|
+
/** @description Validation error */
|
|
84311
|
+
400: {
|
|
84312
|
+
headers: {
|
|
84313
|
+
[name: string]: unknown;
|
|
84314
|
+
};
|
|
84315
|
+
content: {
|
|
84316
|
+
"application/json": components["schemas"]["Error"];
|
|
84317
|
+
};
|
|
84318
|
+
};
|
|
84319
|
+
/** @description Unauthorized */
|
|
84320
|
+
401: {
|
|
84321
|
+
headers: {
|
|
84322
|
+
[name: string]: unknown;
|
|
84323
|
+
};
|
|
84324
|
+
content: {
|
|
84325
|
+
"application/json": components["schemas"]["Error"];
|
|
84326
|
+
};
|
|
84327
|
+
};
|
|
84328
|
+
/** @description Forbidden */
|
|
84329
|
+
403: {
|
|
84330
|
+
headers: {
|
|
84331
|
+
[name: string]: unknown;
|
|
84332
|
+
};
|
|
84333
|
+
content: {
|
|
84334
|
+
"application/json": components["schemas"]["Error"];
|
|
84335
|
+
};
|
|
84336
|
+
};
|
|
84337
|
+
/** @description Not found */
|
|
84338
|
+
404: {
|
|
84339
|
+
headers: {
|
|
84340
|
+
[name: string]: unknown;
|
|
84341
|
+
};
|
|
84342
|
+
content: {
|
|
84343
|
+
"application/json": components["schemas"]["Error"];
|
|
84344
|
+
};
|
|
84345
|
+
};
|
|
84346
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
84347
|
+
409: {
|
|
84348
|
+
headers: {
|
|
84349
|
+
[name: string]: unknown;
|
|
84350
|
+
};
|
|
84351
|
+
content: {
|
|
84352
|
+
"application/json": components["schemas"]["Error"];
|
|
84353
|
+
};
|
|
84354
|
+
};
|
|
84355
|
+
/** @description Rate limited */
|
|
84356
|
+
429: {
|
|
84357
|
+
headers: {
|
|
84358
|
+
[name: string]: unknown;
|
|
84359
|
+
};
|
|
84360
|
+
content: {
|
|
84361
|
+
"application/json": components["schemas"]["Error"];
|
|
84362
|
+
};
|
|
84363
|
+
};
|
|
84364
|
+
};
|
|
84365
|
+
};
|
|
84203
84366
|
delete?: never;
|
|
84204
84367
|
options?: never;
|
|
84205
84368
|
head?: never;
|
|
84206
84369
|
patch?: never;
|
|
84207
84370
|
trace?: never;
|
|
84208
84371
|
};
|
|
84209
|
-
"/finanzas/chipax/
|
|
84372
|
+
"/finanzas/chipax/shadow/{month}": {
|
|
84210
84373
|
parameters: {
|
|
84211
84374
|
query?: never;
|
|
84212
84375
|
header?: never;
|
|
84213
84376
|
path?: never;
|
|
84214
84377
|
cookie?: never;
|
|
84215
84378
|
};
|
|
84216
|
-
get?: never;
|
|
84217
|
-
put?: never;
|
|
84218
|
-
post?: never;
|
|
84219
84379
|
/**
|
|
84220
|
-
*
|
|
84221
|
-
* @description
|
|
84380
|
+
* Mes en sombra: the diff against Chipax for a month
|
|
84381
|
+
* @description Balances (per bank account, at month end), payables (per Contraparte, open at month end) and costs (per costo / gasto account, NET as the Resultado counts) must match to the peso. Income is a bridge: Chipax counts it when cashed, Vitrina the documents issued in the month, so the gap is explained line by line. Vitrina's side is computed live; Chipax's side is the newest finished read. `clean` = all three match and the bridge is explained (the exit criterion). Each row's `key` drills down to its items. Before a finished read: `status` not_read / reading / failed and null dimensions. A caller without the patient register (the Contador) sees a patient as «Paciente A. P.» with no RUT and no glosa, on both sides; Chipax boletas carry neither RUT nor name. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read` and `finanzas_reports:read` (the Contador seat, owners and admins).
|
|
84222
84382
|
*/
|
|
84223
|
-
|
|
84383
|
+
get: {
|
|
84224
84384
|
parameters: {
|
|
84225
84385
|
query?: never;
|
|
84226
84386
|
header?: never;
|
|
84227
|
-
path
|
|
84387
|
+
path: {
|
|
84388
|
+
month: string;
|
|
84389
|
+
};
|
|
84228
84390
|
cookie?: never;
|
|
84229
84391
|
};
|
|
84230
84392
|
requestBody?: never;
|
|
84231
84393
|
responses: {
|
|
84232
|
-
/** @description
|
|
84394
|
+
/** @description The diff */
|
|
84233
84395
|
200: {
|
|
84234
84396
|
headers: {
|
|
84235
84397
|
[name: string]: unknown;
|
|
@@ -84238,29 +84400,873 @@ interface paths {
|
|
|
84238
84400
|
/**
|
|
84239
84401
|
* @example {
|
|
84240
84402
|
* "data": {
|
|
84241
|
-
* "
|
|
84242
|
-
* "
|
|
84243
|
-
* "
|
|
84244
|
-
* "
|
|
84245
|
-
*
|
|
84246
|
-
* "
|
|
84247
|
-
* "mode": "dry_run",
|
|
84403
|
+
* "month": "2026-10",
|
|
84404
|
+
* "label": "octubre 2026",
|
|
84405
|
+
* "status": "ready",
|
|
84406
|
+
* "read": {
|
|
84407
|
+
* "id": "01930000-0000-7000-8000-000000000017",
|
|
84408
|
+
* "month": "2026-10",
|
|
84248
84409
|
* "status": "done",
|
|
84249
|
-
* "
|
|
84250
|
-
* "to": "2026-10-30",
|
|
84251
|
-
* "account_map": [],
|
|
84252
|
-
* "requested_by": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f4f01",
|
|
84410
|
+
* "history_from": "2025-01-01",
|
|
84253
84411
|
* "error": null,
|
|
84254
|
-
* "
|
|
84255
|
-
* "
|
|
84256
|
-
* "
|
|
84257
|
-
* "
|
|
84412
|
+
* "requested_by": "00000000-0000-4000-8000-000000000001",
|
|
84413
|
+
* "started_at": null,
|
|
84414
|
+
* "finished_at": null,
|
|
84415
|
+
* "created_at": "2026-11-02T12:00:00.000Z"
|
|
84416
|
+
* },
|
|
84417
|
+
* "active_read": null,
|
|
84418
|
+
* "last_error": null,
|
|
84419
|
+
* "history_from": "2025-01-01",
|
|
84420
|
+
* "clean": false,
|
|
84421
|
+
* "warnings": [],
|
|
84422
|
+
* "balances": {
|
|
84423
|
+
* "matches": true,
|
|
84424
|
+
* "difference_count": 0,
|
|
84425
|
+
* "rows": [
|
|
84426
|
+
* {
|
|
84427
|
+
* "key": "bank:01930000-0000-7000-8000-0000000000b1",
|
|
84428
|
+
* "label": "Cuenta corriente",
|
|
84429
|
+
* "chipax_clp": 12480300,
|
|
84430
|
+
* "vitrina_clp": 12480300,
|
|
84431
|
+
* "difference_clp": 0,
|
|
84432
|
+
* "matches": true,
|
|
84433
|
+
* "item_count": 212,
|
|
84434
|
+
* "difference_count": 0,
|
|
84435
|
+
* "basis": "closing",
|
|
84436
|
+
* "vitrina_account": {
|
|
84437
|
+
* "id": "01930000-0000-7000-8000-0000000000b1",
|
|
84438
|
+
* "name": "Cuenta corriente",
|
|
84439
|
+
* "institution_name": "Banco de Chile",
|
|
84440
|
+
* "number_masked": "•••• 4321"
|
|
84441
|
+
* },
|
|
84442
|
+
* "chipax_account": {
|
|
84443
|
+
* "external_id": "881",
|
|
84444
|
+
* "name": "Cuenta corriente",
|
|
84445
|
+
* "bank": "Banco de Chile",
|
|
84446
|
+
* "number_masked": "•••• 4321"
|
|
84447
|
+
* },
|
|
84448
|
+
* "movements": {
|
|
84449
|
+
* "chipax_in_clp": 30100000,
|
|
84450
|
+
* "chipax_out_clp": 27620000,
|
|
84451
|
+
* "vitrina_in_clp": 30100000,
|
|
84452
|
+
* "vitrina_out_clp": 27620000
|
|
84453
|
+
* }
|
|
84454
|
+
* }
|
|
84455
|
+
* ]
|
|
84456
|
+
* },
|
|
84457
|
+
* "payables": {
|
|
84458
|
+
* "matches": false,
|
|
84459
|
+
* "chipax_clp": 4210000,
|
|
84460
|
+
* "vitrina_clp": 3800000,
|
|
84461
|
+
* "difference_clp": 410000,
|
|
84462
|
+
* "difference_count": 1,
|
|
84463
|
+
* "rows": [
|
|
84464
|
+
* {
|
|
84465
|
+
* "key": "p_0000000000000001",
|
|
84466
|
+
* "label": "Laboratorio Dental Andes Ltda",
|
|
84467
|
+
* "chipax_clp": 410000,
|
|
84468
|
+
* "vitrina_clp": null,
|
|
84469
|
+
* "difference_clp": 410000,
|
|
84470
|
+
* "matches": false,
|
|
84471
|
+
* "item_count": 1,
|
|
84472
|
+
* "difference_count": 1,
|
|
84473
|
+
* "rut": "76086428-5",
|
|
84474
|
+
* "contraparte_id": null
|
|
84475
|
+
* }
|
|
84476
|
+
* ]
|
|
84477
|
+
* },
|
|
84478
|
+
* "costs": {
|
|
84479
|
+
* "matches": true,
|
|
84480
|
+
* "chipax_clp": 9340000,
|
|
84481
|
+
* "vitrina_clp": 9340000,
|
|
84482
|
+
* "difference_clp": 0,
|
|
84483
|
+
* "difference_count": 0,
|
|
84484
|
+
* "rows": []
|
|
84485
|
+
* },
|
|
84486
|
+
* "income": {
|
|
84487
|
+
* "bridge": {
|
|
84488
|
+
* "vitrina_clp": 31500000,
|
|
84489
|
+
* "chipax_clp": 30100000,
|
|
84490
|
+
* "difference_clp": -1400000,
|
|
84491
|
+
* "explained": true,
|
|
84492
|
+
* "lines": [
|
|
84493
|
+
* {
|
|
84494
|
+
* "key": "timing_vitrina",
|
|
84495
|
+
* "label": "Emitidos en el mes que Chipax no cuenta en el mes (los cuenta al cobrarlos)",
|
|
84496
|
+
* "amount_clp": -2100000,
|
|
84497
|
+
* "item_count": 14
|
|
84498
|
+
* },
|
|
84499
|
+
* {
|
|
84500
|
+
* "key": "timing_chipax",
|
|
84501
|
+
* "label": "Documentos de otros meses que Chipax cuenta en este mes",
|
|
84502
|
+
* "amount_clp": 700000,
|
|
84503
|
+
* "item_count": 5
|
|
84504
|
+
* }
|
|
84505
|
+
* ]
|
|
84506
|
+
* },
|
|
84507
|
+
* "rows": [],
|
|
84508
|
+
* "production": null
|
|
84258
84509
|
* }
|
|
84259
84510
|
* }
|
|
84260
84511
|
* }
|
|
84261
84512
|
*/
|
|
84262
84513
|
"application/json": {
|
|
84263
|
-
data:
|
|
84514
|
+
data: {
|
|
84515
|
+
month: string;
|
|
84516
|
+
label: string;
|
|
84517
|
+
/** @enum {string} */
|
|
84518
|
+
status: "not_read" | "reading" | "ready" | "failed";
|
|
84519
|
+
read: {
|
|
84520
|
+
/** Format: uuid */
|
|
84521
|
+
id: string;
|
|
84522
|
+
month: string;
|
|
84523
|
+
/** @enum {string} */
|
|
84524
|
+
status: "queued" | "running" | "done" | "failed";
|
|
84525
|
+
/** @description Payables are compared among documents issued since this day (the earliest Chipax import, else a year before the month). */
|
|
84526
|
+
history_from: string;
|
|
84527
|
+
error: string | null;
|
|
84528
|
+
requested_by: string | null;
|
|
84529
|
+
/** @description ISO 8601 timestamp. */
|
|
84530
|
+
started_at: string | null;
|
|
84531
|
+
/** @description ISO 8601 timestamp. */
|
|
84532
|
+
finished_at: string | null;
|
|
84533
|
+
/** @description ISO 8601 timestamp. */
|
|
84534
|
+
created_at: string;
|
|
84535
|
+
} | null;
|
|
84536
|
+
active_read: {
|
|
84537
|
+
/** Format: uuid */
|
|
84538
|
+
id: string;
|
|
84539
|
+
month: string;
|
|
84540
|
+
/** @enum {string} */
|
|
84541
|
+
status: "queued" | "running" | "done" | "failed";
|
|
84542
|
+
/** @description Payables are compared among documents issued since this day (the earliest Chipax import, else a year before the month). */
|
|
84543
|
+
history_from: string;
|
|
84544
|
+
error: string | null;
|
|
84545
|
+
requested_by: string | null;
|
|
84546
|
+
/** @description ISO 8601 timestamp. */
|
|
84547
|
+
started_at: string | null;
|
|
84548
|
+
/** @description ISO 8601 timestamp. */
|
|
84549
|
+
finished_at: string | null;
|
|
84550
|
+
/** @description ISO 8601 timestamp. */
|
|
84551
|
+
created_at: string;
|
|
84552
|
+
} | null;
|
|
84553
|
+
last_error: string | null;
|
|
84554
|
+
history_from: string | null;
|
|
84555
|
+
/** @description Balances, payables and costs match and the income bridge is fully explained: the exit criterion of the shadow month. */
|
|
84556
|
+
clean: boolean | null;
|
|
84557
|
+
warnings: string[];
|
|
84558
|
+
balances: {
|
|
84559
|
+
matches: boolean;
|
|
84560
|
+
difference_count: number;
|
|
84561
|
+
rows: {
|
|
84562
|
+
/** @description Pass as `key` to the items endpoint. */
|
|
84563
|
+
key: string;
|
|
84564
|
+
label: string;
|
|
84565
|
+
/** @description Whole CLP. */
|
|
84566
|
+
chipax_clp: number | null;
|
|
84567
|
+
/** @description Whole CLP. */
|
|
84568
|
+
vitrina_clp: number | null;
|
|
84569
|
+
/** @description Chipax − Vitrina. */
|
|
84570
|
+
difference_clp: number;
|
|
84571
|
+
/** @description Zero tolerance: equal figures AND every item pairs. */
|
|
84572
|
+
matches: boolean;
|
|
84573
|
+
item_count: number;
|
|
84574
|
+
difference_count: number;
|
|
84575
|
+
/**
|
|
84576
|
+
* @description paired: both sides have the account (zero tolerance). only_vitrina: Chipax never tracked it (e.g. Mercado Pago); shown, never breaks `clean`, difference_clp is 0 and it has no items. only_chipax: Vitrina lacks the account; breaks `clean`.
|
|
84577
|
+
* @enum {string}
|
|
84578
|
+
*/
|
|
84579
|
+
side: "paired" | "only_vitrina" | "only_chipax";
|
|
84580
|
+
/**
|
|
84581
|
+
* @description closing = balances at month end; movements = the month's net movements (a side has no balance).
|
|
84582
|
+
* @enum {string}
|
|
84583
|
+
*/
|
|
84584
|
+
basis: "closing" | "movements";
|
|
84585
|
+
vitrina_account: {
|
|
84586
|
+
id: string;
|
|
84587
|
+
name: string;
|
|
84588
|
+
institution_name: string | null;
|
|
84589
|
+
number_masked: string | null;
|
|
84590
|
+
} | null;
|
|
84591
|
+
chipax_account: {
|
|
84592
|
+
/** @description Chipax's id of the account. */
|
|
84593
|
+
external_id: string;
|
|
84594
|
+
name: string | null;
|
|
84595
|
+
bank: string | null;
|
|
84596
|
+
number_masked: string | null;
|
|
84597
|
+
} | null;
|
|
84598
|
+
movements: {
|
|
84599
|
+
/** @description Whole CLP. */
|
|
84600
|
+
chipax_in_clp: number;
|
|
84601
|
+
/** @description Whole CLP. */
|
|
84602
|
+
chipax_out_clp: number;
|
|
84603
|
+
/** @description Whole CLP. */
|
|
84604
|
+
vitrina_in_clp: number;
|
|
84605
|
+
/** @description Whole CLP. */
|
|
84606
|
+
vitrina_out_clp: number;
|
|
84607
|
+
};
|
|
84608
|
+
}[];
|
|
84609
|
+
} | null;
|
|
84610
|
+
payables: {
|
|
84611
|
+
matches: boolean;
|
|
84612
|
+
/** @description Whole CLP. */
|
|
84613
|
+
chipax_clp: number;
|
|
84614
|
+
/** @description Whole CLP. */
|
|
84615
|
+
vitrina_clp: number;
|
|
84616
|
+
/** @description Whole CLP. */
|
|
84617
|
+
difference_clp: number;
|
|
84618
|
+
difference_count: number;
|
|
84619
|
+
rows: {
|
|
84620
|
+
/** @description Pass as `key` to the items endpoint. */
|
|
84621
|
+
key: string;
|
|
84622
|
+
label: string;
|
|
84623
|
+
/** @description Whole CLP. */
|
|
84624
|
+
chipax_clp: number | null;
|
|
84625
|
+
/** @description Whole CLP. */
|
|
84626
|
+
vitrina_clp: number | null;
|
|
84627
|
+
/** @description Chipax − Vitrina. */
|
|
84628
|
+
difference_clp: number;
|
|
84629
|
+
/** @description Zero tolerance: equal figures AND every item pairs. */
|
|
84630
|
+
matches: boolean;
|
|
84631
|
+
item_count: number;
|
|
84632
|
+
difference_count: number;
|
|
84633
|
+
rut: string | null;
|
|
84634
|
+
contraparte_id: string | null;
|
|
84635
|
+
}[];
|
|
84636
|
+
} | null;
|
|
84637
|
+
costs: {
|
|
84638
|
+
matches: boolean;
|
|
84639
|
+
/** @description Whole CLP. */
|
|
84640
|
+
chipax_clp: number;
|
|
84641
|
+
/** @description Whole CLP. */
|
|
84642
|
+
vitrina_clp: number;
|
|
84643
|
+
/** @description Whole CLP. */
|
|
84644
|
+
difference_clp: number;
|
|
84645
|
+
difference_count: number;
|
|
84646
|
+
rows: {
|
|
84647
|
+
/** @description Pass as `key` to the items endpoint. */
|
|
84648
|
+
key: string;
|
|
84649
|
+
label: string;
|
|
84650
|
+
/** @description Whole CLP. */
|
|
84651
|
+
chipax_clp: number | null;
|
|
84652
|
+
/** @description Whole CLP. */
|
|
84653
|
+
vitrina_clp: number | null;
|
|
84654
|
+
/** @description Chipax − Vitrina. */
|
|
84655
|
+
difference_clp: number;
|
|
84656
|
+
/** @description Zero tolerance: equal figures AND every item pairs. */
|
|
84657
|
+
matches: boolean;
|
|
84658
|
+
item_count: number;
|
|
84659
|
+
difference_count: number;
|
|
84660
|
+
vitrina_account: {
|
|
84661
|
+
id: string;
|
|
84662
|
+
name: string;
|
|
84663
|
+
path: string;
|
|
84664
|
+
kind: string;
|
|
84665
|
+
} | null;
|
|
84666
|
+
chipax_accounts: {
|
|
84667
|
+
external_id: number;
|
|
84668
|
+
name: string;
|
|
84669
|
+
path: string;
|
|
84670
|
+
}[];
|
|
84671
|
+
}[];
|
|
84672
|
+
} | null;
|
|
84673
|
+
income: {
|
|
84674
|
+
bridge: {
|
|
84675
|
+
/** @description Whole CLP. */
|
|
84676
|
+
vitrina_clp: number;
|
|
84677
|
+
/** @description Whole CLP. */
|
|
84678
|
+
chipax_clp: number;
|
|
84679
|
+
/** @description Whole CLP. */
|
|
84680
|
+
difference_clp: number;
|
|
84681
|
+
explained: boolean;
|
|
84682
|
+
lines: {
|
|
84683
|
+
/** @enum {string} */
|
|
84684
|
+
key: "timing_vitrina" | "timing_chipax" | "document_not_in_vitrina" | "cash_without_document" | "amount_basis" | "unitemised";
|
|
84685
|
+
label: string;
|
|
84686
|
+
/** @description Whole CLP. */
|
|
84687
|
+
amount_clp: number;
|
|
84688
|
+
item_count: number;
|
|
84689
|
+
}[];
|
|
84690
|
+
};
|
|
84691
|
+
rows: {
|
|
84692
|
+
/** @description Pass as `key` to the items endpoint. */
|
|
84693
|
+
key: string;
|
|
84694
|
+
label: string;
|
|
84695
|
+
/** @description Whole CLP. */
|
|
84696
|
+
chipax_clp: number | null;
|
|
84697
|
+
/** @description Whole CLP. */
|
|
84698
|
+
vitrina_clp: number | null;
|
|
84699
|
+
/** @description Chipax − Vitrina. */
|
|
84700
|
+
difference_clp: number;
|
|
84701
|
+
/** @description Zero tolerance: equal figures AND every item pairs. */
|
|
84702
|
+
matches: boolean;
|
|
84703
|
+
item_count: number;
|
|
84704
|
+
difference_count: number;
|
|
84705
|
+
vitrina_account: {
|
|
84706
|
+
id: string;
|
|
84707
|
+
name: string;
|
|
84708
|
+
path: string;
|
|
84709
|
+
kind: string;
|
|
84710
|
+
} | null;
|
|
84711
|
+
chipax_accounts: {
|
|
84712
|
+
external_id: number;
|
|
84713
|
+
name: string;
|
|
84714
|
+
path: string;
|
|
84715
|
+
}[];
|
|
84716
|
+
}[];
|
|
84717
|
+
production: {
|
|
84718
|
+
/** @description Whole CLP. */
|
|
84719
|
+
produccion_clp: number;
|
|
84720
|
+
/** @description Whole CLP. */
|
|
84721
|
+
por_cobrar_clp: number;
|
|
84722
|
+
/** @description Whole CLP. */
|
|
84723
|
+
anticipos_clp: number;
|
|
84724
|
+
/** @description Whole CLP. */
|
|
84725
|
+
cobrado_clp: number;
|
|
84726
|
+
/** @description Whole CLP. */
|
|
84727
|
+
boleteado_clp: number;
|
|
84728
|
+
/** @description Whole CLP. */
|
|
84729
|
+
cobrado_sin_boleta_clp: number;
|
|
84730
|
+
/** @description Whole CLP. */
|
|
84731
|
+
boletas_sin_pago_clp: number;
|
|
84732
|
+
} | null;
|
|
84733
|
+
} | null;
|
|
84734
|
+
};
|
|
84735
|
+
};
|
|
84736
|
+
};
|
|
84737
|
+
};
|
|
84738
|
+
/** @description Validation error */
|
|
84739
|
+
400: {
|
|
84740
|
+
headers: {
|
|
84741
|
+
[name: string]: unknown;
|
|
84742
|
+
};
|
|
84743
|
+
content: {
|
|
84744
|
+
"application/json": components["schemas"]["Error"];
|
|
84745
|
+
};
|
|
84746
|
+
};
|
|
84747
|
+
/** @description Unauthorized */
|
|
84748
|
+
401: {
|
|
84749
|
+
headers: {
|
|
84750
|
+
[name: string]: unknown;
|
|
84751
|
+
};
|
|
84752
|
+
content: {
|
|
84753
|
+
"application/json": components["schemas"]["Error"];
|
|
84754
|
+
};
|
|
84755
|
+
};
|
|
84756
|
+
/** @description Forbidden */
|
|
84757
|
+
403: {
|
|
84758
|
+
headers: {
|
|
84759
|
+
[name: string]: unknown;
|
|
84760
|
+
};
|
|
84761
|
+
content: {
|
|
84762
|
+
"application/json": components["schemas"]["Error"];
|
|
84763
|
+
};
|
|
84764
|
+
};
|
|
84765
|
+
/** @description Not found */
|
|
84766
|
+
404: {
|
|
84767
|
+
headers: {
|
|
84768
|
+
[name: string]: unknown;
|
|
84769
|
+
};
|
|
84770
|
+
content: {
|
|
84771
|
+
"application/json": components["schemas"]["Error"];
|
|
84772
|
+
};
|
|
84773
|
+
};
|
|
84774
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
84775
|
+
409: {
|
|
84776
|
+
headers: {
|
|
84777
|
+
[name: string]: unknown;
|
|
84778
|
+
};
|
|
84779
|
+
content: {
|
|
84780
|
+
"application/json": components["schemas"]["Error"];
|
|
84781
|
+
};
|
|
84782
|
+
};
|
|
84783
|
+
/** @description Rate limited */
|
|
84784
|
+
429: {
|
|
84785
|
+
headers: {
|
|
84786
|
+
[name: string]: unknown;
|
|
84787
|
+
};
|
|
84788
|
+
content: {
|
|
84789
|
+
"application/json": components["schemas"]["Error"];
|
|
84790
|
+
};
|
|
84791
|
+
};
|
|
84792
|
+
};
|
|
84793
|
+
};
|
|
84794
|
+
put?: never;
|
|
84795
|
+
post?: never;
|
|
84796
|
+
delete?: never;
|
|
84797
|
+
options?: never;
|
|
84798
|
+
head?: never;
|
|
84799
|
+
patch?: never;
|
|
84800
|
+
trace?: never;
|
|
84801
|
+
};
|
|
84802
|
+
"/finanzas/chipax/shadow/{month}/items": {
|
|
84803
|
+
parameters: {
|
|
84804
|
+
query?: never;
|
|
84805
|
+
header?: never;
|
|
84806
|
+
path?: never;
|
|
84807
|
+
cookie?: never;
|
|
84808
|
+
};
|
|
84809
|
+
/**
|
|
84810
|
+
* Mes en sombra: the items behind a row
|
|
84811
|
+
* @description The items of one row of the diff (`key` from the diff; `bridge:<line>` for an income bridge line), both sides side by side, biggest difference first. By default only the items that do not match. A caller without the patient register (the Contador) sees a patient as «Paciente A. P.» with no RUT and no glosa, on both sides; Chipax boletas carry neither RUT nor name. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read` and `finanzas_reports:read` (the Contador seat, owners and admins). 404 before a finished read.
|
|
84812
|
+
*/
|
|
84813
|
+
get: {
|
|
84814
|
+
parameters: {
|
|
84815
|
+
query: {
|
|
84816
|
+
dimension: "balances" | "payables" | "costs" | "income";
|
|
84817
|
+
key?: string;
|
|
84818
|
+
status?: "differences" | "all";
|
|
84819
|
+
limit?: number;
|
|
84820
|
+
offset?: number | null;
|
|
84821
|
+
};
|
|
84822
|
+
header?: never;
|
|
84823
|
+
path: {
|
|
84824
|
+
month: string;
|
|
84825
|
+
};
|
|
84826
|
+
cookie?: never;
|
|
84827
|
+
};
|
|
84828
|
+
requestBody?: never;
|
|
84829
|
+
responses: {
|
|
84830
|
+
/** @description Items */
|
|
84831
|
+
200: {
|
|
84832
|
+
headers: {
|
|
84833
|
+
[name: string]: unknown;
|
|
84834
|
+
};
|
|
84835
|
+
content: {
|
|
84836
|
+
/**
|
|
84837
|
+
* @example {
|
|
84838
|
+
* "data": {
|
|
84839
|
+
* "month": "2026-10",
|
|
84840
|
+
* "dimension": "payables",
|
|
84841
|
+
* "key": "p_0000000000000001",
|
|
84842
|
+
* "items": [
|
|
84843
|
+
* {
|
|
84844
|
+
* "key": "chipax:compra:9002",
|
|
84845
|
+
* "row_key": "p_0000000000000001",
|
|
84846
|
+
* "other_row_key": null,
|
|
84847
|
+
* "status": "chipax_only",
|
|
84848
|
+
* "chipax": {
|
|
84849
|
+
* "type": "document",
|
|
84850
|
+
* "id": null,
|
|
84851
|
+
* "chipax_ref": "compra:9002",
|
|
84852
|
+
* "label": "Factura electrónica N° 452",
|
|
84853
|
+
* "dte_type": 33,
|
|
84854
|
+
* "day": "2026-10-05",
|
|
84855
|
+
* "amount_clp": 410000,
|
|
84856
|
+
* "counterparty_name": "Laboratorio Dental Andes Ltda",
|
|
84857
|
+
* "counterparty_rut": "76086428-5",
|
|
84858
|
+
* "description": null
|
|
84859
|
+
* },
|
|
84860
|
+
* "vitrina": null,
|
|
84861
|
+
* "vitrina_document_id": null,
|
|
84862
|
+
* "difference_clp": 410000,
|
|
84863
|
+
* "bridge_line": null
|
|
84864
|
+
* }
|
|
84865
|
+
* ],
|
|
84866
|
+
* "total": 1,
|
|
84867
|
+
* "limit": 50,
|
|
84868
|
+
* "offset": 0,
|
|
84869
|
+
* "difference_clp": 410000
|
|
84870
|
+
* }
|
|
84871
|
+
* }
|
|
84872
|
+
*/
|
|
84873
|
+
"application/json": {
|
|
84874
|
+
data: {
|
|
84875
|
+
month: string;
|
|
84876
|
+
/** @enum {string} */
|
|
84877
|
+
dimension: "balances" | "payables" | "costs" | "income";
|
|
84878
|
+
key: string | null;
|
|
84879
|
+
items: {
|
|
84880
|
+
key: string;
|
|
84881
|
+
row_key: string;
|
|
84882
|
+
other_row_key: string | null;
|
|
84883
|
+
/**
|
|
84884
|
+
* @description match; chipax_only / vitrina_only; amount = both, different amounts; other_row = the other side has it under another row (account or Contraparte); unitemised = Chipax's total holds pesos with no item behind them.
|
|
84885
|
+
* @enum {string}
|
|
84886
|
+
*/
|
|
84887
|
+
status: "match" | "chipax_only" | "vitrina_only" | "amount" | "other_row" | "unitemised";
|
|
84888
|
+
chipax: {
|
|
84889
|
+
/** @enum {string} */
|
|
84890
|
+
type: "document" | "movement" | "total";
|
|
84891
|
+
/** @description Vitrina: the document or bank movement id. Chipax: null. */
|
|
84892
|
+
id: string | null;
|
|
84893
|
+
/** @description Chipax: `<model>:<id>` or `cartola:<id>`. Vitrina: null. */
|
|
84894
|
+
chipax_ref: string | null;
|
|
84895
|
+
/** @description «Factura electrónica N° 451». */
|
|
84896
|
+
label: string;
|
|
84897
|
+
dte_type: number | null;
|
|
84898
|
+
day: string | null;
|
|
84899
|
+
/** @description Signed, as the dimension counts it (money in +, out −, on balances). */
|
|
84900
|
+
amount_clp: number;
|
|
84901
|
+
counterparty_name: string | null;
|
|
84902
|
+
counterparty_rut: string | null;
|
|
84903
|
+
description: string | null;
|
|
84904
|
+
} | null;
|
|
84905
|
+
vitrina: {
|
|
84906
|
+
/** @enum {string} */
|
|
84907
|
+
type: "document" | "movement" | "total";
|
|
84908
|
+
/** @description Vitrina: the document or bank movement id. Chipax: null. */
|
|
84909
|
+
id: string | null;
|
|
84910
|
+
/** @description Chipax: `<model>:<id>` or `cartola:<id>`. Vitrina: null. */
|
|
84911
|
+
chipax_ref: string | null;
|
|
84912
|
+
/** @description «Factura electrónica N° 451». */
|
|
84913
|
+
label: string;
|
|
84914
|
+
dte_type: number | null;
|
|
84915
|
+
day: string | null;
|
|
84916
|
+
/** @description Signed, as the dimension counts it (money in +, out −, on balances). */
|
|
84917
|
+
amount_clp: number;
|
|
84918
|
+
counterparty_name: string | null;
|
|
84919
|
+
counterparty_rut: string | null;
|
|
84920
|
+
description: string | null;
|
|
84921
|
+
} | null;
|
|
84922
|
+
vitrina_document_id: string | null;
|
|
84923
|
+
/** @description Chipax − Vitrina. */
|
|
84924
|
+
difference_clp: number;
|
|
84925
|
+
/** @enum {string|null} */
|
|
84926
|
+
bridge_line: "timing_vitrina" | "timing_chipax" | "document_not_in_vitrina" | "cash_without_document" | "amount_basis" | "unitemised" | null;
|
|
84927
|
+
}[];
|
|
84928
|
+
total: number;
|
|
84929
|
+
limit: number;
|
|
84930
|
+
offset: number;
|
|
84931
|
+
/** @description Whole CLP. */
|
|
84932
|
+
difference_clp: number;
|
|
84933
|
+
};
|
|
84934
|
+
};
|
|
84935
|
+
};
|
|
84936
|
+
};
|
|
84937
|
+
/** @description Validation error */
|
|
84938
|
+
400: {
|
|
84939
|
+
headers: {
|
|
84940
|
+
[name: string]: unknown;
|
|
84941
|
+
};
|
|
84942
|
+
content: {
|
|
84943
|
+
"application/json": components["schemas"]["Error"];
|
|
84944
|
+
};
|
|
84945
|
+
};
|
|
84946
|
+
/** @description Unauthorized */
|
|
84947
|
+
401: {
|
|
84948
|
+
headers: {
|
|
84949
|
+
[name: string]: unknown;
|
|
84950
|
+
};
|
|
84951
|
+
content: {
|
|
84952
|
+
"application/json": components["schemas"]["Error"];
|
|
84953
|
+
};
|
|
84954
|
+
};
|
|
84955
|
+
/** @description Forbidden */
|
|
84956
|
+
403: {
|
|
84957
|
+
headers: {
|
|
84958
|
+
[name: string]: unknown;
|
|
84959
|
+
};
|
|
84960
|
+
content: {
|
|
84961
|
+
"application/json": components["schemas"]["Error"];
|
|
84962
|
+
};
|
|
84963
|
+
};
|
|
84964
|
+
/** @description Not found */
|
|
84965
|
+
404: {
|
|
84966
|
+
headers: {
|
|
84967
|
+
[name: string]: unknown;
|
|
84968
|
+
};
|
|
84969
|
+
content: {
|
|
84970
|
+
"application/json": components["schemas"]["Error"];
|
|
84971
|
+
};
|
|
84972
|
+
};
|
|
84973
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
84974
|
+
409: {
|
|
84975
|
+
headers: {
|
|
84976
|
+
[name: string]: unknown;
|
|
84977
|
+
};
|
|
84978
|
+
content: {
|
|
84979
|
+
"application/json": components["schemas"]["Error"];
|
|
84980
|
+
};
|
|
84981
|
+
};
|
|
84982
|
+
/** @description Rate limited */
|
|
84983
|
+
429: {
|
|
84984
|
+
headers: {
|
|
84985
|
+
[name: string]: unknown;
|
|
84986
|
+
};
|
|
84987
|
+
content: {
|
|
84988
|
+
"application/json": components["schemas"]["Error"];
|
|
84989
|
+
};
|
|
84990
|
+
};
|
|
84991
|
+
};
|
|
84992
|
+
};
|
|
84993
|
+
put?: never;
|
|
84994
|
+
post?: never;
|
|
84995
|
+
delete?: never;
|
|
84996
|
+
options?: never;
|
|
84997
|
+
head?: never;
|
|
84998
|
+
patch?: never;
|
|
84999
|
+
trace?: never;
|
|
85000
|
+
};
|
|
85001
|
+
"/finanzas/chipax/shadow/{month}/export": {
|
|
85002
|
+
parameters: {
|
|
85003
|
+
query?: never;
|
|
85004
|
+
header?: never;
|
|
85005
|
+
path?: never;
|
|
85006
|
+
cookie?: never;
|
|
85007
|
+
};
|
|
85008
|
+
/**
|
|
85009
|
+
* Mes en sombra: download the diff (xlsx)
|
|
85010
|
+
* @description One workbook: «Resumen», «Saldos bancarios», «Por pagar», «Costos y gastos», «Puente de ingresos» and «Diferencias» (every item that does not match, all dimensions). A caller without the patient register (the Contador) sees a patient as «Paciente A. P.» with no RUT and no glosa, on both sides; Chipax boletas carry neither RUT nor name. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`, `finanzas_reports:read` and `finanzas:export`. 404 before a finished read.
|
|
85011
|
+
*/
|
|
85012
|
+
get: {
|
|
85013
|
+
parameters: {
|
|
85014
|
+
query?: never;
|
|
85015
|
+
header?: never;
|
|
85016
|
+
path: {
|
|
85017
|
+
month: string;
|
|
85018
|
+
};
|
|
85019
|
+
cookie?: never;
|
|
85020
|
+
};
|
|
85021
|
+
requestBody?: never;
|
|
85022
|
+
responses: {
|
|
85023
|
+
/** @description The workbook, as an attachment */
|
|
85024
|
+
200: {
|
|
85025
|
+
headers: {
|
|
85026
|
+
[name: string]: unknown;
|
|
85027
|
+
};
|
|
85028
|
+
content: {
|
|
85029
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": string;
|
|
85030
|
+
};
|
|
85031
|
+
};
|
|
85032
|
+
/** @description Validation error */
|
|
85033
|
+
400: {
|
|
85034
|
+
headers: {
|
|
85035
|
+
[name: string]: unknown;
|
|
85036
|
+
};
|
|
85037
|
+
content: {
|
|
85038
|
+
"application/json": components["schemas"]["Error"];
|
|
85039
|
+
};
|
|
85040
|
+
};
|
|
85041
|
+
/** @description Unauthorized */
|
|
85042
|
+
401: {
|
|
85043
|
+
headers: {
|
|
85044
|
+
[name: string]: unknown;
|
|
85045
|
+
};
|
|
85046
|
+
content: {
|
|
85047
|
+
"application/json": components["schemas"]["Error"];
|
|
85048
|
+
};
|
|
85049
|
+
};
|
|
85050
|
+
/** @description Forbidden */
|
|
85051
|
+
403: {
|
|
85052
|
+
headers: {
|
|
85053
|
+
[name: string]: unknown;
|
|
85054
|
+
};
|
|
85055
|
+
content: {
|
|
85056
|
+
"application/json": components["schemas"]["Error"];
|
|
85057
|
+
};
|
|
85058
|
+
};
|
|
85059
|
+
/** @description Not found */
|
|
85060
|
+
404: {
|
|
85061
|
+
headers: {
|
|
85062
|
+
[name: string]: unknown;
|
|
85063
|
+
};
|
|
85064
|
+
content: {
|
|
85065
|
+
"application/json": components["schemas"]["Error"];
|
|
85066
|
+
};
|
|
85067
|
+
};
|
|
85068
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
85069
|
+
409: {
|
|
85070
|
+
headers: {
|
|
85071
|
+
[name: string]: unknown;
|
|
85072
|
+
};
|
|
85073
|
+
content: {
|
|
85074
|
+
"application/json": components["schemas"]["Error"];
|
|
85075
|
+
};
|
|
85076
|
+
};
|
|
85077
|
+
/** @description Rate limited */
|
|
85078
|
+
429: {
|
|
85079
|
+
headers: {
|
|
85080
|
+
[name: string]: unknown;
|
|
85081
|
+
};
|
|
85082
|
+
content: {
|
|
85083
|
+
"application/json": components["schemas"]["Error"];
|
|
85084
|
+
};
|
|
85085
|
+
};
|
|
85086
|
+
};
|
|
85087
|
+
};
|
|
85088
|
+
put?: never;
|
|
85089
|
+
post?: never;
|
|
85090
|
+
delete?: never;
|
|
85091
|
+
options?: never;
|
|
85092
|
+
head?: never;
|
|
85093
|
+
patch?: never;
|
|
85094
|
+
trace?: never;
|
|
85095
|
+
};
|
|
85096
|
+
"/finanzas/chipax": {
|
|
85097
|
+
parameters: {
|
|
85098
|
+
query?: never;
|
|
85099
|
+
header?: never;
|
|
85100
|
+
path?: never;
|
|
85101
|
+
cookie?: never;
|
|
85102
|
+
};
|
|
85103
|
+
/**
|
|
85104
|
+
* Importar desde Chipax: connection and runs
|
|
85105
|
+
* @description Whether the workspace stored its Chipax API credentials (only a masked App ID hint, never the secret), the run in progress and the last finished one. Vitrina only READS Chipax: it logs in and sends GET requests; it never creates, edits or deletes anything in the Chipax account. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`.
|
|
85106
|
+
*/
|
|
85107
|
+
get: {
|
|
85108
|
+
parameters: {
|
|
85109
|
+
query?: never;
|
|
85110
|
+
header?: never;
|
|
85111
|
+
path?: never;
|
|
85112
|
+
cookie?: never;
|
|
85113
|
+
};
|
|
85114
|
+
requestBody?: never;
|
|
85115
|
+
responses: {
|
|
85116
|
+
/** @description Connection and runs */
|
|
85117
|
+
200: {
|
|
85118
|
+
headers: {
|
|
85119
|
+
[name: string]: unknown;
|
|
85120
|
+
};
|
|
85121
|
+
content: {
|
|
85122
|
+
/**
|
|
85123
|
+
* @example {
|
|
85124
|
+
* "data": {
|
|
85125
|
+
* "connected": true,
|
|
85126
|
+
* "app_id_preview": "a1b…9f2",
|
|
85127
|
+
* "verified_at": "2026-10-30T21:58:40.000Z",
|
|
85128
|
+
* "active_import": null,
|
|
85129
|
+
* "last_import": {
|
|
85130
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f5a16",
|
|
85131
|
+
* "mode": "dry_run",
|
|
85132
|
+
* "status": "done",
|
|
85133
|
+
* "from": "2025-01-01",
|
|
85134
|
+
* "to": "2026-10-30",
|
|
85135
|
+
* "account_map": [],
|
|
85136
|
+
* "requested_by": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f4f01",
|
|
85137
|
+
* "error": null,
|
|
85138
|
+
* "started_at": "2026-10-30T22:01:04.000Z",
|
|
85139
|
+
* "finished_at": "2026-10-30T22:14:51.000Z",
|
|
85140
|
+
* "created_at": "2026-10-30T22:01:02.000Z",
|
|
85141
|
+
* "report": null
|
|
85142
|
+
* }
|
|
85143
|
+
* }
|
|
85144
|
+
* }
|
|
85145
|
+
*/
|
|
85146
|
+
"application/json": {
|
|
85147
|
+
data: components["schemas"]["FinanzasChipaxStatus"];
|
|
85148
|
+
};
|
|
85149
|
+
};
|
|
85150
|
+
};
|
|
85151
|
+
/** @description Validation error */
|
|
85152
|
+
400: {
|
|
85153
|
+
headers: {
|
|
85154
|
+
[name: string]: unknown;
|
|
85155
|
+
};
|
|
85156
|
+
content: {
|
|
85157
|
+
"application/json": components["schemas"]["Error"];
|
|
85158
|
+
};
|
|
85159
|
+
};
|
|
85160
|
+
/** @description Unauthorized */
|
|
85161
|
+
401: {
|
|
85162
|
+
headers: {
|
|
85163
|
+
[name: string]: unknown;
|
|
85164
|
+
};
|
|
85165
|
+
content: {
|
|
85166
|
+
"application/json": components["schemas"]["Error"];
|
|
85167
|
+
};
|
|
85168
|
+
};
|
|
85169
|
+
/** @description Forbidden */
|
|
85170
|
+
403: {
|
|
85171
|
+
headers: {
|
|
85172
|
+
[name: string]: unknown;
|
|
85173
|
+
};
|
|
85174
|
+
content: {
|
|
85175
|
+
"application/json": components["schemas"]["Error"];
|
|
85176
|
+
};
|
|
85177
|
+
};
|
|
85178
|
+
/** @description Not found */
|
|
85179
|
+
404: {
|
|
85180
|
+
headers: {
|
|
85181
|
+
[name: string]: unknown;
|
|
85182
|
+
};
|
|
85183
|
+
content: {
|
|
85184
|
+
"application/json": components["schemas"]["Error"];
|
|
85185
|
+
};
|
|
85186
|
+
};
|
|
85187
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
85188
|
+
409: {
|
|
85189
|
+
headers: {
|
|
85190
|
+
[name: string]: unknown;
|
|
85191
|
+
};
|
|
85192
|
+
content: {
|
|
85193
|
+
"application/json": components["schemas"]["Error"];
|
|
85194
|
+
};
|
|
85195
|
+
};
|
|
85196
|
+
/** @description Rate limited */
|
|
85197
|
+
429: {
|
|
85198
|
+
headers: {
|
|
85199
|
+
[name: string]: unknown;
|
|
85200
|
+
};
|
|
85201
|
+
content: {
|
|
85202
|
+
"application/json": components["schemas"]["Error"];
|
|
85203
|
+
};
|
|
85204
|
+
};
|
|
85205
|
+
};
|
|
85206
|
+
};
|
|
85207
|
+
put?: never;
|
|
85208
|
+
post?: never;
|
|
85209
|
+
delete?: never;
|
|
85210
|
+
options?: never;
|
|
85211
|
+
head?: never;
|
|
85212
|
+
patch?: never;
|
|
85213
|
+
trace?: never;
|
|
85214
|
+
};
|
|
85215
|
+
"/finanzas/chipax/credentials": {
|
|
85216
|
+
parameters: {
|
|
85217
|
+
query?: never;
|
|
85218
|
+
header?: never;
|
|
85219
|
+
path?: never;
|
|
85220
|
+
cookie?: never;
|
|
85221
|
+
};
|
|
85222
|
+
get?: never;
|
|
85223
|
+
put?: never;
|
|
85224
|
+
post?: never;
|
|
85225
|
+
/**
|
|
85226
|
+
* Importar desde Chipax: «Eliminar credenciales»
|
|
85227
|
+
* @description Deletes the stored Chipax credentials. What was already imported stays. Idempotent. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas_admin:write`.
|
|
85228
|
+
*/
|
|
85229
|
+
delete: {
|
|
85230
|
+
parameters: {
|
|
85231
|
+
query?: never;
|
|
85232
|
+
header?: never;
|
|
85233
|
+
path?: never;
|
|
85234
|
+
cookie?: never;
|
|
85235
|
+
};
|
|
85236
|
+
requestBody?: never;
|
|
85237
|
+
responses: {
|
|
85238
|
+
/** @description Deleted */
|
|
85239
|
+
200: {
|
|
85240
|
+
headers: {
|
|
85241
|
+
[name: string]: unknown;
|
|
85242
|
+
};
|
|
85243
|
+
content: {
|
|
85244
|
+
/**
|
|
85245
|
+
* @example {
|
|
85246
|
+
* "data": {
|
|
85247
|
+
* "connected": false,
|
|
85248
|
+
* "app_id_preview": null,
|
|
85249
|
+
* "verified_at": null,
|
|
85250
|
+
* "active_import": null,
|
|
85251
|
+
* "last_import": {
|
|
85252
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f5a16",
|
|
85253
|
+
* "mode": "dry_run",
|
|
85254
|
+
* "status": "done",
|
|
85255
|
+
* "from": "2025-01-01",
|
|
85256
|
+
* "to": "2026-10-30",
|
|
85257
|
+
* "account_map": [],
|
|
85258
|
+
* "requested_by": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f4f01",
|
|
85259
|
+
* "error": null,
|
|
85260
|
+
* "started_at": "2026-10-30T22:01:04.000Z",
|
|
85261
|
+
* "finished_at": "2026-10-30T22:14:51.000Z",
|
|
85262
|
+
* "created_at": "2026-10-30T22:01:02.000Z",
|
|
85263
|
+
* "report": null
|
|
85264
|
+
* }
|
|
85265
|
+
* }
|
|
85266
|
+
* }
|
|
85267
|
+
*/
|
|
85268
|
+
"application/json": {
|
|
85269
|
+
data: components["schemas"]["FinanzasChipaxStatus"];
|
|
84264
85270
|
};
|
|
84265
85271
|
};
|
|
84266
85272
|
};
|
|
@@ -86135,6 +87141,7 @@ interface paths {
|
|
|
86135
87141
|
query?: {
|
|
86136
87142
|
from?: string;
|
|
86137
87143
|
to?: string;
|
|
87144
|
+
horizon_days?: number;
|
|
86138
87145
|
granularity?: "day" | "week";
|
|
86139
87146
|
};
|
|
86140
87147
|
header?: never;
|
|
@@ -86265,6 +87272,10 @@ interface paths {
|
|
|
86265
87272
|
* "receivables_clp": 0,
|
|
86266
87273
|
* "receivables_count": 0
|
|
86267
87274
|
* },
|
|
87275
|
+
* "typical_income": {
|
|
87276
|
+
* "basis": "history",
|
|
87277
|
+
* "weeks": 12
|
|
87278
|
+
* },
|
|
86268
87279
|
* "band_basis": {
|
|
86269
87280
|
* "from": "2026-08-01",
|
|
86270
87281
|
* "to": "2026-10-29",
|
|
@@ -86611,6 +87622,7 @@ interface paths {
|
|
|
86611
87622
|
parameters: {
|
|
86612
87623
|
query?: {
|
|
86613
87624
|
dry_run?: "true" | "false";
|
|
87625
|
+
horizon_days?: number;
|
|
86614
87626
|
};
|
|
86615
87627
|
header?: {
|
|
86616
87628
|
/** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
|
|
@@ -86721,6 +87733,10 @@ interface paths {
|
|
|
86721
87733
|
* "high_clp": 4020000
|
|
86722
87734
|
* }
|
|
86723
87735
|
* }
|
|
87736
|
+
* },
|
|
87737
|
+
* "horizon": {
|
|
87738
|
+
* "days": 30,
|
|
87739
|
+
* "to": "2026-11-30"
|
|
86724
87740
|
* }
|
|
86725
87741
|
* }
|
|
86726
87742
|
* }
|
|
@@ -86809,7 +87825,9 @@ interface paths {
|
|
|
86809
87825
|
*/
|
|
86810
87826
|
delete: {
|
|
86811
87827
|
parameters: {
|
|
86812
|
-
query?:
|
|
87828
|
+
query?: {
|
|
87829
|
+
horizon_days?: number;
|
|
87830
|
+
};
|
|
86813
87831
|
header?: never;
|
|
86814
87832
|
path: {
|
|
86815
87833
|
id: string;
|
|
@@ -86899,6 +87917,10 @@ interface paths {
|
|
|
86899
87917
|
* "high_clp": 4020000
|
|
86900
87918
|
* }
|
|
86901
87919
|
* }
|
|
87920
|
+
* },
|
|
87921
|
+
* "horizon": {
|
|
87922
|
+
* "days": 30,
|
|
87923
|
+
* "to": "2026-11-30"
|
|
86902
87924
|
* }
|
|
86903
87925
|
* }
|
|
86904
87926
|
* }
|
|
@@ -86987,6 +88009,7 @@ interface paths {
|
|
|
86987
88009
|
parameters: {
|
|
86988
88010
|
query?: {
|
|
86989
88011
|
dry_run?: "true" | "false";
|
|
88012
|
+
horizon_days?: number;
|
|
86990
88013
|
};
|
|
86991
88014
|
header?: {
|
|
86992
88015
|
/** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
|
|
@@ -87083,6 +88106,10 @@ interface paths {
|
|
|
87083
88106
|
* "high_clp": 4020000
|
|
87084
88107
|
* }
|
|
87085
88108
|
* }
|
|
88109
|
+
* },
|
|
88110
|
+
* "horizon": {
|
|
88111
|
+
* "days": 30,
|
|
88112
|
+
* "to": "2026-11-30"
|
|
87086
88113
|
* }
|
|
87087
88114
|
* }
|
|
87088
88115
|
* }
|
|
@@ -87176,6 +88203,10 @@ interface paths {
|
|
|
87176
88203
|
* "high_clp": 4020000
|
|
87177
88204
|
* }
|
|
87178
88205
|
* }
|
|
88206
|
+
* },
|
|
88207
|
+
* "horizon": {
|
|
88208
|
+
* "days": 30,
|
|
88209
|
+
* "to": "2026-11-30"
|
|
87179
88210
|
* }
|
|
87180
88211
|
* }
|
|
87181
88212
|
* }
|
|
@@ -87872,7 +88903,7 @@ interface paths {
|
|
|
87872
88903
|
patch?: never;
|
|
87873
88904
|
trace?: never;
|
|
87874
88905
|
};
|
|
87875
|
-
"/finanzas/
|
|
88906
|
+
"/finanzas/alerts": {
|
|
87876
88907
|
parameters: {
|
|
87877
88908
|
query?: never;
|
|
87878
88909
|
header?: never;
|
|
@@ -87880,22 +88911,139 @@ interface paths {
|
|
|
87880
88911
|
cookie?: never;
|
|
87881
88912
|
};
|
|
87882
88913
|
/**
|
|
87883
|
-
*
|
|
87884
|
-
* @description
|
|
88914
|
+
* Active Finanzas alerts
|
|
88915
|
+
* @description The alerts whose condition still holds: `cash_negative` (the Flujo de caja projection drops below zero in the next 30 days), `f29_due` (an F29 with something to pay is due within 5 days, unpaid) and `supplier_invoice_missing` (a Contraparte that invoiced each of the last 3 months has nothing this month, 3 days past its usual day). Evaluated hourly from 09:00 workspace time; each event is announced once to the owners and admins (bell and email by default; WhatsApp only on the opt-in `finanzas_whatsapp` rail) and leaves this list when its condition ends. Newest first. Requires the `finanzas` add-on (402 `ENTITLEMENT_NOT_ACTIVE` otherwise) and `finanzas:read`; the cash alert is listed only with `finanzas_reports:read` too.
|
|
87885
88916
|
*/
|
|
87886
88917
|
get: {
|
|
87887
88918
|
parameters: {
|
|
87888
|
-
query?:
|
|
87889
|
-
|
|
87890
|
-
|
|
88919
|
+
query?: never;
|
|
88920
|
+
header?: never;
|
|
88921
|
+
path?: never;
|
|
88922
|
+
cookie?: never;
|
|
88923
|
+
};
|
|
88924
|
+
requestBody?: never;
|
|
88925
|
+
responses: {
|
|
88926
|
+
/** @description The active alerts */
|
|
88927
|
+
200: {
|
|
88928
|
+
headers: {
|
|
88929
|
+
[name: string]: unknown;
|
|
88930
|
+
};
|
|
88931
|
+
content: {
|
|
88932
|
+
/**
|
|
88933
|
+
* @example {
|
|
88934
|
+
* "data": [
|
|
88935
|
+
* {
|
|
88936
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f8a01",
|
|
88937
|
+
* "kind": "f29_due",
|
|
88938
|
+
* "title": "El F29 de octubre vence el 20 de noviembre",
|
|
88939
|
+
* "body": "Hay que pagar $842.000 (monto estimado) al SII antes del 20 de noviembre. Cuando el pago aparezca en tus movimientos, el F29 queda como pagado.",
|
|
88940
|
+
* "cta_label": "Ver F29",
|
|
88941
|
+
* "path": "/finanzas/documentos?vista=f29",
|
|
88942
|
+
* "opened_on": "2026-11-15",
|
|
88943
|
+
* "notified_at": "2026-11-15T12:00:04.000Z",
|
|
88944
|
+
* "updated_at": "2026-11-16T12:00:03.000Z",
|
|
88945
|
+
* "data": {
|
|
88946
|
+
* "period": "2026-10",
|
|
88947
|
+
* "due_date": "2026-11-20",
|
|
88948
|
+
* "amount_clp": 842000,
|
|
88949
|
+
* "days_left": 4,
|
|
88950
|
+
* "amount_is_final": false,
|
|
88951
|
+
* "document_id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f7a01"
|
|
88952
|
+
* }
|
|
88953
|
+
* }
|
|
88954
|
+
* ]
|
|
88955
|
+
* }
|
|
88956
|
+
*/
|
|
88957
|
+
"application/json": {
|
|
88958
|
+
data: components["schemas"]["FinanzasAlertList"];
|
|
88959
|
+
};
|
|
88960
|
+
};
|
|
88961
|
+
};
|
|
88962
|
+
/** @description Validation error */
|
|
88963
|
+
400: {
|
|
88964
|
+
headers: {
|
|
88965
|
+
[name: string]: unknown;
|
|
88966
|
+
};
|
|
88967
|
+
content: {
|
|
88968
|
+
"application/json": components["schemas"]["Error"];
|
|
88969
|
+
};
|
|
88970
|
+
};
|
|
88971
|
+
/** @description Unauthorized */
|
|
88972
|
+
401: {
|
|
88973
|
+
headers: {
|
|
88974
|
+
[name: string]: unknown;
|
|
88975
|
+
};
|
|
88976
|
+
content: {
|
|
88977
|
+
"application/json": components["schemas"]["Error"];
|
|
88978
|
+
};
|
|
88979
|
+
};
|
|
88980
|
+
/** @description Forbidden */
|
|
88981
|
+
403: {
|
|
88982
|
+
headers: {
|
|
88983
|
+
[name: string]: unknown;
|
|
88984
|
+
};
|
|
88985
|
+
content: {
|
|
88986
|
+
"application/json": components["schemas"]["Error"];
|
|
88987
|
+
};
|
|
88988
|
+
};
|
|
88989
|
+
/** @description Not found */
|
|
88990
|
+
404: {
|
|
88991
|
+
headers: {
|
|
88992
|
+
[name: string]: unknown;
|
|
88993
|
+
};
|
|
88994
|
+
content: {
|
|
88995
|
+
"application/json": components["schemas"]["Error"];
|
|
88996
|
+
};
|
|
87891
88997
|
};
|
|
88998
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
88999
|
+
409: {
|
|
89000
|
+
headers: {
|
|
89001
|
+
[name: string]: unknown;
|
|
89002
|
+
};
|
|
89003
|
+
content: {
|
|
89004
|
+
"application/json": components["schemas"]["Error"];
|
|
89005
|
+
};
|
|
89006
|
+
};
|
|
89007
|
+
/** @description Rate limited */
|
|
89008
|
+
429: {
|
|
89009
|
+
headers: {
|
|
89010
|
+
[name: string]: unknown;
|
|
89011
|
+
};
|
|
89012
|
+
content: {
|
|
89013
|
+
"application/json": components["schemas"]["Error"];
|
|
89014
|
+
};
|
|
89015
|
+
};
|
|
89016
|
+
};
|
|
89017
|
+
};
|
|
89018
|
+
put?: never;
|
|
89019
|
+
post?: never;
|
|
89020
|
+
delete?: never;
|
|
89021
|
+
options?: never;
|
|
89022
|
+
head?: never;
|
|
89023
|
+
patch?: never;
|
|
89024
|
+
trace?: never;
|
|
89025
|
+
};
|
|
89026
|
+
"/finanzas/digest/preview": {
|
|
89027
|
+
parameters: {
|
|
89028
|
+
query?: never;
|
|
89029
|
+
header?: never;
|
|
89030
|
+
path?: never;
|
|
89031
|
+
cookie?: never;
|
|
89032
|
+
};
|
|
89033
|
+
/**
|
|
89034
|
+
* Preview the weekly Finanzas digest
|
|
89035
|
+
* @description What this week's «Resumen semanal de Finanzas» says to the caller, read now from the Resumen (`GET /finanzas/resumen`), so the figures match the home. The digest goes out every Monday from 09:00 workspace time, at most once per workspace and week, to every member with `finanzas:read`: email by default, WhatsApp only on the opt-in `finanzas_whatsapp` rail; each member turns it off in their notification preferences (`finanzas.weekly_digest`). A workspace with no finance data gets none (`will_send: false`). Without `finanzas_reports:read` there are no cash or result figures; without the patient roster patients read as initials. Sends nothing. Requires the `finanzas` add-on (402 `ENTITLEMENT_NOT_ACTIVE` otherwise) and `finanzas:read`.
|
|
89036
|
+
*/
|
|
89037
|
+
get: {
|
|
89038
|
+
parameters: {
|
|
89039
|
+
query?: never;
|
|
87892
89040
|
header?: never;
|
|
87893
89041
|
path?: never;
|
|
87894
89042
|
cookie?: never;
|
|
87895
89043
|
};
|
|
87896
89044
|
requestBody?: never;
|
|
87897
89045
|
responses: {
|
|
87898
|
-
/** @description The
|
|
89046
|
+
/** @description The digest as the caller would read it this week */
|
|
87899
89047
|
200: {
|
|
87900
89048
|
headers: {
|
|
87901
89049
|
[name: string]: unknown;
|
|
@@ -87904,177 +89052,330 @@ interface paths {
|
|
|
87904
89052
|
/**
|
|
87905
89053
|
* @example {
|
|
87906
89054
|
* "data": {
|
|
87907
|
-
* "
|
|
87908
|
-
* "
|
|
87909
|
-
* "
|
|
87910
|
-
* "
|
|
87911
|
-
* "
|
|
87912
|
-
* "
|
|
87913
|
-
* "
|
|
87914
|
-
*
|
|
87915
|
-
*
|
|
87916
|
-
* "label": "septiembre 2026",
|
|
87917
|
-
* "proforma": false,
|
|
87918
|
-
* "ingresos_clp": 48000000,
|
|
87919
|
-
* "variables_clp": 24000000,
|
|
87920
|
-
* "sin_clasificar_clp": 0,
|
|
87921
|
-
* "fijos_clp": 26000000,
|
|
87922
|
-
* "contribucion_clp": 24000000,
|
|
87923
|
-
* "contribucion_pct": 50,
|
|
87924
|
-
* "equilibrio_clp": 52000000,
|
|
87925
|
-
* "equilibrio_sin_calculo": null,
|
|
87926
|
-
* "brecha_clp": -4000000,
|
|
87927
|
-
* "cobertura_pct": 92.3,
|
|
87928
|
-
* "resultado_clp": -2000000
|
|
87929
|
-
* },
|
|
87930
|
-
* {
|
|
87931
|
-
* "month": "2026-10",
|
|
87932
|
-
* "label": "octubre 2026",
|
|
87933
|
-
* "proforma": true,
|
|
87934
|
-
* "ingresos_clp": 30000000,
|
|
87935
|
-
* "variables_clp": 14000000,
|
|
87936
|
-
* "sin_clasificar_clp": 0,
|
|
87937
|
-
* "fijos_clp": 25000000,
|
|
87938
|
-
* "contribucion_clp": 16000000,
|
|
87939
|
-
* "contribucion_pct": 53.3,
|
|
87940
|
-
* "equilibrio_clp": 46875000,
|
|
87941
|
-
* "equilibrio_sin_calculo": null,
|
|
87942
|
-
* "brecha_clp": -16875000,
|
|
87943
|
-
* "cobertura_pct": 64,
|
|
87944
|
-
* "resultado_clp": -9000000
|
|
87945
|
-
* }
|
|
87946
|
-
* ],
|
|
87947
|
-
* "period": {
|
|
87948
|
-
* "ingresos_clp": 39000000,
|
|
87949
|
-
* "variables_clp": 19000000,
|
|
87950
|
-
* "sin_clasificar_clp": 0,
|
|
87951
|
-
* "fijos_clp": 25500000,
|
|
87952
|
-
* "contribucion_clp": 20000000,
|
|
87953
|
-
* "contribucion_pct": 51.3,
|
|
87954
|
-
* "equilibrio_clp": 49725000,
|
|
87955
|
-
* "equilibrio_sin_calculo": null,
|
|
87956
|
-
* "brecha_clp": -10725000,
|
|
87957
|
-
* "cobertura_pct": 78.4,
|
|
87958
|
-
* "resultado_clp": -5500000,
|
|
87959
|
-
* "months": 2
|
|
89055
|
+
* "week_start": "2026-11-02",
|
|
89056
|
+
* "send_at": "2026-11-02T12:00:00.000Z",
|
|
89057
|
+
* "next_send_at": "2026-11-09T12:00:00.000Z",
|
|
89058
|
+
* "status": "pending",
|
|
89059
|
+
* "sent_at": null,
|
|
89060
|
+
* "will_send": true,
|
|
89061
|
+
* "channels": {
|
|
89062
|
+
* "email": true,
|
|
89063
|
+
* "whatsapp": false
|
|
87960
89064
|
* },
|
|
87961
|
-
* "
|
|
87962
|
-
*
|
|
87963
|
-
*
|
|
87964
|
-
* "
|
|
87965
|
-
* "
|
|
87966
|
-
* "
|
|
87967
|
-
* "behavior": "variable",
|
|
87968
|
-
* "behavior_inherited": false,
|
|
87969
|
-
* "values": [
|
|
87970
|
-
* 16000000,
|
|
87971
|
-
* 9500000
|
|
87972
|
-
* ],
|
|
87973
|
-
* "total_clp": 25500000
|
|
89065
|
+
* "email": {
|
|
89066
|
+
* "subject": "Resumen semanal de Finanzas: $12.340.000 en caja",
|
|
89067
|
+
* "hero": {
|
|
89068
|
+
* "label": "Caja hoy",
|
|
89069
|
+
* "value": "$12.340.000",
|
|
89070
|
+
* "caption": "A fin de mes: $8.200.000. En 30 días: $9.100.000."
|
|
87974
89071
|
* },
|
|
87975
|
-
* {
|
|
87976
|
-
* "
|
|
87977
|
-
* "
|
|
87978
|
-
*
|
|
87979
|
-
*
|
|
87980
|
-
*
|
|
87981
|
-
*
|
|
87982
|
-
*
|
|
87983
|
-
*
|
|
87984
|
-
*
|
|
87985
|
-
* ],
|
|
87986
|
-
* "total_clp": 8400000
|
|
87987
|
-
* }
|
|
87988
|
-
* ],
|
|
87989
|
-
* "dentist_share": {
|
|
87990
|
-
* "account_ids": [
|
|
87991
|
-
* "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6101"
|
|
87992
|
-
* ],
|
|
87993
|
-
* "source": "detected",
|
|
87994
|
-
* "values": [
|
|
87995
|
-
* 16000000,
|
|
87996
|
-
* 9500000
|
|
87997
|
-
* ],
|
|
87998
|
-
* "total_clp": 25500000,
|
|
87999
|
-
* "pct": [
|
|
88000
|
-
* 33.3,
|
|
88001
|
-
* 31.7
|
|
89072
|
+
* "problem": {
|
|
89073
|
+
* "text": "La caja alcanza hasta el 23 de noviembre. Ese martes pagas Arriendo y quedarías en negativo por $450.000.",
|
|
89074
|
+
* "link": {
|
|
89075
|
+
* "label": "Ver flujo de caja y cómo cubrirlo",
|
|
89076
|
+
* "path": "/finanzas/reportes/flujo-de-caja"
|
|
89077
|
+
* }
|
|
89078
|
+
* },
|
|
89079
|
+
* "lines": [
|
|
89080
|
+
* "Noviembre va en $6.100.000 de ingresos, de $9.800.000 para cubrir costos. Por ahora el mes pierde $1.200.000.",
|
|
89081
|
+
* "3 casos te necesitan en Por resolver, por $840.000."
|
|
88002
89082
|
* ],
|
|
88003
|
-
* "
|
|
88004
|
-
*
|
|
88005
|
-
* "
|
|
88006
|
-
*
|
|
88007
|
-
*
|
|
88008
|
-
* "
|
|
88009
|
-
*
|
|
88010
|
-
* 9999000
|
|
88011
|
-
* ],
|
|
88012
|
-
* "total_clp": 25997400
|
|
89083
|
+
* "primary": {
|
|
89084
|
+
* "label": "Ver Resumen",
|
|
89085
|
+
* "path": "/finanzas"
|
|
89086
|
+
* },
|
|
89087
|
+
* "secondary": {
|
|
89088
|
+
* "label": "Ir a Por resolver",
|
|
89089
|
+
* "path": "/finanzas/por-resolver"
|
|
88013
89090
|
* }
|
|
88014
89091
|
* },
|
|
88015
|
-
* "
|
|
88016
|
-
*
|
|
88017
|
-
* "
|
|
88018
|
-
*
|
|
88019
|
-
*
|
|
88020
|
-
*
|
|
88021
|
-
* "
|
|
88022
|
-
*
|
|
88023
|
-
*
|
|
88024
|
-
*
|
|
88025
|
-
* "
|
|
88026
|
-
* "attended_hours_total": 1867.5,
|
|
88027
|
-
* "production_clp": [
|
|
88028
|
-
* 52000000,
|
|
88029
|
-
* 33000000
|
|
88030
|
-
* ],
|
|
88031
|
-
* "production_total_clp": 85000000,
|
|
88032
|
-
* "production_source": "clinic_mirror",
|
|
88033
|
-
* "occupancy_pct": [
|
|
88034
|
-
* 75.5,
|
|
88035
|
-
* 73.9
|
|
88036
|
-
* ],
|
|
88037
|
-
* "occupancy_pct_total": 74.8,
|
|
88038
|
-
* "costo_hora_disponible_clp": [
|
|
88039
|
-
* 18056,
|
|
88040
|
-
* 23674
|
|
88041
|
-
* ],
|
|
88042
|
-
* "costo_hora_disponible_total_clp": 20433,
|
|
88043
|
-
* "costo_hora_atendida_clp": [
|
|
88044
|
-
* 45998,
|
|
88045
|
-
* 50000
|
|
88046
|
-
* ],
|
|
88047
|
-
* "costo_hora_atendida_total_clp": 47657,
|
|
88048
|
-
* "produccion_hora_atendida_clp": [
|
|
88049
|
-
* 47838,
|
|
88050
|
-
* 42281
|
|
88051
|
-
* ],
|
|
88052
|
-
* "produccion_hora_atendida_total_clp": 45515,
|
|
88053
|
-
* "branches": [
|
|
88054
|
-
* {
|
|
88055
|
-
* "branch_id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6201",
|
|
88056
|
-
* "name": "Casa matriz",
|
|
88057
|
-
* "chairs": 6,
|
|
88058
|
-
* "available_hours": [
|
|
88059
|
-
* 1440,
|
|
88060
|
-
* 1056
|
|
88061
|
-
* ],
|
|
88062
|
-
* "attended_hours": [
|
|
88063
|
-
* 1087,
|
|
88064
|
-
* 780.5
|
|
88065
|
-
* ],
|
|
88066
|
-
* "available_hours_total": 2496,
|
|
88067
|
-
* "attended_hours_total": 1867.5,
|
|
88068
|
-
* "occupancy_pct": 74.8
|
|
88069
|
-
* }
|
|
88070
|
-
* ],
|
|
88071
|
-
* "missing": []
|
|
89092
|
+
* "whatsapp_text": "Caja hoy: $12.340.000. La caja alcanza hasta el 23 de noviembre. Ese martes pagas Arriendo y quedarías en negativo por $450.000. 3 casos te necesitan en Por resolver, por $840.000.",
|
|
89093
|
+
* "figures": {
|
|
89094
|
+
* "reports_visible": true,
|
|
89095
|
+
* "cash_today_clp": 12340000,
|
|
89096
|
+
* "month_end_clp": 8200000,
|
|
89097
|
+
* "in_30_days_clp": 9100000,
|
|
89098
|
+
* "runs_out_date": "2026-11-24",
|
|
89099
|
+
* "ingresos_clp": 6100000,
|
|
89100
|
+
* "resultado_clp": -1200000,
|
|
89101
|
+
* "equilibrio_clp": 9800000,
|
|
89102
|
+
* "open_cases": 3
|
|
88072
89103
|
* }
|
|
88073
89104
|
* }
|
|
88074
89105
|
* }
|
|
88075
89106
|
*/
|
|
88076
89107
|
"application/json": {
|
|
88077
|
-
data: components["schemas"]["
|
|
89108
|
+
data: components["schemas"]["FinanzasDigestPreview"];
|
|
89109
|
+
};
|
|
89110
|
+
};
|
|
89111
|
+
};
|
|
89112
|
+
/** @description Validation error */
|
|
89113
|
+
400: {
|
|
89114
|
+
headers: {
|
|
89115
|
+
[name: string]: unknown;
|
|
89116
|
+
};
|
|
89117
|
+
content: {
|
|
89118
|
+
"application/json": components["schemas"]["Error"];
|
|
89119
|
+
};
|
|
89120
|
+
};
|
|
89121
|
+
/** @description Unauthorized */
|
|
89122
|
+
401: {
|
|
89123
|
+
headers: {
|
|
89124
|
+
[name: string]: unknown;
|
|
89125
|
+
};
|
|
89126
|
+
content: {
|
|
89127
|
+
"application/json": components["schemas"]["Error"];
|
|
89128
|
+
};
|
|
89129
|
+
};
|
|
89130
|
+
/** @description Forbidden */
|
|
89131
|
+
403: {
|
|
89132
|
+
headers: {
|
|
89133
|
+
[name: string]: unknown;
|
|
89134
|
+
};
|
|
89135
|
+
content: {
|
|
89136
|
+
"application/json": components["schemas"]["Error"];
|
|
89137
|
+
};
|
|
89138
|
+
};
|
|
89139
|
+
/** @description Not found */
|
|
89140
|
+
404: {
|
|
89141
|
+
headers: {
|
|
89142
|
+
[name: string]: unknown;
|
|
89143
|
+
};
|
|
89144
|
+
content: {
|
|
89145
|
+
"application/json": components["schemas"]["Error"];
|
|
89146
|
+
};
|
|
89147
|
+
};
|
|
89148
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
89149
|
+
409: {
|
|
89150
|
+
headers: {
|
|
89151
|
+
[name: string]: unknown;
|
|
89152
|
+
};
|
|
89153
|
+
content: {
|
|
89154
|
+
"application/json": components["schemas"]["Error"];
|
|
89155
|
+
};
|
|
89156
|
+
};
|
|
89157
|
+
/** @description Rate limited */
|
|
89158
|
+
429: {
|
|
89159
|
+
headers: {
|
|
89160
|
+
[name: string]: unknown;
|
|
89161
|
+
};
|
|
89162
|
+
content: {
|
|
89163
|
+
"application/json": components["schemas"]["Error"];
|
|
89164
|
+
};
|
|
89165
|
+
};
|
|
89166
|
+
};
|
|
89167
|
+
};
|
|
89168
|
+
put?: never;
|
|
89169
|
+
post?: never;
|
|
89170
|
+
delete?: never;
|
|
89171
|
+
options?: never;
|
|
89172
|
+
head?: never;
|
|
89173
|
+
patch?: never;
|
|
89174
|
+
trace?: never;
|
|
89175
|
+
};
|
|
89176
|
+
"/finanzas/costos": {
|
|
89177
|
+
parameters: {
|
|
89178
|
+
query?: never;
|
|
89179
|
+
header?: never;
|
|
89180
|
+
path?: never;
|
|
89181
|
+
cookie?: never;
|
|
89182
|
+
};
|
|
89183
|
+
/**
|
|
89184
|
+
* Costos y equilibrio: fixed vs variable costs and the break-even
|
|
89185
|
+
* @description Reportes › Costos y equilibrio, from the classified result (the same net amounts as the Resultado). Per month and for the period: ingresos, costos variables (accounts flagged variable, documented or not, plus «Egresos sin clasificar», reported apart in `sin_clasificar_clp`), costos fijos, margen de contribución and its %, and the **punto de equilibrio** = fijos ÷ margen de contribución %, the monthly income at which the result is zero, with income against it (`brecha_clp`, `cobertura_pct`). An account without its own flag takes its nearest ancestor’s. Clinics also get `dentist_share` (the treating dentist’s share, a variable cost, with the optional reference line, «Un tercio de la venta» by default) and `hora_sillon`: fijos ÷ available chair-hours (chairs × opening hours of each branch; the current month counts the days lived so far), all costs ÷ attended hours (completed citas), occupancy and production per attended hour, per branch and total. Other verticals see break-even only. Default: January of the current year to the current month; at most 24 months. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas_reports:read`.
|
|
89186
|
+
*/
|
|
89187
|
+
get: {
|
|
89188
|
+
parameters: {
|
|
89189
|
+
query?: {
|
|
89190
|
+
from?: string;
|
|
89191
|
+
to?: string;
|
|
89192
|
+
};
|
|
89193
|
+
header?: never;
|
|
89194
|
+
path?: never;
|
|
89195
|
+
cookie?: never;
|
|
89196
|
+
};
|
|
89197
|
+
requestBody?: never;
|
|
89198
|
+
responses: {
|
|
89199
|
+
/** @description The report */
|
|
89200
|
+
200: {
|
|
89201
|
+
headers: {
|
|
89202
|
+
[name: string]: unknown;
|
|
89203
|
+
};
|
|
89204
|
+
content: {
|
|
89205
|
+
/**
|
|
89206
|
+
* @example {
|
|
89207
|
+
* "data": {
|
|
89208
|
+
* "from": "2026-09",
|
|
89209
|
+
* "to": "2026-10",
|
|
89210
|
+
* "current_month": "2026-10",
|
|
89211
|
+
* "currency": "CLP",
|
|
89212
|
+
* "is_clinic": true,
|
|
89213
|
+
* "reference_month": "2026-09",
|
|
89214
|
+
* "months": [
|
|
89215
|
+
* {
|
|
89216
|
+
* "month": "2026-09",
|
|
89217
|
+
* "label": "septiembre 2026",
|
|
89218
|
+
* "proforma": false,
|
|
89219
|
+
* "ingresos_clp": 48000000,
|
|
89220
|
+
* "variables_clp": 24000000,
|
|
89221
|
+
* "sin_clasificar_clp": 0,
|
|
89222
|
+
* "fijos_clp": 26000000,
|
|
89223
|
+
* "contribucion_clp": 24000000,
|
|
89224
|
+
* "contribucion_pct": 50,
|
|
89225
|
+
* "equilibrio_clp": 52000000,
|
|
89226
|
+
* "equilibrio_sin_calculo": null,
|
|
89227
|
+
* "brecha_clp": -4000000,
|
|
89228
|
+
* "cobertura_pct": 92.3,
|
|
89229
|
+
* "resultado_clp": -2000000
|
|
89230
|
+
* },
|
|
89231
|
+
* {
|
|
89232
|
+
* "month": "2026-10",
|
|
89233
|
+
* "label": "octubre 2026",
|
|
89234
|
+
* "proforma": true,
|
|
89235
|
+
* "ingresos_clp": 30000000,
|
|
89236
|
+
* "variables_clp": 14000000,
|
|
89237
|
+
* "sin_clasificar_clp": 0,
|
|
89238
|
+
* "fijos_clp": 25000000,
|
|
89239
|
+
* "contribucion_clp": 16000000,
|
|
89240
|
+
* "contribucion_pct": 53.3,
|
|
89241
|
+
* "equilibrio_clp": 46875000,
|
|
89242
|
+
* "equilibrio_sin_calculo": null,
|
|
89243
|
+
* "brecha_clp": -16875000,
|
|
89244
|
+
* "cobertura_pct": 64,
|
|
89245
|
+
* "resultado_clp": -9000000
|
|
89246
|
+
* }
|
|
89247
|
+
* ],
|
|
89248
|
+
* "period": {
|
|
89249
|
+
* "ingresos_clp": 39000000,
|
|
89250
|
+
* "variables_clp": 19000000,
|
|
89251
|
+
* "sin_clasificar_clp": 0,
|
|
89252
|
+
* "fijos_clp": 25500000,
|
|
89253
|
+
* "contribucion_clp": 20000000,
|
|
89254
|
+
* "contribucion_pct": 51.3,
|
|
89255
|
+
* "equilibrio_clp": 49725000,
|
|
89256
|
+
* "equilibrio_sin_calculo": null,
|
|
89257
|
+
* "brecha_clp": -10725000,
|
|
89258
|
+
* "cobertura_pct": 78.4,
|
|
89259
|
+
* "resultado_clp": -5500000,
|
|
89260
|
+
* "months": 2
|
|
89261
|
+
* },
|
|
89262
|
+
* "accounts": [
|
|
89263
|
+
* {
|
|
89264
|
+
* "account_id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6101",
|
|
89265
|
+
* "name": "Dentistas (honorarios y liquidaciones)",
|
|
89266
|
+
* "path": "Costos de explotación › Dentistas (honorarios y liquidaciones)",
|
|
89267
|
+
* "kind": "costo",
|
|
89268
|
+
* "behavior": "variable",
|
|
89269
|
+
* "behavior_inherited": false,
|
|
89270
|
+
* "values": [
|
|
89271
|
+
* 16000000,
|
|
89272
|
+
* 9500000
|
|
89273
|
+
* ],
|
|
89274
|
+
* "total_clp": 25500000
|
|
89275
|
+
* },
|
|
89276
|
+
* {
|
|
89277
|
+
* "account_id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6102",
|
|
89278
|
+
* "name": "Arriendo",
|
|
89279
|
+
* "path": "Gastos de administración y venta › Gastos generales › Arriendo",
|
|
89280
|
+
* "kind": "gasto",
|
|
89281
|
+
* "behavior": "fijo",
|
|
89282
|
+
* "behavior_inherited": false,
|
|
89283
|
+
* "values": [
|
|
89284
|
+
* 4200000,
|
|
89285
|
+
* 4200000
|
|
89286
|
+
* ],
|
|
89287
|
+
* "total_clp": 8400000
|
|
89288
|
+
* }
|
|
89289
|
+
* ],
|
|
89290
|
+
* "dentist_share": {
|
|
89291
|
+
* "account_ids": [
|
|
89292
|
+
* "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6101"
|
|
89293
|
+
* ],
|
|
89294
|
+
* "source": "detected",
|
|
89295
|
+
* "values": [
|
|
89296
|
+
* 16000000,
|
|
89297
|
+
* 9500000
|
|
89298
|
+
* ],
|
|
89299
|
+
* "total_clp": 25500000,
|
|
89300
|
+
* "pct": [
|
|
89301
|
+
* 33.3,
|
|
89302
|
+
* 31.7
|
|
89303
|
+
* ],
|
|
89304
|
+
* "pct_total": 32.7,
|
|
89305
|
+
* "reference": {
|
|
89306
|
+
* "enabled": true,
|
|
89307
|
+
* "share_bps": 3333,
|
|
89308
|
+
* "label": "Un tercio de la venta",
|
|
89309
|
+
* "values": [
|
|
89310
|
+
* 15998400,
|
|
89311
|
+
* 9999000
|
|
89312
|
+
* ],
|
|
89313
|
+
* "total_clp": 25997400
|
|
89314
|
+
* }
|
|
89315
|
+
* },
|
|
89316
|
+
* "hora_sillon": {
|
|
89317
|
+
* "chairs": 6,
|
|
89318
|
+
* "available_hours": [
|
|
89319
|
+
* 1440,
|
|
89320
|
+
* 1056
|
|
89321
|
+
* ],
|
|
89322
|
+
* "attended_hours": [
|
|
89323
|
+
* 1087,
|
|
89324
|
+
* 780.5
|
|
89325
|
+
* ],
|
|
89326
|
+
* "available_hours_total": 2496,
|
|
89327
|
+
* "attended_hours_total": 1867.5,
|
|
89328
|
+
* "production_clp": [
|
|
89329
|
+
* 52000000,
|
|
89330
|
+
* 33000000
|
|
89331
|
+
* ],
|
|
89332
|
+
* "production_total_clp": 85000000,
|
|
89333
|
+
* "production_source": "clinic_mirror",
|
|
89334
|
+
* "occupancy_pct": [
|
|
89335
|
+
* 75.5,
|
|
89336
|
+
* 73.9
|
|
89337
|
+
* ],
|
|
89338
|
+
* "occupancy_pct_total": 74.8,
|
|
89339
|
+
* "costo_hora_disponible_clp": [
|
|
89340
|
+
* 18056,
|
|
89341
|
+
* 23674
|
|
89342
|
+
* ],
|
|
89343
|
+
* "costo_hora_disponible_total_clp": 20433,
|
|
89344
|
+
* "costo_hora_atendida_clp": [
|
|
89345
|
+
* 45998,
|
|
89346
|
+
* 50000
|
|
89347
|
+
* ],
|
|
89348
|
+
* "costo_hora_atendida_total_clp": 47657,
|
|
89349
|
+
* "produccion_hora_atendida_clp": [
|
|
89350
|
+
* 47838,
|
|
89351
|
+
* 42281
|
|
89352
|
+
* ],
|
|
89353
|
+
* "produccion_hora_atendida_total_clp": 45515,
|
|
89354
|
+
* "branches": [
|
|
89355
|
+
* {
|
|
89356
|
+
* "branch_id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6201",
|
|
89357
|
+
* "name": "Casa matriz",
|
|
89358
|
+
* "chairs": 6,
|
|
89359
|
+
* "available_hours": [
|
|
89360
|
+
* 1440,
|
|
89361
|
+
* 1056
|
|
89362
|
+
* ],
|
|
89363
|
+
* "attended_hours": [
|
|
89364
|
+
* 1087,
|
|
89365
|
+
* 780.5
|
|
89366
|
+
* ],
|
|
89367
|
+
* "available_hours_total": 2496,
|
|
89368
|
+
* "attended_hours_total": 1867.5,
|
|
89369
|
+
* "occupancy_pct": 74.8
|
|
89370
|
+
* }
|
|
89371
|
+
* ],
|
|
89372
|
+
* "missing": []
|
|
89373
|
+
* }
|
|
89374
|
+
* }
|
|
89375
|
+
* }
|
|
89376
|
+
*/
|
|
89377
|
+
"application/json": {
|
|
89378
|
+
data: components["schemas"]["FinanzasCostos"];
|
|
88078
89379
|
};
|
|
88079
89380
|
};
|
|
88080
89381
|
};
|
|
@@ -88357,6 +89658,328 @@ interface paths {
|
|
|
88357
89658
|
};
|
|
88358
89659
|
trace?: never;
|
|
88359
89660
|
};
|
|
89661
|
+
"/finanzas/resumen": {
|
|
89662
|
+
parameters: {
|
|
89663
|
+
query?: never;
|
|
89664
|
+
header?: never;
|
|
89665
|
+
path?: never;
|
|
89666
|
+
cookie?: never;
|
|
89667
|
+
};
|
|
89668
|
+
/**
|
|
89669
|
+
* Resumen: the Finanzas home, three answers and the context
|
|
89670
|
+
* @description The Finanzas home in one read, every figure from its detail screen: **cash** («¿cuánto me queda a fin de mes?») = the Flujo de caja projection — today’s balance of the operating accounts, the month-end and 30-day balance, the lowest point and `runs_out` (the first day under zero within 30 days, with its biggest payment); **result** («¿cuánto gasto? / ¿este mes gana plata?») = Costos y equilibrio for the current month at net amounts (ingresos, gastos = variables + fijos, «sin clasificar» apart and counted as variable, resultado operacional) against the punto de equilibrio of the last closed month; **inbox** («Te necesita») = the open «Por resolver» cases and the previous month’s close state; **automatic** = this month’s «Hecho por Vitrina» totals and the newest 3; **accounts** with their balances. `problem` is the one thing shown in red (cash running out, else a bank connection that needs a person). A caller without `finanzas_reports:read` gets `cash` and `result` null (`reports_visible: false`). A Contador sees patients as initials. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`.
|
|
89671
|
+
*/
|
|
89672
|
+
get: {
|
|
89673
|
+
parameters: {
|
|
89674
|
+
query?: never;
|
|
89675
|
+
header?: never;
|
|
89676
|
+
path?: never;
|
|
89677
|
+
cookie?: never;
|
|
89678
|
+
};
|
|
89679
|
+
requestBody?: never;
|
|
89680
|
+
responses: {
|
|
89681
|
+
/** @description The Resumen */
|
|
89682
|
+
200: {
|
|
89683
|
+
headers: {
|
|
89684
|
+
[name: string]: unknown;
|
|
89685
|
+
};
|
|
89686
|
+
content: {
|
|
89687
|
+
/**
|
|
89688
|
+
* @example {
|
|
89689
|
+
* "data": {
|
|
89690
|
+
* "as_of": "2026-10-30",
|
|
89691
|
+
* "month": "2026-10",
|
|
89692
|
+
* "month_label": "octubre 2026",
|
|
89693
|
+
* "currency": "CLP",
|
|
89694
|
+
* "reports_visible": true,
|
|
89695
|
+
* "synced_at": "2026-10-30T11:02:00.000Z",
|
|
89696
|
+
* "problem": {
|
|
89697
|
+
* "kind": "cash_runs_out",
|
|
89698
|
+
* "date": "2026-11-06",
|
|
89699
|
+
* "balance_clp": -412000
|
|
89700
|
+
* },
|
|
89701
|
+
* "cash": {
|
|
89702
|
+
* "today_clp": 4917109,
|
|
89703
|
+
* "balance_as_of": "2026-10-30T11:02:00.000Z",
|
|
89704
|
+
* "accounts_count": 3,
|
|
89705
|
+
* "unknown_count": 0,
|
|
89706
|
+
* "savings_clp": 12000000,
|
|
89707
|
+
* "month_end": {
|
|
89708
|
+
* "date": "2026-10-31",
|
|
89709
|
+
* "balance_clp": 5102000,
|
|
89710
|
+
* "band": {
|
|
89711
|
+
* "low_clp": 4980000,
|
|
89712
|
+
* "high_clp": 5260000
|
|
89713
|
+
* }
|
|
89714
|
+
* },
|
|
89715
|
+
* "in_30_days": {
|
|
89716
|
+
* "date": "2026-11-29",
|
|
89717
|
+
* "balance_clp": 3880000,
|
|
89718
|
+
* "band": {
|
|
89719
|
+
* "low_clp": 2100000,
|
|
89720
|
+
* "high_clp": 5400000
|
|
89721
|
+
* }
|
|
89722
|
+
* },
|
|
89723
|
+
* "lowest": {
|
|
89724
|
+
* "date": "2026-11-06",
|
|
89725
|
+
* "balance_clp": -412000,
|
|
89726
|
+
* "negative": true,
|
|
89727
|
+
* "cause": {
|
|
89728
|
+
* "key": "document:0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6501",
|
|
89729
|
+
* "source": "payable",
|
|
89730
|
+
* "direction": "outflow",
|
|
89731
|
+
* "label": "Factura 4410 · Laboratorio Andes SpA",
|
|
89732
|
+
* "amount_clp": 5800000,
|
|
89733
|
+
* "date": "2026-11-06",
|
|
89734
|
+
* "due_date": "2026-11-06",
|
|
89735
|
+
* "overdue": false,
|
|
89736
|
+
* "movable": true,
|
|
89737
|
+
* "move": null,
|
|
89738
|
+
* "document": {
|
|
89739
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6501",
|
|
89740
|
+
* "kind": "purchase",
|
|
89741
|
+
* "dte_type": 33,
|
|
89742
|
+
* "folio": "4410"
|
|
89743
|
+
* },
|
|
89744
|
+
* "contraparte": {
|
|
89745
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6601",
|
|
89746
|
+
* "name": "Laboratorio Andes SpA"
|
|
89747
|
+
* },
|
|
89748
|
+
* "recurring_item_id": null,
|
|
89749
|
+
* "rescue_id": null,
|
|
89750
|
+
* "count": null
|
|
89751
|
+
* }
|
|
89752
|
+
* },
|
|
89753
|
+
* "runs_out": {
|
|
89754
|
+
* "date": "2026-11-06",
|
|
89755
|
+
* "covered_until": "2026-11-05",
|
|
89756
|
+
* "balance_clp": -412000,
|
|
89757
|
+
* "cause": {
|
|
89758
|
+
* "key": "document:0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6501",
|
|
89759
|
+
* "source": "payable",
|
|
89760
|
+
* "direction": "outflow",
|
|
89761
|
+
* "label": "Factura 4410 · Laboratorio Andes SpA",
|
|
89762
|
+
* "amount_clp": 5800000,
|
|
89763
|
+
* "date": "2026-11-06",
|
|
89764
|
+
* "due_date": "2026-11-06",
|
|
89765
|
+
* "overdue": false,
|
|
89766
|
+
* "movable": true,
|
|
89767
|
+
* "move": null,
|
|
89768
|
+
* "document": {
|
|
89769
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6501",
|
|
89770
|
+
* "kind": "purchase",
|
|
89771
|
+
* "dte_type": 33,
|
|
89772
|
+
* "folio": "4410"
|
|
89773
|
+
* },
|
|
89774
|
+
* "contraparte": {
|
|
89775
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6601",
|
|
89776
|
+
* "name": "Laboratorio Andes SpA"
|
|
89777
|
+
* },
|
|
89778
|
+
* "recurring_item_id": null,
|
|
89779
|
+
* "rescue_id": null,
|
|
89780
|
+
* "count": null
|
|
89781
|
+
* }
|
|
89782
|
+
* },
|
|
89783
|
+
* "overdue": {
|
|
89784
|
+
* "payables_clp": 0,
|
|
89785
|
+
* "payables_count": 0,
|
|
89786
|
+
* "stale_payables_clp": 0,
|
|
89787
|
+
* "stale_payables_count": 0,
|
|
89788
|
+
* "receivables_clp": 380000,
|
|
89789
|
+
* "receivables_count": 2
|
|
89790
|
+
* },
|
|
89791
|
+
* "points": [
|
|
89792
|
+
* {
|
|
89793
|
+
* "date": "2026-10-30",
|
|
89794
|
+
* "balance_clp": 4917109,
|
|
89795
|
+
* "band": {
|
|
89796
|
+
* "low_clp": 4917109,
|
|
89797
|
+
* "high_clp": 4917109
|
|
89798
|
+
* }
|
|
89799
|
+
* },
|
|
89800
|
+
* {
|
|
89801
|
+
* "date": "2026-10-31",
|
|
89802
|
+
* "balance_clp": 5102000,
|
|
89803
|
+
* "band": {
|
|
89804
|
+
* "low_clp": 4980000,
|
|
89805
|
+
* "high_clp": 5260000
|
|
89806
|
+
* }
|
|
89807
|
+
* }
|
|
89808
|
+
* ]
|
|
89809
|
+
* },
|
|
89810
|
+
* "result": {
|
|
89811
|
+
* "month": "2026-10",
|
|
89812
|
+
* "label": "octubre 2026",
|
|
89813
|
+
* "proforma": true,
|
|
89814
|
+
* "ingresos_clp": 41200000,
|
|
89815
|
+
* "gastos_clp": 38900000,
|
|
89816
|
+
* "variables_clp": 17400000,
|
|
89817
|
+
* "fijos_clp": 21500000,
|
|
89818
|
+
* "sin_clasificar_clp": 900000,
|
|
89819
|
+
* "resultado_clp": 2300000,
|
|
89820
|
+
* "equilibrio": {
|
|
89821
|
+
* "month": "2026-09",
|
|
89822
|
+
* "label": "septiembre 2026",
|
|
89823
|
+
* "equilibrio_clp": 44600000,
|
|
89824
|
+
* "sin_calculo": null
|
|
89825
|
+
* },
|
|
89826
|
+
* "cobertura_pct": 92.4,
|
|
89827
|
+
* "brecha_clp": -3400000
|
|
89828
|
+
* },
|
|
89829
|
+
* "inbox": {
|
|
89830
|
+
* "open": 4,
|
|
89831
|
+
* "amount_at_stake_clp": 2860000,
|
|
89832
|
+
* "by_kind": {
|
|
89833
|
+
* "reconcile": 2,
|
|
89834
|
+
* "transfer": 0,
|
|
89835
|
+
* "classify": 1,
|
|
89836
|
+
* "missing_document": 1,
|
|
89837
|
+
* "unknown": 0
|
|
89838
|
+
* },
|
|
89839
|
+
* "close": {
|
|
89840
|
+
* "month": "2026-09",
|
|
89841
|
+
* "label": "septiembre 2026",
|
|
89842
|
+
* "state": "closed",
|
|
89843
|
+
* "open_cases": 0
|
|
89844
|
+
* }
|
|
89845
|
+
* },
|
|
89846
|
+
* "automatic": {
|
|
89847
|
+
* "month": "2026-10",
|
|
89848
|
+
* "count": 240,
|
|
89849
|
+
* "total_clp": 61200000,
|
|
89850
|
+
* "unreviewed_count": 31,
|
|
89851
|
+
* "by_actor": {
|
|
89852
|
+
* "rule": 150,
|
|
89853
|
+
* "match": 72,
|
|
89854
|
+
* "ai": 18
|
|
89855
|
+
* },
|
|
89856
|
+
* "recent": [
|
|
89857
|
+
* {
|
|
89858
|
+
* "kind": "link",
|
|
89859
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6701",
|
|
89860
|
+
* "actor": "match",
|
|
89861
|
+
* "label": "Pago de la factura 4388 de Laboratorio Andes SpA",
|
|
89862
|
+
* "day": "2026-10-29",
|
|
89863
|
+
* "amount_clp": 1240000,
|
|
89864
|
+
* "applied_at": "2026-10-29T14:10:00.000Z",
|
|
89865
|
+
* "movement": {
|
|
89866
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6801",
|
|
89867
|
+
* "day": "2026-10-29",
|
|
89868
|
+
* "amount_clp": 1240000,
|
|
89869
|
+
* "direction": "outbound",
|
|
89870
|
+
* "description": "Transferencia a Laboratorio Andes"
|
|
89871
|
+
* },
|
|
89872
|
+
* "document": null,
|
|
89873
|
+
* "target": "document",
|
|
89874
|
+
* "reasons": [
|
|
89875
|
+
* "rut",
|
|
89876
|
+
* "amount"
|
|
89877
|
+
* ],
|
|
89878
|
+
* "account": null,
|
|
89879
|
+
* "split": false,
|
|
89880
|
+
* "rule": null,
|
|
89881
|
+
* "reviewed_at": null,
|
|
89882
|
+
* "reviewed_by": null,
|
|
89883
|
+
* "group_name": "Laboratorio Andes SpA"
|
|
89884
|
+
* }
|
|
89885
|
+
* ]
|
|
89886
|
+
* },
|
|
89887
|
+
* "accounts": [
|
|
89888
|
+
* {
|
|
89889
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6401",
|
|
89890
|
+
* "name": "Cuenta corriente",
|
|
89891
|
+
* "institution_name": "Banco de Chile",
|
|
89892
|
+
* "number_masked": "··4821",
|
|
89893
|
+
* "type": "cuenta_corriente",
|
|
89894
|
+
* "currency": "CLP",
|
|
89895
|
+
* "balance_clp": 3719083,
|
|
89896
|
+
* "balance_as_of": "2026-10-30T11:02:00.000Z",
|
|
89897
|
+
* "in_cash": true
|
|
89898
|
+
* },
|
|
89899
|
+
* {
|
|
89900
|
+
* "id": "0190a3c2-5d1e-7b6a-9f20-4c1d2e3f6402",
|
|
89901
|
+
* "name": "Ahorro",
|
|
89902
|
+
* "institution_name": "Banco de Chile",
|
|
89903
|
+
* "number_masked": "··0057",
|
|
89904
|
+
* "type": "cuenta_ahorro",
|
|
89905
|
+
* "currency": "CLP",
|
|
89906
|
+
* "balance_clp": 12000000,
|
|
89907
|
+
* "balance_as_of": "2026-10-30T11:02:00.000Z",
|
|
89908
|
+
* "in_cash": false
|
|
89909
|
+
* }
|
|
89910
|
+
* ]
|
|
89911
|
+
* }
|
|
89912
|
+
* }
|
|
89913
|
+
*/
|
|
89914
|
+
"application/json": {
|
|
89915
|
+
data: components["schemas"]["FinanzasResumen"];
|
|
89916
|
+
};
|
|
89917
|
+
};
|
|
89918
|
+
};
|
|
89919
|
+
/** @description Validation error */
|
|
89920
|
+
400: {
|
|
89921
|
+
headers: {
|
|
89922
|
+
[name: string]: unknown;
|
|
89923
|
+
};
|
|
89924
|
+
content: {
|
|
89925
|
+
"application/json": components["schemas"]["Error"];
|
|
89926
|
+
};
|
|
89927
|
+
};
|
|
89928
|
+
/** @description Unauthorized */
|
|
89929
|
+
401: {
|
|
89930
|
+
headers: {
|
|
89931
|
+
[name: string]: unknown;
|
|
89932
|
+
};
|
|
89933
|
+
content: {
|
|
89934
|
+
"application/json": components["schemas"]["Error"];
|
|
89935
|
+
};
|
|
89936
|
+
};
|
|
89937
|
+
/** @description Forbidden */
|
|
89938
|
+
403: {
|
|
89939
|
+
headers: {
|
|
89940
|
+
[name: string]: unknown;
|
|
89941
|
+
};
|
|
89942
|
+
content: {
|
|
89943
|
+
"application/json": components["schemas"]["Error"];
|
|
89944
|
+
};
|
|
89945
|
+
};
|
|
89946
|
+
/** @description Not found */
|
|
89947
|
+
404: {
|
|
89948
|
+
headers: {
|
|
89949
|
+
[name: string]: unknown;
|
|
89950
|
+
};
|
|
89951
|
+
content: {
|
|
89952
|
+
"application/json": components["schemas"]["Error"];
|
|
89953
|
+
};
|
|
89954
|
+
};
|
|
89955
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
89956
|
+
409: {
|
|
89957
|
+
headers: {
|
|
89958
|
+
[name: string]: unknown;
|
|
89959
|
+
};
|
|
89960
|
+
content: {
|
|
89961
|
+
"application/json": components["schemas"]["Error"];
|
|
89962
|
+
};
|
|
89963
|
+
};
|
|
89964
|
+
/** @description Rate limited */
|
|
89965
|
+
429: {
|
|
89966
|
+
headers: {
|
|
89967
|
+
[name: string]: unknown;
|
|
89968
|
+
};
|
|
89969
|
+
content: {
|
|
89970
|
+
"application/json": components["schemas"]["Error"];
|
|
89971
|
+
};
|
|
89972
|
+
};
|
|
89973
|
+
};
|
|
89974
|
+
};
|
|
89975
|
+
put?: never;
|
|
89976
|
+
post?: never;
|
|
89977
|
+
delete?: never;
|
|
89978
|
+
options?: never;
|
|
89979
|
+
head?: never;
|
|
89980
|
+
patch?: never;
|
|
89981
|
+
trace?: never;
|
|
89982
|
+
};
|
|
88360
89983
|
"/finanzas/produccion": {
|
|
88361
89984
|
parameters: {
|
|
88362
89985
|
query?: never;
|
|
@@ -88626,29 +90249,483 @@ interface paths {
|
|
|
88626
90249
|
patch?: never;
|
|
88627
90250
|
trace?: never;
|
|
88628
90251
|
};
|
|
88629
|
-
"/finanzas/contador-export/manifest": {
|
|
90252
|
+
"/finanzas/contador-export/manifest": {
|
|
90253
|
+
parameters: {
|
|
90254
|
+
query?: never;
|
|
90255
|
+
header?: never;
|
|
90256
|
+
path?: never;
|
|
90257
|
+
cookie?: never;
|
|
90258
|
+
};
|
|
90259
|
+
/**
|
|
90260
|
+
* What the Contador package for a month holds
|
|
90261
|
+
* @description The same package as the download, without the bytes: the period, the zip name and each file (key, label, name, rows, size). Over MCP this is the read that generates and checks the package; the zip itself downloads over HTTPS. A caller without the patient register (the Contador) sees a patient as «Paciente A. P.» with no RUT; the libro de ventas keeps the patient RUT on facturas and on notas de crédito or débito that cite one, and boletas carry neither RUT nor name. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`, `finanzas_reports:read` and `finanzas:export` (the Contador seat, owners and admins).
|
|
90262
|
+
*/
|
|
90263
|
+
get: {
|
|
90264
|
+
parameters: {
|
|
90265
|
+
query?: {
|
|
90266
|
+
period?: string;
|
|
90267
|
+
};
|
|
90268
|
+
header?: never;
|
|
90269
|
+
path?: never;
|
|
90270
|
+
cookie?: never;
|
|
90271
|
+
};
|
|
90272
|
+
requestBody?: never;
|
|
90273
|
+
responses: {
|
|
90274
|
+
/** @description The manifest */
|
|
90275
|
+
200: {
|
|
90276
|
+
headers: {
|
|
90277
|
+
[name: string]: unknown;
|
|
90278
|
+
};
|
|
90279
|
+
content: {
|
|
90280
|
+
/**
|
|
90281
|
+
* @example {
|
|
90282
|
+
* "data": {
|
|
90283
|
+
* "period": "2026-09",
|
|
90284
|
+
* "filename": "paquete-contador-2026-09.zip",
|
|
90285
|
+
* "files": [
|
|
90286
|
+
* {
|
|
90287
|
+
* "key": "libro_compras",
|
|
90288
|
+
* "label": "Libro de compras",
|
|
90289
|
+
* "filename": "01-libro-de-compras-2026-09.xlsx",
|
|
90290
|
+
* "rows": 84,
|
|
90291
|
+
* "size_bytes": 14210
|
|
90292
|
+
* },
|
|
90293
|
+
* {
|
|
90294
|
+
* "key": "libro_ventas",
|
|
90295
|
+
* "label": "Libro de ventas",
|
|
90296
|
+
* "filename": "02-libro-de-ventas-2026-09.xlsx",
|
|
90297
|
+
* "rows": 1312,
|
|
90298
|
+
* "size_bytes": 61904
|
|
90299
|
+
* },
|
|
90300
|
+
* {
|
|
90301
|
+
* "key": "honorarios",
|
|
90302
|
+
* "label": "Honorarios",
|
|
90303
|
+
* "filename": "03-honorarios-2026-09.xlsx",
|
|
90304
|
+
* "rows": 12,
|
|
90305
|
+
* "size_bytes": 7480
|
|
90306
|
+
* },
|
|
90307
|
+
* {
|
|
90308
|
+
* "key": "movimientos",
|
|
90309
|
+
* "label": "Movimientos por cuenta",
|
|
90310
|
+
* "filename": "04-movimientos-por-cuenta-2026-09.xlsx",
|
|
90311
|
+
* "rows": 640,
|
|
90312
|
+
* "size_bytes": 38112
|
|
90313
|
+
* },
|
|
90314
|
+
* {
|
|
90315
|
+
* "key": "clasificaciones",
|
|
90316
|
+
* "label": "Clasificaciones por cuenta",
|
|
90317
|
+
* "filename": "05-clasificaciones-por-cuenta-2026-09.xlsx",
|
|
90318
|
+
* "rows": 702,
|
|
90319
|
+
* "size_bytes": 40356
|
|
90320
|
+
* },
|
|
90321
|
+
* {
|
|
90322
|
+
* "key": "resultado",
|
|
90323
|
+
* "label": "Resultado",
|
|
90324
|
+
* "filename": "06-resultado-2026-09.xlsx",
|
|
90325
|
+
* "rows": 1398,
|
|
90326
|
+
* "size_bytes": 52018
|
|
90327
|
+
* },
|
|
90328
|
+
* {
|
|
90329
|
+
* "key": "ajustes",
|
|
90330
|
+
* "label": "Ajustes posteriores al cierre",
|
|
90331
|
+
* "filename": "07-ajustes-posteriores-al-cierre-2026-09.xlsx",
|
|
90332
|
+
* "rows": 3,
|
|
90333
|
+
* "size_bytes": 6920
|
|
90334
|
+
* }
|
|
90335
|
+
* ]
|
|
90336
|
+
* }
|
|
90337
|
+
* }
|
|
90338
|
+
*/
|
|
90339
|
+
"application/json": {
|
|
90340
|
+
data: {
|
|
90341
|
+
/** @description The month, `YYYY-MM`. */
|
|
90342
|
+
period: string;
|
|
90343
|
+
/** @description The zip the download serves. */
|
|
90344
|
+
filename: string;
|
|
90345
|
+
files: {
|
|
90346
|
+
/** @enum {string} */
|
|
90347
|
+
key: "libro_compras" | "libro_ventas" | "honorarios" | "movimientos" | "clasificaciones" | "resultado" | "ajustes";
|
|
90348
|
+
label: string;
|
|
90349
|
+
/** @description The xlsx inside the zip. */
|
|
90350
|
+
filename: string;
|
|
90351
|
+
/** @description Rows of its «Detalle» sheet (documents, items) when it has one, else of its first sheet (movements, adjustments). */
|
|
90352
|
+
rows: number;
|
|
90353
|
+
size_bytes: number;
|
|
90354
|
+
}[];
|
|
90355
|
+
};
|
|
90356
|
+
};
|
|
90357
|
+
};
|
|
90358
|
+
};
|
|
90359
|
+
/** @description Validation error */
|
|
90360
|
+
400: {
|
|
90361
|
+
headers: {
|
|
90362
|
+
[name: string]: unknown;
|
|
90363
|
+
};
|
|
90364
|
+
content: {
|
|
90365
|
+
"application/json": components["schemas"]["Error"];
|
|
90366
|
+
};
|
|
90367
|
+
};
|
|
90368
|
+
/** @description Unauthorized */
|
|
90369
|
+
401: {
|
|
90370
|
+
headers: {
|
|
90371
|
+
[name: string]: unknown;
|
|
90372
|
+
};
|
|
90373
|
+
content: {
|
|
90374
|
+
"application/json": components["schemas"]["Error"];
|
|
90375
|
+
};
|
|
90376
|
+
};
|
|
90377
|
+
/** @description Forbidden */
|
|
90378
|
+
403: {
|
|
90379
|
+
headers: {
|
|
90380
|
+
[name: string]: unknown;
|
|
90381
|
+
};
|
|
90382
|
+
content: {
|
|
90383
|
+
"application/json": components["schemas"]["Error"];
|
|
90384
|
+
};
|
|
90385
|
+
};
|
|
90386
|
+
/** @description Not found */
|
|
90387
|
+
404: {
|
|
90388
|
+
headers: {
|
|
90389
|
+
[name: string]: unknown;
|
|
90390
|
+
};
|
|
90391
|
+
content: {
|
|
90392
|
+
"application/json": components["schemas"]["Error"];
|
|
90393
|
+
};
|
|
90394
|
+
};
|
|
90395
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
90396
|
+
409: {
|
|
90397
|
+
headers: {
|
|
90398
|
+
[name: string]: unknown;
|
|
90399
|
+
};
|
|
90400
|
+
content: {
|
|
90401
|
+
"application/json": components["schemas"]["Error"];
|
|
90402
|
+
};
|
|
90403
|
+
};
|
|
90404
|
+
/** @description Rate limited */
|
|
90405
|
+
429: {
|
|
90406
|
+
headers: {
|
|
90407
|
+
[name: string]: unknown;
|
|
90408
|
+
};
|
|
90409
|
+
content: {
|
|
90410
|
+
"application/json": components["schemas"]["Error"];
|
|
90411
|
+
};
|
|
90412
|
+
};
|
|
90413
|
+
};
|
|
90414
|
+
};
|
|
90415
|
+
put?: never;
|
|
90416
|
+
post?: never;
|
|
90417
|
+
delete?: never;
|
|
90418
|
+
options?: never;
|
|
90419
|
+
head?: never;
|
|
90420
|
+
patch?: never;
|
|
90421
|
+
trace?: never;
|
|
90422
|
+
};
|
|
90423
|
+
"/finanzas/ads-connections": {
|
|
90424
|
+
parameters: {
|
|
90425
|
+
query?: never;
|
|
90426
|
+
header?: never;
|
|
90427
|
+
path?: never;
|
|
90428
|
+
cookie?: never;
|
|
90429
|
+
};
|
|
90430
|
+
/**
|
|
90431
|
+
* Ad accounts reachable for Cargos de publicidad
|
|
90432
|
+
* @description Per platform (Meta Ads, Google Ads): the ad accounts connected to the workspace, their status, last sync and the charges synced and linked, from the last read of the ad data. Each platform says what happens without a connection; connecting is Integraciones › Meta Ads. A card movement whose descriptor names Google Ads (`GOOGLE *ADS<customer id>`) or Meta (`FACEBK *<ref>`, `META*…`, `META PLATFORMS…`) becomes a `manual_expense` document of Contraparte «Google Ads» / «Meta Platforms» (`GET /finanzas/documents?origin=ads`); a refund (money in) a nota de crédito. Vitrina links it when the ad data makes it plausible (Meta: the billing charge of the same amount, count for count in time order; Google and Meta without charge data: the account spend since its previous charge must cover the amount), shown in «Hecho por Vitrina» with the evidence; the rest waits in «Por resolver» (case kind `ads_charge`). Vitrina never holds a Meta or Google token. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`.
|
|
90433
|
+
*/
|
|
90434
|
+
get: {
|
|
90435
|
+
parameters: {
|
|
90436
|
+
query?: never;
|
|
90437
|
+
header?: never;
|
|
90438
|
+
path?: never;
|
|
90439
|
+
cookie?: never;
|
|
90440
|
+
};
|
|
90441
|
+
requestBody?: never;
|
|
90442
|
+
responses: {
|
|
90443
|
+
/** @description The connections */
|
|
90444
|
+
200: {
|
|
90445
|
+
headers: {
|
|
90446
|
+
[name: string]: unknown;
|
|
90447
|
+
};
|
|
90448
|
+
content: {
|
|
90449
|
+
/**
|
|
90450
|
+
* @example {
|
|
90451
|
+
* "data": {
|
|
90452
|
+
* "profile": true,
|
|
90453
|
+
* "last_attempt_at": "2026-10-31T12:30:00.000Z",
|
|
90454
|
+
* "last_sync_at": "2026-10-31T12:30:00.000Z",
|
|
90455
|
+
* "last_error": null,
|
|
90456
|
+
* "platforms": [
|
|
90457
|
+
* {
|
|
90458
|
+
* "platform": "meta_ads",
|
|
90459
|
+
* "label": "Meta Ads",
|
|
90460
|
+
* "status": "connected",
|
|
90461
|
+
* "accounts": [
|
|
90462
|
+
* {
|
|
90463
|
+
* "platform": "meta_ads",
|
|
90464
|
+
* "ad_account_id": "act_969938652650502",
|
|
90465
|
+
* "account_label": "act_969938652650502",
|
|
90466
|
+
* "account_name": "connectmarketing-cl",
|
|
90467
|
+
* "currency": "CLP",
|
|
90468
|
+
* "timezone": "America/Santiago",
|
|
90469
|
+
* "connection_status": "connected",
|
|
90470
|
+
* "healthy": true,
|
|
90471
|
+
* "last_synced_at": "2026-10-31T06:00:58.984Z",
|
|
90472
|
+
* "charges_supported": true,
|
|
90473
|
+
* "charges_synced_at": "2026-10-31T12:26:04.120Z",
|
|
90474
|
+
* "charges_synced": 40,
|
|
90475
|
+
* "charges_linked": 38,
|
|
90476
|
+
* "spend_by_month": [
|
|
90477
|
+
* {
|
|
90478
|
+
* "month": "2026-10",
|
|
90479
|
+
* "spend_minor": 545869,
|
|
90480
|
+
* "currency": "CLP"
|
|
90481
|
+
* }
|
|
90482
|
+
* ]
|
|
90483
|
+
* }
|
|
90484
|
+
* ],
|
|
90485
|
+
* "without_connection": "Sin la conexión, los cargos de Meta quedan en Por resolver hasta que reenvíes el recibo.",
|
|
90486
|
+
* "connect_path": "/integraciones/meta-ads"
|
|
90487
|
+
* },
|
|
90488
|
+
* {
|
|
90489
|
+
* "platform": "google_ads",
|
|
90490
|
+
* "label": "Google Ads",
|
|
90491
|
+
* "status": "none",
|
|
90492
|
+
* "accounts": [],
|
|
90493
|
+
* "without_connection": "Sin la conexión, los cargos de Google Ads quedan en Por resolver hasta que reenvíes el recibo.",
|
|
90494
|
+
* "connect_path": "/integraciones/meta-ads"
|
|
90495
|
+
* }
|
|
90496
|
+
* ]
|
|
90497
|
+
* }
|
|
90498
|
+
* }
|
|
90499
|
+
*/
|
|
90500
|
+
"application/json": {
|
|
90501
|
+
data: components["schemas"]["FinanzasAdsConnections"];
|
|
90502
|
+
};
|
|
90503
|
+
};
|
|
90504
|
+
};
|
|
90505
|
+
/** @description Validation error */
|
|
90506
|
+
400: {
|
|
90507
|
+
headers: {
|
|
90508
|
+
[name: string]: unknown;
|
|
90509
|
+
};
|
|
90510
|
+
content: {
|
|
90511
|
+
"application/json": components["schemas"]["Error"];
|
|
90512
|
+
};
|
|
90513
|
+
};
|
|
90514
|
+
/** @description Unauthorized */
|
|
90515
|
+
401: {
|
|
90516
|
+
headers: {
|
|
90517
|
+
[name: string]: unknown;
|
|
90518
|
+
};
|
|
90519
|
+
content: {
|
|
90520
|
+
"application/json": components["schemas"]["Error"];
|
|
90521
|
+
};
|
|
90522
|
+
};
|
|
90523
|
+
/** @description Forbidden */
|
|
90524
|
+
403: {
|
|
90525
|
+
headers: {
|
|
90526
|
+
[name: string]: unknown;
|
|
90527
|
+
};
|
|
90528
|
+
content: {
|
|
90529
|
+
"application/json": components["schemas"]["Error"];
|
|
90530
|
+
};
|
|
90531
|
+
};
|
|
90532
|
+
/** @description Not found */
|
|
90533
|
+
404: {
|
|
90534
|
+
headers: {
|
|
90535
|
+
[name: string]: unknown;
|
|
90536
|
+
};
|
|
90537
|
+
content: {
|
|
90538
|
+
"application/json": components["schemas"]["Error"];
|
|
90539
|
+
};
|
|
90540
|
+
};
|
|
90541
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
90542
|
+
409: {
|
|
90543
|
+
headers: {
|
|
90544
|
+
[name: string]: unknown;
|
|
90545
|
+
};
|
|
90546
|
+
content: {
|
|
90547
|
+
"application/json": components["schemas"]["Error"];
|
|
90548
|
+
};
|
|
90549
|
+
};
|
|
90550
|
+
/** @description Rate limited */
|
|
90551
|
+
429: {
|
|
90552
|
+
headers: {
|
|
90553
|
+
[name: string]: unknown;
|
|
90554
|
+
};
|
|
90555
|
+
content: {
|
|
90556
|
+
"application/json": components["schemas"]["Error"];
|
|
90557
|
+
};
|
|
90558
|
+
};
|
|
90559
|
+
};
|
|
90560
|
+
};
|
|
90561
|
+
put?: never;
|
|
90562
|
+
post?: never;
|
|
90563
|
+
delete?: never;
|
|
90564
|
+
options?: never;
|
|
90565
|
+
head?: never;
|
|
90566
|
+
patch?: never;
|
|
90567
|
+
trace?: never;
|
|
90568
|
+
};
|
|
90569
|
+
"/finanzas/ads-charges": {
|
|
90570
|
+
parameters: {
|
|
90571
|
+
query?: never;
|
|
90572
|
+
header?: never;
|
|
90573
|
+
path?: never;
|
|
90574
|
+
cookie?: never;
|
|
90575
|
+
};
|
|
90576
|
+
/**
|
|
90577
|
+
* Meta billing charges synced, with their link state
|
|
90578
|
+
* @description Every billing event (charge, refund, chargeback, decline, funding) of the workspace's Meta ad accounts whose day (account time zone) is in [from, to], oldest first, never deduplicated by amount. `linked` = matched to the ads document of a card movement. Amounts in the smallest unit of `currency`. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas:read`.
|
|
90579
|
+
*/
|
|
90580
|
+
get: {
|
|
90581
|
+
parameters: {
|
|
90582
|
+
query?: {
|
|
90583
|
+
from?: string;
|
|
90584
|
+
to?: string;
|
|
90585
|
+
};
|
|
90586
|
+
header?: never;
|
|
90587
|
+
path?: never;
|
|
90588
|
+
cookie?: never;
|
|
90589
|
+
};
|
|
90590
|
+
requestBody?: never;
|
|
90591
|
+
responses: {
|
|
90592
|
+
/** @description The charges */
|
|
90593
|
+
200: {
|
|
90594
|
+
headers: {
|
|
90595
|
+
[name: string]: unknown;
|
|
90596
|
+
};
|
|
90597
|
+
content: {
|
|
90598
|
+
/**
|
|
90599
|
+
* @example {
|
|
90600
|
+
* "data": {
|
|
90601
|
+
* "from": "2026-10-22",
|
|
90602
|
+
* "to": "2026-10-22",
|
|
90603
|
+
* "items": [
|
|
90604
|
+
* {
|
|
90605
|
+
* "id": "0193a1b2-0000-7000-8000-000000000001",
|
|
90606
|
+
* "platform": "meta_ads",
|
|
90607
|
+
* "ad_account_id": "act_969938652650502",
|
|
90608
|
+
* "event_type": "ad_account_billing_charge",
|
|
90609
|
+
* "event_label": "cargo",
|
|
90610
|
+
* "event_time": "2026-10-22T12:14:00.000Z",
|
|
90611
|
+
* "local_date": "2026-10-22",
|
|
90612
|
+
* "meta_transaction_id": "29140315238986117-29184038214613815",
|
|
90613
|
+
* "amount_minor": 4211,
|
|
90614
|
+
* "currency": "CLP",
|
|
90615
|
+
* "link_state": "linked",
|
|
90616
|
+
* "document_id": "0193a1b2-0000-7000-8000-0000000000d1",
|
|
90617
|
+
* "movement_id": "0193a1b2-0000-7000-8000-0000000000a1",
|
|
90618
|
+
* "linked_at": "2026-10-24T09:00:00.000Z"
|
|
90619
|
+
* }
|
|
90620
|
+
* ],
|
|
90621
|
+
* "totals": {
|
|
90622
|
+
* "count": 1,
|
|
90623
|
+
* "linked": 1,
|
|
90624
|
+
* "unlinked": 0
|
|
90625
|
+
* }
|
|
90626
|
+
* }
|
|
90627
|
+
* }
|
|
90628
|
+
*/
|
|
90629
|
+
"application/json": {
|
|
90630
|
+
data: components["schemas"]["FinanzasAdsChargesList"];
|
|
90631
|
+
};
|
|
90632
|
+
};
|
|
90633
|
+
};
|
|
90634
|
+
/** @description Validation error */
|
|
90635
|
+
400: {
|
|
90636
|
+
headers: {
|
|
90637
|
+
[name: string]: unknown;
|
|
90638
|
+
};
|
|
90639
|
+
content: {
|
|
90640
|
+
"application/json": components["schemas"]["Error"];
|
|
90641
|
+
};
|
|
90642
|
+
};
|
|
90643
|
+
/** @description Unauthorized */
|
|
90644
|
+
401: {
|
|
90645
|
+
headers: {
|
|
90646
|
+
[name: string]: unknown;
|
|
90647
|
+
};
|
|
90648
|
+
content: {
|
|
90649
|
+
"application/json": components["schemas"]["Error"];
|
|
90650
|
+
};
|
|
90651
|
+
};
|
|
90652
|
+
/** @description Forbidden */
|
|
90653
|
+
403: {
|
|
90654
|
+
headers: {
|
|
90655
|
+
[name: string]: unknown;
|
|
90656
|
+
};
|
|
90657
|
+
content: {
|
|
90658
|
+
"application/json": components["schemas"]["Error"];
|
|
90659
|
+
};
|
|
90660
|
+
};
|
|
90661
|
+
/** @description Not found */
|
|
90662
|
+
404: {
|
|
90663
|
+
headers: {
|
|
90664
|
+
[name: string]: unknown;
|
|
90665
|
+
};
|
|
90666
|
+
content: {
|
|
90667
|
+
"application/json": components["schemas"]["Error"];
|
|
90668
|
+
};
|
|
90669
|
+
};
|
|
90670
|
+
/** @description Conflict (incl. Idempotency-Key reuse with different body) */
|
|
90671
|
+
409: {
|
|
90672
|
+
headers: {
|
|
90673
|
+
[name: string]: unknown;
|
|
90674
|
+
};
|
|
90675
|
+
content: {
|
|
90676
|
+
"application/json": components["schemas"]["Error"];
|
|
90677
|
+
};
|
|
90678
|
+
};
|
|
90679
|
+
/** @description Rate limited */
|
|
90680
|
+
429: {
|
|
90681
|
+
headers: {
|
|
90682
|
+
[name: string]: unknown;
|
|
90683
|
+
};
|
|
90684
|
+
content: {
|
|
90685
|
+
"application/json": components["schemas"]["Error"];
|
|
90686
|
+
};
|
|
90687
|
+
};
|
|
90688
|
+
};
|
|
90689
|
+
};
|
|
90690
|
+
put?: never;
|
|
90691
|
+
post?: never;
|
|
90692
|
+
delete?: never;
|
|
90693
|
+
options?: never;
|
|
90694
|
+
head?: never;
|
|
90695
|
+
patch?: never;
|
|
90696
|
+
trace?: never;
|
|
90697
|
+
};
|
|
90698
|
+
"/finanzas/ads-charges/sync": {
|
|
88630
90699
|
parameters: {
|
|
88631
90700
|
query?: never;
|
|
88632
90701
|
header?: never;
|
|
88633
90702
|
path?: never;
|
|
88634
90703
|
cookie?: never;
|
|
88635
90704
|
};
|
|
90705
|
+
get?: never;
|
|
90706
|
+
put?: never;
|
|
88636
90707
|
/**
|
|
88637
|
-
*
|
|
88638
|
-
* @description
|
|
90708
|
+
* Read the ad data now and match the card charges
|
|
90709
|
+
* @description «Sincronizar ahora»: recognise new ad charges among the card movements, read the last 92 days of ad billing and spend, store the charges and link what the evidence supports; then the reconciliation engine and «Por resolver» follow. A failed read is recorded (`read = error`, shown in `GET /finanzas/ads-connections`) and the stored charges still decide what they can. A card movement whose descriptor names Google Ads (`GOOGLE *ADS<customer id>`) or Meta (`FACEBK *<ref>`, `META*…`, `META PLATFORMS…`) becomes a `manual_expense` document of Contraparte «Google Ads» / «Meta Platforms» (`GET /finanzas/documents?origin=ads`); a refund (money in) a nota de crédito. Vitrina links it when the ad data makes it plausible (Meta: the billing charge of the same amount, count for count in time order; Google and Meta without charge data: the account spend since its previous charge must cover the amount), shown in «Hecho por Vitrina» with the evidence; the rest waits in «Por resolver» (case kind `ads_charge`). Vitrina never holds a Meta or Google token. Requires the `finanzas` add-on — without it every Finanzas operation answers `402 ENTITLEMENT_NOT_ACTIVE` (`details.required = ["finanzas"]`). Requires `finanzas_admin:write`.
|
|
88639
90710
|
*/
|
|
88640
|
-
|
|
90711
|
+
post: {
|
|
88641
90712
|
parameters: {
|
|
88642
|
-
query?:
|
|
88643
|
-
|
|
90713
|
+
query?: never;
|
|
90714
|
+
header?: {
|
|
90715
|
+
/** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
|
|
90716
|
+
"Idempotency-Key"?: string;
|
|
88644
90717
|
};
|
|
88645
|
-
header?: never;
|
|
88646
90718
|
path?: never;
|
|
88647
90719
|
cookie?: never;
|
|
88648
90720
|
};
|
|
88649
|
-
requestBody?:
|
|
90721
|
+
requestBody?: {
|
|
90722
|
+
content: {
|
|
90723
|
+
/** @example {} */
|
|
90724
|
+
"application/json": Record<string, never>;
|
|
90725
|
+
};
|
|
90726
|
+
};
|
|
88650
90727
|
responses: {
|
|
88651
|
-
/** @description
|
|
90728
|
+
/** @description What the run did */
|
|
88652
90729
|
200: {
|
|
88653
90730
|
headers: {
|
|
88654
90731
|
[name: string]: unknown;
|
|
@@ -88657,79 +90734,27 @@ interface paths {
|
|
|
88657
90734
|
/**
|
|
88658
90735
|
* @example {
|
|
88659
90736
|
* "data": {
|
|
88660
|
-
* "
|
|
88661
|
-
* "
|
|
88662
|
-
* "
|
|
88663
|
-
*
|
|
88664
|
-
*
|
|
88665
|
-
*
|
|
88666
|
-
*
|
|
88667
|
-
*
|
|
88668
|
-
*
|
|
88669
|
-
*
|
|
88670
|
-
*
|
|
88671
|
-
*
|
|
88672
|
-
*
|
|
88673
|
-
*
|
|
88674
|
-
*
|
|
88675
|
-
*
|
|
88676
|
-
* },
|
|
88677
|
-
* {
|
|
88678
|
-
* "key": "honorarios",
|
|
88679
|
-
* "label": "Honorarios",
|
|
88680
|
-
* "filename": "03-honorarios-2026-09.xlsx",
|
|
88681
|
-
* "rows": 12,
|
|
88682
|
-
* "size_bytes": 7480
|
|
88683
|
-
* },
|
|
88684
|
-
* {
|
|
88685
|
-
* "key": "movimientos",
|
|
88686
|
-
* "label": "Movimientos por cuenta",
|
|
88687
|
-
* "filename": "04-movimientos-por-cuenta-2026-09.xlsx",
|
|
88688
|
-
* "rows": 640,
|
|
88689
|
-
* "size_bytes": 38112
|
|
88690
|
-
* },
|
|
88691
|
-
* {
|
|
88692
|
-
* "key": "clasificaciones",
|
|
88693
|
-
* "label": "Clasificaciones por cuenta",
|
|
88694
|
-
* "filename": "05-clasificaciones-por-cuenta-2026-09.xlsx",
|
|
88695
|
-
* "rows": 702,
|
|
88696
|
-
* "size_bytes": 40356
|
|
88697
|
-
* },
|
|
88698
|
-
* {
|
|
88699
|
-
* "key": "resultado",
|
|
88700
|
-
* "label": "Resultado",
|
|
88701
|
-
* "filename": "06-resultado-2026-09.xlsx",
|
|
88702
|
-
* "rows": 1398,
|
|
88703
|
-
* "size_bytes": 52018
|
|
88704
|
-
* },
|
|
88705
|
-
* {
|
|
88706
|
-
* "key": "ajustes",
|
|
88707
|
-
* "label": "Ajustes posteriores al cierre",
|
|
88708
|
-
* "filename": "07-ajustes-posteriores-al-cierre-2026-09.xlsx",
|
|
88709
|
-
* "rows": 3,
|
|
88710
|
-
* "size_bytes": 6920
|
|
88711
|
-
* }
|
|
88712
|
-
* ]
|
|
90737
|
+
* "skipped": false,
|
|
90738
|
+
* "read": "ok",
|
|
90739
|
+
* "accounts": 1,
|
|
90740
|
+
* "charges_new": 3,
|
|
90741
|
+
* "recognize": {
|
|
90742
|
+
* "recognized": 4,
|
|
90743
|
+
* "created": 4,
|
|
90744
|
+
* "receipt_first": 0
|
|
90745
|
+
* },
|
|
90746
|
+
* "match": {
|
|
90747
|
+
* "open": 4,
|
|
90748
|
+
* "linked": 3,
|
|
90749
|
+
* "unconfirmed": 1,
|
|
90750
|
+
* "no_connection": 0,
|
|
90751
|
+
* "pending": 0
|
|
90752
|
+
* }
|
|
88713
90753
|
* }
|
|
88714
90754
|
* }
|
|
88715
90755
|
*/
|
|
88716
90756
|
"application/json": {
|
|
88717
|
-
data:
|
|
88718
|
-
/** @description The month, `YYYY-MM`. */
|
|
88719
|
-
period: string;
|
|
88720
|
-
/** @description The zip the download serves. */
|
|
88721
|
-
filename: string;
|
|
88722
|
-
files: {
|
|
88723
|
-
/** @enum {string} */
|
|
88724
|
-
key: "libro_compras" | "libro_ventas" | "honorarios" | "movimientos" | "clasificaciones" | "resultado" | "ajustes";
|
|
88725
|
-
label: string;
|
|
88726
|
-
/** @description The xlsx inside the zip. */
|
|
88727
|
-
filename: string;
|
|
88728
|
-
/** @description Rows of its «Detalle» sheet (documents, items) when it has one, else of its first sheet (movements, adjustments). */
|
|
88729
|
-
rows: number;
|
|
88730
|
-
size_bytes: number;
|
|
88731
|
-
}[];
|
|
88732
|
-
};
|
|
90757
|
+
data: components["schemas"]["FinanzasAdsSyncResult"];
|
|
88733
90758
|
};
|
|
88734
90759
|
};
|
|
88735
90760
|
};
|
|
@@ -88789,8 +90814,6 @@ interface paths {
|
|
|
88789
90814
|
};
|
|
88790
90815
|
};
|
|
88791
90816
|
};
|
|
88792
|
-
put?: never;
|
|
88793
|
-
post?: never;
|
|
88794
90817
|
delete?: never;
|
|
88795
90818
|
options?: never;
|
|
88796
90819
|
head?: never;
|
|
@@ -254697,7 +256720,7 @@ interface components {
|
|
|
254697
256720
|
/** @enum {string} */
|
|
254698
256721
|
kind: "page";
|
|
254699
256722
|
/** @enum {string} */
|
|
254700
|
-
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
256723
|
+
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "finanzas.flujo_de_caja" | "finanzas.f29" | "finanzas.contraparte" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
254701
256724
|
params?: {
|
|
254702
256725
|
[key: string]: string | number | boolean;
|
|
254703
256726
|
};
|
|
@@ -254739,7 +256762,7 @@ interface components {
|
|
|
254739
256762
|
/** @enum {string} */
|
|
254740
256763
|
kind: "page";
|
|
254741
256764
|
/** @enum {string} */
|
|
254742
|
-
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
256765
|
+
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "finanzas.flujo_de_caja" | "finanzas.f29" | "finanzas.contraparte" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
254743
256766
|
params?: {
|
|
254744
256767
|
[key: string]: string | number | boolean;
|
|
254745
256768
|
};
|
|
@@ -254766,7 +256789,7 @@ interface components {
|
|
|
254766
256789
|
/** @enum {string} */
|
|
254767
256790
|
kind: "page";
|
|
254768
256791
|
/** @enum {string} */
|
|
254769
|
-
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
256792
|
+
page: "settings.channels" | "settings.channel" | "settings.webhooks" | "finanzas.bancos" | "finanzas.flujo_de_caja" | "finanzas.f29" | "finanzas.contraparte" | "settings.api_keys" | "settings.billing" | "settings.seguimientos" | "settings.templates" | "settings.marketplaces" | "settings.notifications" | "ai_agents" | "ads" | "onboarding" | "vehicles.marketplaces" | "calendar";
|
|
254770
256793
|
params?: {
|
|
254771
256794
|
[key: string]: string | number | boolean;
|
|
254772
256795
|
};
|
|
@@ -254780,11 +256803,11 @@ interface components {
|
|
|
254780
256803
|
/** @enum {string} */
|
|
254781
256804
|
preset: "important" | "all" | "custom";
|
|
254782
256805
|
push_enabled: boolean;
|
|
254783
|
-
categories: ("inbox" | "agenda" | "sales" | "followups" | "approvals" | "payments" | "agents" | "integrations" | "safety" | "account")[];
|
|
256806
|
+
categories: ("inbox" | "agenda" | "sales" | "followups" | "approvals" | "payments" | "agents" | "integrations" | "finanzas" | "safety" | "account")[];
|
|
254784
256807
|
types: {
|
|
254785
256808
|
key: string;
|
|
254786
256809
|
/** @enum {string} */
|
|
254787
|
-
category: "inbox" | "agenda" | "sales" | "followups" | "approvals" | "payments" | "agents" | "integrations" | "safety" | "account";
|
|
256810
|
+
category: "inbox" | "agenda" | "sales" | "followups" | "approvals" | "payments" | "agents" | "integrations" | "finanzas" | "safety" | "account";
|
|
254788
256811
|
/** @description i18n slug: the UI renders `notif.<slug>.title` / `.when`. */
|
|
254789
256812
|
slug: string;
|
|
254790
256813
|
mandatory: boolean;
|
|
@@ -254864,7 +256887,7 @@ interface components {
|
|
|
254864
256887
|
perfect_battery_pct?: number;
|
|
254865
256888
|
currency?: string;
|
|
254866
256889
|
};
|
|
254867
|
-
/** @description Workspace notification rails. The staff WhatsApp rails (`staff_whatsapp`, `unanswered_supervisor_whatsapp`, `booking_whatsapp`, `reminder_whatsapp`) are opt-in: arming one (`enabled: true` with an `account_id`) submits its template to Meta on that number and wires it on approval. Each rail sent replaces that rail whole; rails not sent are kept. */
|
|
256890
|
+
/** @description Workspace notification rails. The staff WhatsApp rails (`staff_whatsapp`, `unanswered_supervisor_whatsapp`, `booking_whatsapp`, `reminder_whatsapp`, `finanzas_whatsapp`) are opt-in: arming one (`enabled: true` with an `account_id`) submits its template to Meta on that number and wires it on approval. Each rail sent replaces that rail whole; rails not sent are kept. */
|
|
254868
256891
|
notifications?: {
|
|
254869
256892
|
staff_whatsapp?: {
|
|
254870
256893
|
enabled?: boolean;
|
|
@@ -254899,6 +256922,15 @@ interface components {
|
|
|
254899
256922
|
template_language?: string;
|
|
254900
256923
|
change_template_name?: string;
|
|
254901
256924
|
};
|
|
256925
|
+
finanzas_whatsapp?: {
|
|
256926
|
+
enabled?: boolean;
|
|
256927
|
+
/** Format: uuid */
|
|
256928
|
+
account_id?: string;
|
|
256929
|
+
template_name?: string;
|
|
256930
|
+
template_language?: string;
|
|
256931
|
+
/** @description The weekly Finanzas digest template (resumen_finanzas_semanal_v1), wired on approval. */
|
|
256932
|
+
digest_template_name?: string;
|
|
256933
|
+
};
|
|
254902
256934
|
stock_alert?: {
|
|
254903
256935
|
/** @description Lead stages that trigger the «Stock faltante» check when a lead moves into them. Empty turns it off. */
|
|
254904
256936
|
stage_ids: string[];
|
|
@@ -254966,6 +256998,26 @@ interface components {
|
|
|
254966
256998
|
rejection_reason: string | null;
|
|
254967
256999
|
}[];
|
|
254968
257000
|
};
|
|
257001
|
+
finanzas_whatsapp: {
|
|
257002
|
+
/** @description The rail is switched on (`enabled: true`). */
|
|
257003
|
+
armed: boolean;
|
|
257004
|
+
/**
|
|
257005
|
+
* @description Worst state across the rail templates (blocked, rejected, missing, pending, approved); `off` when not armed or nothing to provision; `no_number` when armed without a sending number.
|
|
257006
|
+
* @enum {string}
|
|
257007
|
+
*/
|
|
257008
|
+
template_state: "off" | "no_number" | "missing" | "pending" | "approved" | "rejected" | "blocked";
|
|
257009
|
+
reason: string | null;
|
|
257010
|
+
/** @description The rail has its template name set (by an admin or on approval). */
|
|
257011
|
+
wired: boolean;
|
|
257012
|
+
templates: {
|
|
257013
|
+
key: string;
|
|
257014
|
+
name: string;
|
|
257015
|
+
language: string;
|
|
257016
|
+
/** @enum {string} */
|
|
257017
|
+
state: "missing" | "pending" | "approved" | "rejected" | "blocked";
|
|
257018
|
+
rejection_reason: string | null;
|
|
257019
|
+
}[];
|
|
257020
|
+
};
|
|
254969
257021
|
reminder_whatsapp: {
|
|
254970
257022
|
/** @description The rail is switched on (`enabled: true`). */
|
|
254971
257023
|
armed: boolean;
|
|
@@ -255217,6 +257269,15 @@ interface components {
|
|
|
255217
257269
|
template_language?: string;
|
|
255218
257270
|
change_template_name?: string;
|
|
255219
257271
|
};
|
|
257272
|
+
finanzas_whatsapp?: {
|
|
257273
|
+
enabled?: boolean;
|
|
257274
|
+
/** Format: uuid */
|
|
257275
|
+
account_id?: string;
|
|
257276
|
+
template_name?: string;
|
|
257277
|
+
template_language?: string;
|
|
257278
|
+
/** @description The weekly Finanzas digest template (resumen_finanzas_semanal_v1), wired on approval. */
|
|
257279
|
+
digest_template_name?: string;
|
|
257280
|
+
};
|
|
255220
257281
|
stock_alert?: {
|
|
255221
257282
|
/** @description Lead stages that trigger the «Stock faltante» check when a lead moves into them. Empty turns it off. */
|
|
255222
257283
|
stage_ids: string[];
|
|
@@ -257020,6 +259081,38 @@ interface components {
|
|
|
257020
259081
|
/** @enum {string} */
|
|
257021
259082
|
state: "vigente" | "anulada";
|
|
257022
259083
|
} | null;
|
|
259084
|
+
/** @description Finanzas 30: a document Vitrina made from a Meta / Google card charge (`origin = ads`); null on every other document. */
|
|
259085
|
+
ads?: {
|
|
259086
|
+
/** @enum {string} */
|
|
259087
|
+
platform: "meta_ads" | "google_ads";
|
|
259088
|
+
/** @enum {string} */
|
|
259089
|
+
kind: "charge" | "refund";
|
|
259090
|
+
/** Format: uuid */
|
|
259091
|
+
movement_id: string | null;
|
|
259092
|
+
/**
|
|
259093
|
+
* @description linked = Vitrina linked the movement (see evidence); unconfirmed / no_connection = waiting in «Por resolver»; pending = the ad data could not be read yet; new = not decided.
|
|
259094
|
+
* @enum {string}
|
|
259095
|
+
*/
|
|
259096
|
+
verdict: "new" | "pending" | "linked" | "unconfirmed" | "no_connection";
|
|
259097
|
+
reason: string | null;
|
|
259098
|
+
ad_account_id: string | null;
|
|
259099
|
+
customer_id: string | null;
|
|
259100
|
+
/** @description Meta: the card statement reference (`FACEBK *<ref>`). */
|
|
259101
|
+
reference: string | null;
|
|
259102
|
+
/** @description Meta's «Transaction ID» of the charge, once linked. */
|
|
259103
|
+
meta_transaction_id: string | null;
|
|
259104
|
+
evidence: string | null;
|
|
259105
|
+
spend_window: {
|
|
259106
|
+
ad_account_id: string;
|
|
259107
|
+
from: string;
|
|
259108
|
+
to: string;
|
|
259109
|
+
spend_minor: number;
|
|
259110
|
+
currency: string;
|
|
259111
|
+
} | null;
|
|
259112
|
+
/** @description The card movement's original currency. */
|
|
259113
|
+
currency: string | null;
|
|
259114
|
+
amount_original: number | null;
|
|
259115
|
+
} | null;
|
|
257023
259116
|
created_at: string;
|
|
257024
259117
|
updated_at: string;
|
|
257025
259118
|
};
|
|
@@ -257948,10 +260041,10 @@ interface components {
|
|
|
257948
260041
|
items: {
|
|
257949
260042
|
id: string;
|
|
257950
260043
|
/**
|
|
257951
|
-
* @description reconcile = movements ↔ documents; transfer = between own accounts; classify = to an account; missing_document = «Falta documento» (money out classified with no document); unknown = no proposal yet.
|
|
260044
|
+
* @description reconcile = movements ↔ documents; transfer = between own accounts; classify = to an account; missing_document = «Falta documento» (money out classified with no document); unknown = no proposal yet; ads_charge = a Meta / Google card charge Vitrina could not confirm («Cargo de publicidad sin confirmar» / «Sin conexión de publicidad», Finanzas 30): the proposal links each movement to its own ads document.
|
|
257952
260045
|
* @enum {string}
|
|
257953
260046
|
*/
|
|
257954
|
-
kind: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown";
|
|
260047
|
+
kind: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown" | "ads_charge";
|
|
257955
260048
|
title: string;
|
|
257956
260049
|
summary: string;
|
|
257957
260050
|
contraparte: {
|
|
@@ -257978,16 +260071,17 @@ interface components {
|
|
|
257978
260071
|
classify: number;
|
|
257979
260072
|
missing_document: number;
|
|
257980
260073
|
unknown: number;
|
|
260074
|
+
ads_charge: number;
|
|
257981
260075
|
};
|
|
257982
260076
|
};
|
|
257983
260077
|
FinanzasCase: {
|
|
257984
260078
|
id: string;
|
|
257985
260079
|
key: string;
|
|
257986
260080
|
/**
|
|
257987
|
-
* @description reconcile = movements ↔ documents; transfer = between own accounts; classify = to an account; missing_document = «Falta documento» (money out classified with no document); unknown = no proposal yet.
|
|
260081
|
+
* @description reconcile = movements ↔ documents; transfer = between own accounts; classify = to an account; missing_document = «Falta documento» (money out classified with no document); unknown = no proposal yet; ads_charge = a Meta / Google card charge Vitrina could not confirm («Cargo de publicidad sin confirmar» / «Sin conexión de publicidad», Finanzas 30): the proposal links each movement to its own ads document.
|
|
257988
260082
|
* @enum {string}
|
|
257989
260083
|
*/
|
|
257990
|
-
kind: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown";
|
|
260084
|
+
kind: "reconcile" | "transfer" | "classify" | "missing_document" | "unknown" | "ads_charge";
|
|
257991
260085
|
/** @enum {string} */
|
|
257992
260086
|
status: "open" | "resolved";
|
|
257993
260087
|
/** @enum {string|null} */
|
|
@@ -258101,6 +260195,34 @@ interface components {
|
|
|
258101
260195
|
type: "document" | "movement";
|
|
258102
260196
|
id: string;
|
|
258103
260197
|
}[];
|
|
260198
|
+
/** @description Finanzas 30, `ads_charge` cases only: the matcher's verdict per movement and the Meta charges / ad accounts that could be it. Amounts in the smallest unit of `currency`. */
|
|
260199
|
+
ads?: {
|
|
260200
|
+
/** @enum {string} */
|
|
260201
|
+
platform: "meta_ads" | "google_ads";
|
|
260202
|
+
/** @enum {string} */
|
|
260203
|
+
verdict: "unconfirmed" | "no_connection";
|
|
260204
|
+
items: {
|
|
260205
|
+
/** Format: uuid */
|
|
260206
|
+
movement_id: string;
|
|
260207
|
+
/** Format: uuid */
|
|
260208
|
+
document_id: string;
|
|
260209
|
+
/** @description no_charge | count_mismatch | customer_id_unknown | spend_does_not_cover | ambiguous | refund_unmatched | undone_by_person | no_connection */
|
|
260210
|
+
reason: string;
|
|
260211
|
+
customer_id: string | null;
|
|
260212
|
+
reference: string | null;
|
|
260213
|
+
candidates: {
|
|
260214
|
+
/** Format: uuid */
|
|
260215
|
+
charge_id: string;
|
|
260216
|
+
ad_account_id: string;
|
|
260217
|
+
meta_transaction_id: string | null;
|
|
260218
|
+
event_time: string;
|
|
260219
|
+
local_date: string;
|
|
260220
|
+
amount_minor: number;
|
|
260221
|
+
currency: string;
|
|
260222
|
+
}[];
|
|
260223
|
+
candidate_accounts: string[];
|
|
260224
|
+
}[];
|
|
260225
|
+
} | null;
|
|
258104
260226
|
opened_at: string;
|
|
258105
260227
|
computed_at: string;
|
|
258106
260228
|
};
|
|
@@ -258159,6 +260281,8 @@ interface components {
|
|
|
258159
260281
|
/** @enum {string|null} */
|
|
258160
260282
|
target: "document" | "payment" | "transfer" | "third_party" | "cash_deposit" | null;
|
|
258161
260283
|
reasons: string[];
|
|
260284
|
+
/** @description Links Vitrina made from ad data (Finanzas 30, reasons include `ads_charge`): the evidence in one Spanish line, e.g. «Meta Ads cobró $4.211 el 22 oct a las 09:14 (cuenta …)» or «Gasto del 22 al 24 oct: $47.824 en la cuenta … de Google Ads; el cargo lo cubre». Null otherwise. */
|
|
260285
|
+
evidence: string | null;
|
|
258162
260286
|
account: {
|
|
258163
260287
|
/** Format: uuid */
|
|
258164
260288
|
id: string;
|
|
@@ -258291,8 +260415,16 @@ interface components {
|
|
|
258291
260415
|
/** @description Automatic actions of the month nobody reviewed in «Hecho por Vitrina». The close confirms this number. */
|
|
258292
260416
|
unreviewed_count: number;
|
|
258293
260417
|
unclassified_count: number;
|
|
260418
|
+
/** @description Still to reconcile in the month: bank movements not fully matched plus income documents (boletas, facturas) issued in the month still «Por conciliar» (the same definition as Resultado). */
|
|
258294
260419
|
unmatched_count: number;
|
|
260420
|
+
/** @description Bank movements of the month not fully matched. */
|
|
260421
|
+
unmatched_movements_count: number;
|
|
260422
|
+
/** @description Income documents issued in the month still «Por conciliar». */
|
|
260423
|
+
unmatched_documents_count: number;
|
|
260424
|
+
/** @description What those movements and documents still leave unmatched, whole CLP. */
|
|
258295
260425
|
unmatched_pending_clp: number;
|
|
260426
|
+
unmatched_movements_pending_clp: number;
|
|
260427
|
+
unmatched_documents_pending_clp: number;
|
|
258296
260428
|
};
|
|
258297
260429
|
close: {
|
|
258298
260430
|
unreviewed_count: number;
|
|
@@ -258325,6 +260457,11 @@ interface components {
|
|
|
258325
260457
|
count: number;
|
|
258326
260458
|
pending_clp: number;
|
|
258327
260459
|
};
|
|
260460
|
+
/** @description Income documents still «Por conciliar» at the close (closes made after 2026-10-31). */
|
|
260461
|
+
unmatched_documents?: {
|
|
260462
|
+
count: number;
|
|
260463
|
+
pending_clp: number;
|
|
260464
|
+
};
|
|
258328
260465
|
};
|
|
258329
260466
|
} | null;
|
|
258330
260467
|
changes_since_close: {
|
|
@@ -258816,10 +260953,10 @@ interface components {
|
|
|
258816
260953
|
/** @description Stable item key: document:<uuid>, recurring:<uuid>:<YYYY-MM-DD>, retention:<YYYY-MM>, rescue:<uuid>, cuotas:<day>, appointments:<day>, cash_pending. */
|
|
258817
260954
|
key: string;
|
|
258818
260955
|
/**
|
|
258819
|
-
* @description payable = a purchase, honorario or gasto by due date; receivable = a sale or issued honorario by due date; retention = the retención of honorarios received, due with the F29; recurring = a recurring item occurrence; cuotas = patient cuotas of the day; appointments = booked appointments with a price of the day; cash_pending = efectivo por depositar; rescue = a planned «Rescatar fondo».
|
|
260956
|
+
* @description payable = a purchase, honorario or gasto by due date; receivable = a sale or issued honorario by due date; retention = the retención of honorarios received, due with the F29; recurring = a recurring item occurrence; cuotas = patient cuotas of the day; appointments = booked appointments with a price of the day; cash_pending = efectivo por depositar: only payments made in cash, still to deposit, today; card_settlement = card payments a processor has not paid out yet, on their payout day (2 business days, Chile holidays skipped); a transfer with no bank match is not projected (it is a Por resolver case); rescue = a planned «Rescatar fondo».
|
|
258820
260957
|
* @enum {string}
|
|
258821
260958
|
*/
|
|
258822
|
-
source: "payable" | "receivable" | "retention" | "recurring" | "cuotas" | "appointments" | "cash_pending" | "rescue";
|
|
260959
|
+
source: "payable" | "receivable" | "retention" | "recurring" | "cuotas" | "appointments" | "cash_pending" | "card_settlement" | "rescue";
|
|
258823
260960
|
/** @enum {string} */
|
|
258824
260961
|
direction: "inflow" | "outflow";
|
|
258825
260962
|
label: string;
|
|
@@ -258937,6 +261074,13 @@ interface components {
|
|
|
258937
261074
|
receivables_clp: number;
|
|
258938
261075
|
receivables_count: number;
|
|
258939
261076
|
};
|
|
261077
|
+
/** @description What the typical weekday income stands on. `insufficient_history` = fewer than 4 weeks of bank history: no typical income is projected (every `typical_inflow_clp` is 0 and there is no band) and the page should say so. */
|
|
261078
|
+
typical_income: {
|
|
261079
|
+
/** @enum {string} */
|
|
261080
|
+
basis: "history" | "insufficient_history";
|
|
261081
|
+
/** @description Whole weeks of bank history behind the weekday band. */
|
|
261082
|
+
weeks: number;
|
|
261083
|
+
};
|
|
258940
261084
|
band_basis: {
|
|
258941
261085
|
from: string | null;
|
|
258942
261086
|
to: string;
|
|
@@ -259003,6 +261147,12 @@ interface components {
|
|
|
259003
261147
|
} | null;
|
|
259004
261148
|
};
|
|
259005
261149
|
};
|
|
261150
|
+
/** @description `lowest` is measured over today .. `to` (`horizon_days`, default 30: the page's window); `month_end` is the end of the current month. */
|
|
261151
|
+
horizon: {
|
|
261152
|
+
days: number;
|
|
261153
|
+
/** @description Last day of the window. */
|
|
261154
|
+
to: string;
|
|
261155
|
+
};
|
|
259006
261156
|
};
|
|
259007
261157
|
FinanzasCashFlowMoveResult: {
|
|
259008
261158
|
dry_run: boolean;
|
|
@@ -259132,6 +261282,99 @@ interface components {
|
|
|
259132
261282
|
/** @description The last day an occurrence may fall on. Default: today (the day before it starts, if it has not started). */
|
|
259133
261283
|
ends_on?: string | null;
|
|
259134
261284
|
};
|
|
261285
|
+
FinanzasAlert: {
|
|
261286
|
+
/** Format: uuid */
|
|
261287
|
+
id: string;
|
|
261288
|
+
/**
|
|
261289
|
+
* @description `cash_negative`: the Flujo de caja projection drops below zero in the next 30 days. `f29_due`: an F29 with something to pay is due within 5 days and is unpaid. `supplier_invoice_missing`: a Contraparte that invoiced each of the last 3 months has no invoice this month, 3 days past its usual day.
|
|
261290
|
+
* @enum {string}
|
|
261291
|
+
*/
|
|
261292
|
+
kind: "cash_negative" | "f29_due" | "supplier_invoice_missing";
|
|
261293
|
+
/** @description One line, Spanish. */
|
|
261294
|
+
title: string;
|
|
261295
|
+
/** @description What happened and what to do. */
|
|
261296
|
+
body: string;
|
|
261297
|
+
/** @description The button that fixes it. */
|
|
261298
|
+
cta_label: string;
|
|
261299
|
+
/** @description Workspace-relative screen that fixes it (`/finanzas/reportes/flujo-de-caja`, `/finanzas/documentos?vista=f29`, `/finanzas/contrapartes/<id>`). */
|
|
261300
|
+
path: string;
|
|
261301
|
+
/** @description Day first seen (YYYY-MM-DD, Santiago). */
|
|
261302
|
+
opened_on: string;
|
|
261303
|
+
/** @description When the members were told; null until then. */
|
|
261304
|
+
notified_at: string | null;
|
|
261305
|
+
updated_at: string;
|
|
261306
|
+
/** @description The facts, whole CLP. cash_negative: `lowest_date`, `lowest_balance_clp`, `today_balance_clp`, `cause_label`, `cause_amount_clp`, `horizon_days`. f29_due: `period`, `due_date`, `amount_clp`, `days_left`, `amount_is_final`, `document_id`. supplier_invoice_missing: `contraparte_id`, `contraparte_name`, `period`, `usual_day`, `typical_amount_clp`, `months_invoiced`. */
|
|
261307
|
+
data: {
|
|
261308
|
+
[key: string]: unknown;
|
|
261309
|
+
};
|
|
261310
|
+
};
|
|
261311
|
+
FinanzasAlertList: components["schemas"]["FinanzasAlert"][];
|
|
261312
|
+
FinanzasDigestPreview: {
|
|
261313
|
+
/** @description Monday of this week (YYYY-MM-DD, workspace time). */
|
|
261314
|
+
week_start: string;
|
|
261315
|
+
/** @description This week's send moment: Monday 09:00 workspace time (ISO). */
|
|
261316
|
+
send_at: string;
|
|
261317
|
+
/** @description Next Monday's 09:00 workspace time (ISO). */
|
|
261318
|
+
next_send_at: string;
|
|
261319
|
+
/**
|
|
261320
|
+
* @description This week's digest: `pending` (not sent yet), `sent`, or `empty` (no finance data that Monday, nothing went out).
|
|
261321
|
+
* @enum {string}
|
|
261322
|
+
*/
|
|
261323
|
+
status: "pending" | "sent" | "empty";
|
|
261324
|
+
sent_at: string | null;
|
|
261325
|
+
/** @description The workspace has finance data now; false = no digest would go out. */
|
|
261326
|
+
will_send: boolean;
|
|
261327
|
+
/** @description The caller's own channels: their notification preferences for `finanzas.weekly_digest` and, for WhatsApp, the admin's opt-in `finanzas_whatsapp` rail with an approved digest template. */
|
|
261328
|
+
channels: {
|
|
261329
|
+
email: boolean;
|
|
261330
|
+
whatsapp: boolean;
|
|
261331
|
+
};
|
|
261332
|
+
email: {
|
|
261333
|
+
subject: string;
|
|
261334
|
+
hero: {
|
|
261335
|
+
/** @description «Caja hoy» or «Te necesita». */
|
|
261336
|
+
label: string;
|
|
261337
|
+
/** @description THE big number, formatted. */
|
|
261338
|
+
value: string;
|
|
261339
|
+
caption: string | null;
|
|
261340
|
+
};
|
|
261341
|
+
/** @description The one problem (the only red line): the cash runs out within 30 days, or a bank needs reconnecting. Null when there is none. */
|
|
261342
|
+
problem: {
|
|
261343
|
+
text: string;
|
|
261344
|
+
link: {
|
|
261345
|
+
label: string;
|
|
261346
|
+
/** @description Workspace-relative screen (prefix `/w/<workspace>`). */
|
|
261347
|
+
path: string;
|
|
261348
|
+
};
|
|
261349
|
+
} | null;
|
|
261350
|
+
/** @description The rest: the month against the punto de equilibrio, the open cases, what Vitrina ordered. */
|
|
261351
|
+
lines: string[];
|
|
261352
|
+
primary: {
|
|
261353
|
+
label: string;
|
|
261354
|
+
/** @description Workspace-relative screen (prefix `/w/<workspace>`). */
|
|
261355
|
+
path: string;
|
|
261356
|
+
};
|
|
261357
|
+
secondary: {
|
|
261358
|
+
label: string;
|
|
261359
|
+
/** @description Workspace-relative screen (prefix `/w/<workspace>`). */
|
|
261360
|
+
path: string;
|
|
261361
|
+
};
|
|
261362
|
+
};
|
|
261363
|
+
/** @description The WhatsApp `{{resumen}}` for the caller. */
|
|
261364
|
+
whatsapp_text: string;
|
|
261365
|
+
/** @description The same figures as `GET /finanzas/resumen` (whole CLP). Cash and result are null without `finanzas_reports:read`. */
|
|
261366
|
+
figures: {
|
|
261367
|
+
reports_visible: boolean;
|
|
261368
|
+
cash_today_clp: number | null;
|
|
261369
|
+
month_end_clp: number | null;
|
|
261370
|
+
in_30_days_clp: number | null;
|
|
261371
|
+
runs_out_date: string | null;
|
|
261372
|
+
ingresos_clp: number | null;
|
|
261373
|
+
resultado_clp: number | null;
|
|
261374
|
+
equilibrio_clp: number | null;
|
|
261375
|
+
open_cases: number;
|
|
261376
|
+
};
|
|
261377
|
+
};
|
|
259135
261378
|
FinanzasCostos: {
|
|
259136
261379
|
from: string;
|
|
259137
261380
|
to: string;
|
|
@@ -259279,6 +261522,153 @@ interface components {
|
|
|
259279
261522
|
updated_by: string | null;
|
|
259280
261523
|
updated_at: string | null;
|
|
259281
261524
|
};
|
|
261525
|
+
FinanzasResumenCash: {
|
|
261526
|
+
/** @description «Caja hoy»: today’s balance of the operating accounts (savings apart) = the Flujo de caja opening. */
|
|
261527
|
+
today_clp: number;
|
|
261528
|
+
balance_as_of: string | null;
|
|
261529
|
+
accounts_count: number;
|
|
261530
|
+
/** @description Operating accounts with no known balance (not in the total). */
|
|
261531
|
+
unknown_count: number;
|
|
261532
|
+
savings_clp: number;
|
|
261533
|
+
/** @description Projected balance at the end of the month. */
|
|
261534
|
+
month_end: {
|
|
261535
|
+
date: string;
|
|
261536
|
+
balance_clp: number;
|
|
261537
|
+
band: {
|
|
261538
|
+
low_clp: number;
|
|
261539
|
+
high_clp: number;
|
|
261540
|
+
} | null;
|
|
261541
|
+
};
|
|
261542
|
+
/** @description Projected balance 30 days from today. */
|
|
261543
|
+
in_30_days: {
|
|
261544
|
+
date: string;
|
|
261545
|
+
balance_clp: number;
|
|
261546
|
+
band: {
|
|
261547
|
+
low_clp: number;
|
|
261548
|
+
high_clp: number;
|
|
261549
|
+
} | null;
|
|
261550
|
+
};
|
|
261551
|
+
lowest: components["schemas"]["FinanzasCashFlowLowest"] & unknown;
|
|
261552
|
+
/** @description Null when cash stays ≥ 0 for 30 days. */
|
|
261553
|
+
runs_out: {
|
|
261554
|
+
/** @description The first projected day under zero. */
|
|
261555
|
+
date: string;
|
|
261556
|
+
/** @description «Alcanza hasta el …»: the day before. */
|
|
261557
|
+
covered_until: string;
|
|
261558
|
+
balance_clp: number;
|
|
261559
|
+
cause: components["schemas"]["FinanzasCashFlowItem"];
|
|
261560
|
+
} | null;
|
|
261561
|
+
overdue: {
|
|
261562
|
+
payables_clp: number;
|
|
261563
|
+
payables_count: number;
|
|
261564
|
+
stale_payables_clp: number;
|
|
261565
|
+
stale_payables_count: number;
|
|
261566
|
+
receivables_clp: number;
|
|
261567
|
+
receivables_count: number;
|
|
261568
|
+
};
|
|
261569
|
+
/** @description The runway: one point per day, today … today + 30. */
|
|
261570
|
+
points: {
|
|
261571
|
+
date: string;
|
|
261572
|
+
balance_clp: number;
|
|
261573
|
+
band: {
|
|
261574
|
+
low_clp: number;
|
|
261575
|
+
high_clp: number;
|
|
261576
|
+
} | null;
|
|
261577
|
+
}[];
|
|
261578
|
+
} | null;
|
|
261579
|
+
FinanzasResumenResult: {
|
|
261580
|
+
month: string;
|
|
261581
|
+
label: string;
|
|
261582
|
+
proforma: boolean;
|
|
261583
|
+
/** @description Net, as the Resultado. */
|
|
261584
|
+
ingresos_clp: number;
|
|
261585
|
+
/** @description «¿Cuánto gasto?»: variables + fijos. */
|
|
261586
|
+
gastos_clp: number;
|
|
261587
|
+
variables_clp: number;
|
|
261588
|
+
fijos_clp: number;
|
|
261589
|
+
/** @description Part of `variables_clp`: «Egresos sin clasificar», shown apart. */
|
|
261590
|
+
sin_clasificar_clp: number;
|
|
261591
|
+
/** @description The month’s Resultado operacional. */
|
|
261592
|
+
resultado_clp: number;
|
|
261593
|
+
/** @description The break-even line: Costos y equilibrio’s punto de equilibrio of the last closed month (its headline). */
|
|
261594
|
+
equilibrio: {
|
|
261595
|
+
month: string;
|
|
261596
|
+
label: string;
|
|
261597
|
+
equilibrio_clp: number | null;
|
|
261598
|
+
/** @enum {string|null} */
|
|
261599
|
+
sin_calculo: "sin_ingresos" | "margen_no_positivo" | null;
|
|
261600
|
+
} | null;
|
|
261601
|
+
/** @description Percent, one decimal. */
|
|
261602
|
+
cobertura_pct: number | null;
|
|
261603
|
+
/** @description ingresos − equilibrio (negative: still short of it). */
|
|
261604
|
+
brecha_clp: number | null;
|
|
261605
|
+
} | null;
|
|
261606
|
+
FinanzasResumen: {
|
|
261607
|
+
/** @description Today (America/Santiago). */
|
|
261608
|
+
as_of: string;
|
|
261609
|
+
month: string;
|
|
261610
|
+
month_label: string;
|
|
261611
|
+
/** @enum {string} */
|
|
261612
|
+
currency: "CLP";
|
|
261613
|
+
/** @description False for a caller without `finanzas_reports:read` (the «Finanzas» staff permission): `cash` and `result` are null. */
|
|
261614
|
+
reports_visible: boolean;
|
|
261615
|
+
/** @description The newest successful bank / Mercado Pago sync. */
|
|
261616
|
+
synced_at: string | null;
|
|
261617
|
+
/** @description The one problem shown in red: cash running out within 30 days first, else a bank connection that needs a person. */
|
|
261618
|
+
problem: {
|
|
261619
|
+
/** @enum {string} */
|
|
261620
|
+
kind: "cash_runs_out";
|
|
261621
|
+
date: string;
|
|
261622
|
+
balance_clp: number;
|
|
261623
|
+
} | {
|
|
261624
|
+
/** @enum {string} */
|
|
261625
|
+
kind: "connection";
|
|
261626
|
+
connection_id: string;
|
|
261627
|
+
institution_name: string | null;
|
|
261628
|
+
/** @enum {string} */
|
|
261629
|
+
status: "ok" | "pending" | "stale" | "error" | "login_required" | "disconnected";
|
|
261630
|
+
} | null;
|
|
261631
|
+
cash: components["schemas"]["FinanzasResumenCash"];
|
|
261632
|
+
result: components["schemas"]["FinanzasResumenResult"];
|
|
261633
|
+
inbox: components["schemas"]["FinanzasCaseCount"] & {
|
|
261634
|
+
/** @description The previous month, for «Cerrar {mes}» when nothing is open. Null (no prompt) when that month is before the month the add-on became active and holds no bank movements or documents. */
|
|
261635
|
+
close: {
|
|
261636
|
+
month: string;
|
|
261637
|
+
label: string;
|
|
261638
|
+
/** @enum {string} */
|
|
261639
|
+
state: "open" | "ready_to_close" | "closed";
|
|
261640
|
+
open_cases: number;
|
|
261641
|
+
} | null;
|
|
261642
|
+
};
|
|
261643
|
+
automatic: {
|
|
261644
|
+
month: string;
|
|
261645
|
+
count: number;
|
|
261646
|
+
total_clp: number;
|
|
261647
|
+
unreviewed_count: number;
|
|
261648
|
+
by_actor: {
|
|
261649
|
+
rule: number;
|
|
261650
|
+
match: number;
|
|
261651
|
+
ai: number;
|
|
261652
|
+
};
|
|
261653
|
+
/** @description The newest 3 automatic actions of the month; undo through POST /finanzas/automatic-actions/{kind}/{id}/undo. */
|
|
261654
|
+
recent: (components["schemas"]["FinanzasAutomaticAction"] & {
|
|
261655
|
+
group_name: string;
|
|
261656
|
+
})[];
|
|
261657
|
+
};
|
|
261658
|
+
accounts: {
|
|
261659
|
+
id: string;
|
|
261660
|
+
name: string;
|
|
261661
|
+
institution_name: string | null;
|
|
261662
|
+
number_masked: string | null;
|
|
261663
|
+
type: string;
|
|
261664
|
+
/** @enum {string} */
|
|
261665
|
+
currency: "CLP" | "USD";
|
|
261666
|
+
balance_clp: number | null;
|
|
261667
|
+
balance_as_of: string | null;
|
|
261668
|
+
/** @description False for savings accounts (not in «Caja hoy»). */
|
|
261669
|
+
in_cash: boolean;
|
|
261670
|
+
}[];
|
|
261671
|
+
};
|
|
259282
261672
|
FinanzasPuente: {
|
|
259283
261673
|
from: string;
|
|
259284
261674
|
to: string;
|
|
@@ -259382,6 +261772,110 @@ interface components {
|
|
|
259382
261772
|
payments: number;
|
|
259383
261773
|
}[];
|
|
259384
261774
|
};
|
|
261775
|
+
FinanzasAdsConnections: {
|
|
261776
|
+
/** @description The workspace has its ad-data link (provisioned when it connects Meta Ads). */
|
|
261777
|
+
profile: boolean;
|
|
261778
|
+
last_attempt_at: string | null;
|
|
261779
|
+
last_sync_at: string | null;
|
|
261780
|
+
/** @description Spanish copy when the last read failed, else null. */
|
|
261781
|
+
last_error: string | null;
|
|
261782
|
+
platforms: {
|
|
261783
|
+
/** @enum {string} */
|
|
261784
|
+
platform: "meta_ads" | "google_ads";
|
|
261785
|
+
/** @example Meta Ads */
|
|
261786
|
+
label: string;
|
|
261787
|
+
/**
|
|
261788
|
+
* @description connected = at least one healthy account; expired = accounts, none healthy; none = no account.
|
|
261789
|
+
* @enum {string}
|
|
261790
|
+
*/
|
|
261791
|
+
status: "connected" | "expired" | "none";
|
|
261792
|
+
accounts: {
|
|
261793
|
+
/** @enum {string} */
|
|
261794
|
+
platform: "meta_ads" | "google_ads" | "tiktok_ads";
|
|
261795
|
+
/**
|
|
261796
|
+
* @description The platform's own id: Meta `act_…`, Google the 10-digit customer id.
|
|
261797
|
+
* @example act_969938652650502
|
|
261798
|
+
*/
|
|
261799
|
+
ad_account_id: string;
|
|
261800
|
+
/** @description Google: `123-456-7890`; Meta: the `act_…` id. */
|
|
261801
|
+
account_label: string;
|
|
261802
|
+
account_name: string | null;
|
|
261803
|
+
currency: string | null;
|
|
261804
|
+
timezone: string | null;
|
|
261805
|
+
/** @description connected | syncing | error | disconnected | reconnect_required | revoked */
|
|
261806
|
+
connection_status: string;
|
|
261807
|
+
/** @description connected or syncing. */
|
|
261808
|
+
healthy: boolean;
|
|
261809
|
+
last_synced_at: string | null;
|
|
261810
|
+
/** @description True only for Meta. */
|
|
261811
|
+
charges_supported: boolean;
|
|
261812
|
+
/** @description When Meta's activity log was last read in full; null = never. */
|
|
261813
|
+
charges_synced_at: string | null;
|
|
261814
|
+
charges_synced: number;
|
|
261815
|
+
charges_linked: number;
|
|
261816
|
+
/** @description Spend per month over the last read (92 days), smallest unit of `currency`. */
|
|
261817
|
+
spend_by_month: {
|
|
261818
|
+
/** @example 2026-10 */
|
|
261819
|
+
month: string;
|
|
261820
|
+
spend_minor: number;
|
|
261821
|
+
currency: string | null;
|
|
261822
|
+
}[];
|
|
261823
|
+
}[];
|
|
261824
|
+
without_connection: string;
|
|
261825
|
+
/** @description Where to connect: Integraciones › Meta Ads (no connect flow here). */
|
|
261826
|
+
connect_path: string;
|
|
261827
|
+
}[];
|
|
261828
|
+
};
|
|
261829
|
+
FinanzasAdsCharge: {
|
|
261830
|
+
id: string;
|
|
261831
|
+
/** @enum {string} */
|
|
261832
|
+
platform: "meta_ads" | "google_ads" | "tiktok_ads";
|
|
261833
|
+
ad_account_id: string;
|
|
261834
|
+
event_type: string;
|
|
261835
|
+
/** @description cargo | reembolso | contracargo | rechazo | fondos */
|
|
261836
|
+
event_label: string;
|
|
261837
|
+
event_time: string;
|
|
261838
|
+
local_date: string;
|
|
261839
|
+
/** @description Meta's «Transaction ID» (Billing & payments), unique per charge. */
|
|
261840
|
+
meta_transaction_id: string | null;
|
|
261841
|
+
/** @description Smallest unit of `currency` (CLP pesos, USD cents). Null when Meta stated none. */
|
|
261842
|
+
amount_minor: number | null;
|
|
261843
|
+
currency: string | null;
|
|
261844
|
+
/** @enum {string} */
|
|
261845
|
+
link_state: "linked" | "unlinked";
|
|
261846
|
+
document_id: string | null;
|
|
261847
|
+
movement_id: string | null;
|
|
261848
|
+
linked_at: string | null;
|
|
261849
|
+
};
|
|
261850
|
+
FinanzasAdsChargesList: {
|
|
261851
|
+
from: string;
|
|
261852
|
+
to: string;
|
|
261853
|
+
items: components["schemas"]["FinanzasAdsCharge"][];
|
|
261854
|
+
totals: {
|
|
261855
|
+
count: number;
|
|
261856
|
+
linked: number;
|
|
261857
|
+
unlinked: number;
|
|
261858
|
+
};
|
|
261859
|
+
};
|
|
261860
|
+
FinanzasAdsSyncResult: {
|
|
261861
|
+
skipped: boolean;
|
|
261862
|
+
/** @enum {string} */
|
|
261863
|
+
read: "ok" | "no_profile" | "error" | "skipped";
|
|
261864
|
+
accounts: number;
|
|
261865
|
+
charges_new: number;
|
|
261866
|
+
recognize: {
|
|
261867
|
+
recognized: number;
|
|
261868
|
+
created: number;
|
|
261869
|
+
receipt_first: number;
|
|
261870
|
+
};
|
|
261871
|
+
match: {
|
|
261872
|
+
open: number;
|
|
261873
|
+
linked: number;
|
|
261874
|
+
unconfirmed: number;
|
|
261875
|
+
no_connection: number;
|
|
261876
|
+
pending: number;
|
|
261877
|
+
};
|
|
261878
|
+
};
|
|
259385
261879
|
ClinicImportedBalanceBudget: {
|
|
259386
261880
|
/** Format: uuid */
|
|
259387
261881
|
budget_id: string;
|