@vitrina/api 11.53.1 → 11.55.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 CHANGED
@@ -102775,6 +102775,8 @@ interface paths {
102775
102775
  * `spend`, `roas` and `clicks` are `null` — never `0` — exactly when `spend_available` is `false` (#1809): the engine could not scope spend to the window/model requested. A measured zero still arrives as `0` with `spend_available: true`. Render `null` as "—", never as zero, and let every ratio you derive from it inherit the null.
102776
102776
  *
102777
102777
  * Every other money field (`revenue`, `cash_revenue`, `first_payment_revenue`, …) is parsed from the engine’s exact-decimal wire string (ADR 0018) to a number ONCE, at the provider mapper.
102778
+ *
102779
+ * `meta_send` is the experiment marker (the same as `/ads/meta-send`): when the workspace started sending its outcomes to Meta.
102778
102780
  */
102779
102781
  get: {
102780
102782
  parameters: {
@@ -103357,7 +103359,21 @@ interface paths {
103357
103359
  * ],
103358
103360
  * "incident_id": "b1b1b1b1-0000-4000-8000-000000000002"
103359
103361
  * }
103360
- * ]
103362
+ * ],
103363
+ * "meta_send": {
103364
+ * "first_started_at": "2026-10-01T13:00:00.000Z",
103365
+ * "sending": true,
103366
+ * "intervals": [
103367
+ * {
103368
+ * "started_at": "2026-10-01T13:00:00.000Z",
103369
+ * "stopped_at": "2026-10-20T15:30:00.000Z"
103370
+ * },
103371
+ * {
103372
+ * "started_at": "2026-11-01T12:00:00.000Z",
103373
+ * "stopped_at": null
103374
+ * }
103375
+ * ]
103376
+ * }
103361
103377
  * }
103362
103378
  * }
103363
103379
  */
@@ -103646,6 +103662,157 @@ interface paths {
103646
103662
  patch?: never;
103647
103663
  trace?: never;
103648
103664
  };
103665
+ "/ads/meta-send": {
103666
+ parameters: {
103667
+ query?: never;
103668
+ header?: never;
103669
+ path?: never;
103670
+ cookie?: never;
103671
+ };
103672
+ /**
103673
+ * When the workspace started sending its outcomes to Meta
103674
+ * @description The experiment marker of «Antes y después de enviar a Meta». `first_started_at` is the first time outcomes started shipping to Meta (the owner’s «Empezar a enviar»): before it, Meta optimised the ads with no events from Vitrina. `intervals` is the full on/off history (sending can stop — «Solo medir», an undo — and start again), oldest first; `stopped_at: null` is the open one.
103675
+ *
103676
+ * Recorded when a send action or a direct conversion-sync write changes what ships to Meta, and reconciled daily for changes made outside Vitrina (dated when Vitrina saw them). Dates only — no person, event or message. A fact about the workspace: the sample answers the real one. `/ads/overview` carries the same object as `meta_send`.
103677
+ */
103678
+ get: {
103679
+ parameters: {
103680
+ query?: never;
103681
+ header?: never;
103682
+ path?: never;
103683
+ cookie?: never;
103684
+ };
103685
+ requestBody?: never;
103686
+ responses: {
103687
+ /** @description The experiment marker and its intervals */
103688
+ 200: {
103689
+ headers: {
103690
+ [name: string]: unknown;
103691
+ };
103692
+ content: {
103693
+ /**
103694
+ * @example {
103695
+ * "data": {
103696
+ * "first_started_at": "2026-10-01T13:00:00.000Z",
103697
+ * "sending": true,
103698
+ * "intervals": [
103699
+ * {
103700
+ * "started_at": "2026-10-01T13:00:00.000Z",
103701
+ * "stopped_at": "2026-10-20T15:30:00.000Z"
103702
+ * },
103703
+ * {
103704
+ * "started_at": "2026-11-01T12:00:00.000Z",
103705
+ * "stopped_at": null
103706
+ * }
103707
+ * ]
103708
+ * }
103709
+ * }
103710
+ */
103711
+ "application/json": {
103712
+ data: components["schemas"]["AdsMetaSendMarker"];
103713
+ };
103714
+ };
103715
+ };
103716
+ /** @description Validation error */
103717
+ 400: {
103718
+ headers: {
103719
+ [name: string]: unknown;
103720
+ };
103721
+ content: {
103722
+ "application/json": components["schemas"]["Error"];
103723
+ };
103724
+ };
103725
+ /** @description Unauthorized */
103726
+ 401: {
103727
+ headers: {
103728
+ [name: string]: unknown;
103729
+ };
103730
+ content: {
103731
+ "application/json": components["schemas"]["Error"];
103732
+ };
103733
+ };
103734
+ /** @description Vitrina Ads is not active for this workspace. `error.code` is `ENTITLEMENT_NOT_ACTIVE`, `error.details.feature` is `vitrina_ads`. */
103735
+ 402: {
103736
+ headers: {
103737
+ [name: string]: unknown;
103738
+ };
103739
+ content: {
103740
+ /**
103741
+ * @example {
103742
+ * "error": {
103743
+ * "code": "ENTITLEMENT_NOT_ACTIVE",
103744
+ * "message": "El complemento Vitrina Ads no está activo en este espacio de trabajo.",
103745
+ * "details": {
103746
+ * "required": [
103747
+ * "vitrina_ads"
103748
+ * ],
103749
+ * "active": [],
103750
+ * "feature": "vitrina_ads",
103751
+ * "entitlement_state": "off"
103752
+ * }
103753
+ * }
103754
+ * }
103755
+ */
103756
+ "application/json": components["schemas"]["Error"];
103757
+ };
103758
+ };
103759
+ /** @description Forbidden */
103760
+ 403: {
103761
+ headers: {
103762
+ [name: string]: unknown;
103763
+ };
103764
+ content: {
103765
+ "application/json": components["schemas"]["Error"];
103766
+ };
103767
+ };
103768
+ /** @description Not found */
103769
+ 404: {
103770
+ headers: {
103771
+ [name: string]: unknown;
103772
+ };
103773
+ content: {
103774
+ "application/json": components["schemas"]["Error"];
103775
+ };
103776
+ };
103777
+ /** @description Vitrina Ads is active but the delegated key has not finished rotating (`ADS_KEY_NEEDS_REMINT`) — retry once `GET /ads/state` reports `needs_remint: false`. Also the generic conflict of a write. */
103778
+ 409: {
103779
+ headers: {
103780
+ [name: string]: unknown;
103781
+ };
103782
+ content: {
103783
+ /**
103784
+ * @example {
103785
+ * "error": {
103786
+ * "code": "ADS_KEY_NEEDS_REMINT",
103787
+ * "message": "Vitrina Ads is active but the delegated key has not finished rotating (key_kind: core)",
103788
+ * "details": {
103789
+ * "key_kind": "core"
103790
+ * }
103791
+ * }
103792
+ * }
103793
+ */
103794
+ "application/json": components["schemas"]["Error"];
103795
+ };
103796
+ };
103797
+ /** @description Rate limited */
103798
+ 429: {
103799
+ headers: {
103800
+ [name: string]: unknown;
103801
+ };
103802
+ content: {
103803
+ "application/json": components["schemas"]["Error"];
103804
+ };
103805
+ };
103806
+ };
103807
+ };
103808
+ put?: never;
103809
+ post?: never;
103810
+ delete?: never;
103811
+ options?: never;
103812
+ head?: never;
103813
+ patch?: never;
103814
+ trace?: never;
103815
+ };
103649
103816
  "/ads/campaigns": {
103650
103817
  parameters: {
103651
103818
  query?: never;
@@ -131597,6 +131764,30 @@ interface components {
131597
131764
  /** Format: uuid */
131598
131765
  incident_id: string;
131599
131766
  };
131767
+ AdsMetaSendInterval: {
131768
+ /**
131769
+ * Format: date-time
131770
+ * @description When outcomes started shipping to Meta (UTC).
131771
+ */
131772
+ started_at: string;
131773
+ /**
131774
+ * Format: date-time
131775
+ * @description When they stopped; `null` = still sending.
131776
+ */
131777
+ stopped_at: string | null;
131778
+ };
131779
+ /** @description When the workspace started (and stopped) sending its outcomes to Meta — draw `first_started_at` as a vertical marker when it falls in the window. A fact about the workspace: the sample carries the real one. */
131780
+ AdsMetaSendMarker: {
131781
+ /**
131782
+ * Format: date-time
131783
+ * @description The first time the workspace started sending its outcomes to Meta («Empezar a enviar»): the experiment marker every Ads chart draws as «Empezaste a enviar a Meta · {fecha}». Before it, Meta optimised with no events from Vitrina. `null` = never sent.
131784
+ */
131785
+ first_started_at: string | null;
131786
+ /** @description Outcomes ship to Meta right now (an interval is open). */
131787
+ sending: boolean;
131788
+ /** @description Every interval in which outcomes shipped to Meta, oldest first — a before/after comparison must leave out the days between them. */
131789
+ intervals: components["schemas"]["AdsMetaSendInterval"][];
131790
+ };
131600
131791
  AdsOverview: {
131601
131792
  current: {
131602
131793
  spend: number | null;
@@ -131709,6 +131900,7 @@ interface components {
131709
131900
  /** @description Measurement gaps overlapping the window (W1.1). Days inside a gap whose `metrics` list a figure carry NO measured value for it — the engine may report 0 there; render «sin datos», never the 0. */
131710
131901
  gaps: components["schemas"]["AdsGap"][];
131711
131902
  coverage: components["schemas"]["AdsCoverage"];
131903
+ meta_send: components["schemas"]["AdsMetaSendMarker"];
131712
131904
  };
131713
131905
  AdsMeasurementIncident: {
131714
131906
  /** Format: uuid */
package/dist/index.d.ts CHANGED
@@ -102775,6 +102775,8 @@ interface paths {
102775
102775
  * `spend`, `roas` and `clicks` are `null` — never `0` — exactly when `spend_available` is `false` (#1809): the engine could not scope spend to the window/model requested. A measured zero still arrives as `0` with `spend_available: true`. Render `null` as "—", never as zero, and let every ratio you derive from it inherit the null.
102776
102776
  *
102777
102777
  * Every other money field (`revenue`, `cash_revenue`, `first_payment_revenue`, …) is parsed from the engine’s exact-decimal wire string (ADR 0018) to a number ONCE, at the provider mapper.
102778
+ *
102779
+ * `meta_send` is the experiment marker (the same as `/ads/meta-send`): when the workspace started sending its outcomes to Meta.
102778
102780
  */
102779
102781
  get: {
102780
102782
  parameters: {
@@ -103357,7 +103359,21 @@ interface paths {
103357
103359
  * ],
103358
103360
  * "incident_id": "b1b1b1b1-0000-4000-8000-000000000002"
103359
103361
  * }
103360
- * ]
103362
+ * ],
103363
+ * "meta_send": {
103364
+ * "first_started_at": "2026-10-01T13:00:00.000Z",
103365
+ * "sending": true,
103366
+ * "intervals": [
103367
+ * {
103368
+ * "started_at": "2026-10-01T13:00:00.000Z",
103369
+ * "stopped_at": "2026-10-20T15:30:00.000Z"
103370
+ * },
103371
+ * {
103372
+ * "started_at": "2026-11-01T12:00:00.000Z",
103373
+ * "stopped_at": null
103374
+ * }
103375
+ * ]
103376
+ * }
103361
103377
  * }
103362
103378
  * }
103363
103379
  */
@@ -103646,6 +103662,157 @@ interface paths {
103646
103662
  patch?: never;
103647
103663
  trace?: never;
103648
103664
  };
103665
+ "/ads/meta-send": {
103666
+ parameters: {
103667
+ query?: never;
103668
+ header?: never;
103669
+ path?: never;
103670
+ cookie?: never;
103671
+ };
103672
+ /**
103673
+ * When the workspace started sending its outcomes to Meta
103674
+ * @description The experiment marker of «Antes y después de enviar a Meta». `first_started_at` is the first time outcomes started shipping to Meta (the owner’s «Empezar a enviar»): before it, Meta optimised the ads with no events from Vitrina. `intervals` is the full on/off history (sending can stop — «Solo medir», an undo — and start again), oldest first; `stopped_at: null` is the open one.
103675
+ *
103676
+ * Recorded when a send action or a direct conversion-sync write changes what ships to Meta, and reconciled daily for changes made outside Vitrina (dated when Vitrina saw them). Dates only — no person, event or message. A fact about the workspace: the sample answers the real one. `/ads/overview` carries the same object as `meta_send`.
103677
+ */
103678
+ get: {
103679
+ parameters: {
103680
+ query?: never;
103681
+ header?: never;
103682
+ path?: never;
103683
+ cookie?: never;
103684
+ };
103685
+ requestBody?: never;
103686
+ responses: {
103687
+ /** @description The experiment marker and its intervals */
103688
+ 200: {
103689
+ headers: {
103690
+ [name: string]: unknown;
103691
+ };
103692
+ content: {
103693
+ /**
103694
+ * @example {
103695
+ * "data": {
103696
+ * "first_started_at": "2026-10-01T13:00:00.000Z",
103697
+ * "sending": true,
103698
+ * "intervals": [
103699
+ * {
103700
+ * "started_at": "2026-10-01T13:00:00.000Z",
103701
+ * "stopped_at": "2026-10-20T15:30:00.000Z"
103702
+ * },
103703
+ * {
103704
+ * "started_at": "2026-11-01T12:00:00.000Z",
103705
+ * "stopped_at": null
103706
+ * }
103707
+ * ]
103708
+ * }
103709
+ * }
103710
+ */
103711
+ "application/json": {
103712
+ data: components["schemas"]["AdsMetaSendMarker"];
103713
+ };
103714
+ };
103715
+ };
103716
+ /** @description Validation error */
103717
+ 400: {
103718
+ headers: {
103719
+ [name: string]: unknown;
103720
+ };
103721
+ content: {
103722
+ "application/json": components["schemas"]["Error"];
103723
+ };
103724
+ };
103725
+ /** @description Unauthorized */
103726
+ 401: {
103727
+ headers: {
103728
+ [name: string]: unknown;
103729
+ };
103730
+ content: {
103731
+ "application/json": components["schemas"]["Error"];
103732
+ };
103733
+ };
103734
+ /** @description Vitrina Ads is not active for this workspace. `error.code` is `ENTITLEMENT_NOT_ACTIVE`, `error.details.feature` is `vitrina_ads`. */
103735
+ 402: {
103736
+ headers: {
103737
+ [name: string]: unknown;
103738
+ };
103739
+ content: {
103740
+ /**
103741
+ * @example {
103742
+ * "error": {
103743
+ * "code": "ENTITLEMENT_NOT_ACTIVE",
103744
+ * "message": "El complemento Vitrina Ads no está activo en este espacio de trabajo.",
103745
+ * "details": {
103746
+ * "required": [
103747
+ * "vitrina_ads"
103748
+ * ],
103749
+ * "active": [],
103750
+ * "feature": "vitrina_ads",
103751
+ * "entitlement_state": "off"
103752
+ * }
103753
+ * }
103754
+ * }
103755
+ */
103756
+ "application/json": components["schemas"]["Error"];
103757
+ };
103758
+ };
103759
+ /** @description Forbidden */
103760
+ 403: {
103761
+ headers: {
103762
+ [name: string]: unknown;
103763
+ };
103764
+ content: {
103765
+ "application/json": components["schemas"]["Error"];
103766
+ };
103767
+ };
103768
+ /** @description Not found */
103769
+ 404: {
103770
+ headers: {
103771
+ [name: string]: unknown;
103772
+ };
103773
+ content: {
103774
+ "application/json": components["schemas"]["Error"];
103775
+ };
103776
+ };
103777
+ /** @description Vitrina Ads is active but the delegated key has not finished rotating (`ADS_KEY_NEEDS_REMINT`) — retry once `GET /ads/state` reports `needs_remint: false`. Also the generic conflict of a write. */
103778
+ 409: {
103779
+ headers: {
103780
+ [name: string]: unknown;
103781
+ };
103782
+ content: {
103783
+ /**
103784
+ * @example {
103785
+ * "error": {
103786
+ * "code": "ADS_KEY_NEEDS_REMINT",
103787
+ * "message": "Vitrina Ads is active but the delegated key has not finished rotating (key_kind: core)",
103788
+ * "details": {
103789
+ * "key_kind": "core"
103790
+ * }
103791
+ * }
103792
+ * }
103793
+ */
103794
+ "application/json": components["schemas"]["Error"];
103795
+ };
103796
+ };
103797
+ /** @description Rate limited */
103798
+ 429: {
103799
+ headers: {
103800
+ [name: string]: unknown;
103801
+ };
103802
+ content: {
103803
+ "application/json": components["schemas"]["Error"];
103804
+ };
103805
+ };
103806
+ };
103807
+ };
103808
+ put?: never;
103809
+ post?: never;
103810
+ delete?: never;
103811
+ options?: never;
103812
+ head?: never;
103813
+ patch?: never;
103814
+ trace?: never;
103815
+ };
103649
103816
  "/ads/campaigns": {
103650
103817
  parameters: {
103651
103818
  query?: never;
@@ -131597,6 +131764,30 @@ interface components {
131597
131764
  /** Format: uuid */
131598
131765
  incident_id: string;
131599
131766
  };
131767
+ AdsMetaSendInterval: {
131768
+ /**
131769
+ * Format: date-time
131770
+ * @description When outcomes started shipping to Meta (UTC).
131771
+ */
131772
+ started_at: string;
131773
+ /**
131774
+ * Format: date-time
131775
+ * @description When they stopped; `null` = still sending.
131776
+ */
131777
+ stopped_at: string | null;
131778
+ };
131779
+ /** @description When the workspace started (and stopped) sending its outcomes to Meta — draw `first_started_at` as a vertical marker when it falls in the window. A fact about the workspace: the sample carries the real one. */
131780
+ AdsMetaSendMarker: {
131781
+ /**
131782
+ * Format: date-time
131783
+ * @description The first time the workspace started sending its outcomes to Meta («Empezar a enviar»): the experiment marker every Ads chart draws as «Empezaste a enviar a Meta · {fecha}». Before it, Meta optimised with no events from Vitrina. `null` = never sent.
131784
+ */
131785
+ first_started_at: string | null;
131786
+ /** @description Outcomes ship to Meta right now (an interval is open). */
131787
+ sending: boolean;
131788
+ /** @description Every interval in which outcomes shipped to Meta, oldest first — a before/after comparison must leave out the days between them. */
131789
+ intervals: components["schemas"]["AdsMetaSendInterval"][];
131790
+ };
131600
131791
  AdsOverview: {
131601
131792
  current: {
131602
131793
  spend: number | null;
@@ -131709,6 +131900,7 @@ interface components {
131709
131900
  /** @description Measurement gaps overlapping the window (W1.1). Days inside a gap whose `metrics` list a figure carry NO measured value for it — the engine may report 0 there; render «sin datos», never the 0. */
131710
131901
  gaps: components["schemas"]["AdsGap"][];
131711
131902
  coverage: components["schemas"]["AdsCoverage"];
131903
+ meta_send: components["schemas"]["AdsMetaSendMarker"];
131712
131904
  };
131713
131905
  AdsMeasurementIncident: {
131714
131906
  /** Format: uuid */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitrina/api",
3
- "version": "11.53.1",
3
+ "version": "11.55.0",
4
4
  "description": "Typed TypeScript SDK for the Vitrina API pública — generated from the committed openapi.public.json (ADR 0106).",
5
5
  "type": "module",
6
6
  "license": "MIT",