@zinn-digital/sdk 0.1.1366 → 0.1.1369

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.
@@ -1767,6 +1767,28 @@ export interface paths {
1767
1767
  patch?: never;
1768
1768
  trace?: never;
1769
1769
  };
1770
+ "/v1/admin/ads/connections/{connection_id}/measurement-health": {
1771
+ parameters: {
1772
+ query?: never;
1773
+ header?: never;
1774
+ path: {
1775
+ connection_id: string;
1776
+ };
1777
+ cookie?: never;
1778
+ };
1779
+ /**
1780
+ * Measurement health of any connection, the house included (za-253).
1781
+ * @description Gated on `campaigns.view`. Staff, any connection, the house included: the same payload as `getAdsMeasurementHealth` (docs/1006 §ADSOPT), read from the stored rows — never a network call in the request. Every read is audited: action `ads.measurement_health_viewed` (platform-wide, metadata: the account's `org_id`).
1782
+ */
1783
+ get: operations["getAdminAdsMeasurementHealth"];
1784
+ put?: never;
1785
+ post?: never;
1786
+ delete?: never;
1787
+ options?: never;
1788
+ head?: never;
1789
+ patch?: never;
1790
+ trace?: never;
1791
+ };
1770
1792
  "/v1/admin/ads/kill-switch": {
1771
1793
  parameters: {
1772
1794
  query?: never;
@@ -17977,6 +17999,28 @@ export interface paths {
17977
17999
  patch?: never;
17978
18000
  trace?: never;
17979
18001
  };
18002
+ "/v1/ads/connections/{connection_id}/measurement-health": {
18003
+ parameters: {
18004
+ query?: never;
18005
+ header?: never;
18006
+ path: {
18007
+ connection_id: string;
18008
+ };
18009
+ cookie?: never;
18010
+ };
18011
+ /**
18012
+ * Optimisation score, conversion goals, offline uploads and PMax automation (za-253).
18013
+ * @description Gated on `ads.view`. What the daily audit's measurement-health step stored for the caller's own connection (docs/1006 §ADSOPT), never a network call in the request: Google's optimisation score in basis points (`score_bp`, 9307 = 93.07%) with one point per day (`trend`, last 30 days), each enabled campaign's score, the conversion goals that count nothing because their category has no enabled primary action (`goals.missing`: a campaign with nothing left to bid for, a person must choose one; `goals.suggested`: one click to take a goal out of bidding; `goals.switched_off`: done by the autopilot, with Undo on the findings list), the offline-conversion uploads Google reports failing in the last two days (`uploads`, with Google's error code), and each Performance Max campaign's asset-automation switches (`automation`, read only). `checked_at` is null before the first audit.
18014
+ */
18015
+ get: operations["getAdsMeasurementHealth"];
18016
+ put?: never;
18017
+ post?: never;
18018
+ delete?: never;
18019
+ options?: never;
18020
+ head?: never;
18021
+ patch?: never;
18022
+ trace?: never;
18023
+ };
17980
18024
  "/v1/ads/connections/{connection_id}/merchant-feed": {
17981
18025
  parameters: {
17982
18026
  query?: never;
@@ -62912,6 +62956,69 @@ export interface components {
62912
62956
  /** @description Where this market's ads land (its language's page). */
62913
62957
  url: string;
62914
62958
  };
62959
+ /** @description ADSOPT (za-253, docs/1006 §ADSOPT) — what the audit's measurement-health step stored. */
62960
+ AdsMeasurementHealth: {
62961
+ automation: {
62962
+ campaign: string;
62963
+ campaign_id: string;
62964
+ switches: {
62965
+ [key: string]: boolean;
62966
+ };
62967
+ }[];
62968
+ campaigns: {
62969
+ campaign: string;
62970
+ campaign_id: string;
62971
+ score_bp: number;
62972
+ }[];
62973
+ /** Format: date-time */
62974
+ checked_at: string | null;
62975
+ /** Format: uuid */
62976
+ connection_id: string;
62977
+ goals: {
62978
+ missing: number;
62979
+ open: {
62980
+ campaign: string;
62981
+ campaign_id: string;
62982
+ goal: string;
62983
+ goals: string[];
62984
+ /** Format: uuid */
62985
+ id: string;
62986
+ /** Format: date-time */
62987
+ since: string;
62988
+ /** @enum {string} */
62989
+ why: "goal_missing" | "suggest_goal_no_primary";
62990
+ }[];
62991
+ suggested: number;
62992
+ switched_off: {
62993
+ /** Format: date-time */
62994
+ at: string | null;
62995
+ campaign: string;
62996
+ goal: string;
62997
+ /** Format: uuid */
62998
+ id: string;
62999
+ }[];
63000
+ };
63001
+ score_bp: number | null;
63002
+ trend: {
63003
+ /** Format: date */
63004
+ day: string;
63005
+ score_bp: number;
63006
+ }[];
63007
+ uploads: {
63008
+ data: {
63009
+ action: string;
63010
+ error: string;
63011
+ failed: number;
63012
+ /** Format: uuid */
63013
+ id: string;
63014
+ last_upload: string;
63015
+ /** Format: date-time */
63016
+ since: string;
63017
+ total: number;
63018
+ }[];
63019
+ failing: number;
63020
+ };
63021
+ };
62915
63022
  /** @description za-188 (docs/1006 §80): a connection's Shopping feed audit. `result` is the last daily audit (empty before the first): `counts` (whole, never capped), `threshold` (`recommended_micros`, `customer_micros`, `used_micros`, `source`), `issues`, `mismatches`, `out_of_stock`, `waste` (each at most 50 rows, most spend first), `stock_pause_link`, `disapprovals_reported` (false on Microsoft — its Content API reports no serving status), `merchant_api` (`off` · `read` · `refused` · `truncated`). Money in micros of the account's currency. */
62916
63023
  AdsMerchantFeed: {
62917
63024
  /** Format: uuid */
@@ -69699,10 +69806,16 @@ export interface components {
69699
69806
  note?: string;
69700
69807
  };
69701
69808
  BulkJobDetail: components["schemas"]["BulkJob"] & {
69809
+ /** @description For a `find_file` job: the refusal key (e.g. `refusal.bulk.fileProtected`) a `delete_file` of the same path would get, so a report never offers a delete the engine will refuse. `null` when the delete is allowed, and for every other operation. */
69810
+ delete_refusal: string | null;
69702
69811
  items: components["schemas"]["BulkJobItem"][];
69703
69812
  };
69704
69813
  BulkJobItem: {
69705
69814
  error_code: components["schemas"]["BulkErrorCode"] | null;
69815
+ /** @description For a `find_file` or `delete_file` item that succeeded: the file's size and last modified time. `null` for every other item, and for a file item written before these facts were recorded. */
69816
+ file: components["schemas"]["BulkJobItemFile"] | null;
69817
+ /** @description Whether `retry-failed` would reopen this item: every `failed` item, and every `skipped` item whose code is not a final answer. A search that found no such file (`file_missing`, `file_not_regular`) has answered and is not retried. Count these to label a retry control; do not re-derive the rule from `status`. */
69818
+ retryable: boolean;
69706
69819
  /** Format: date-time */
69707
69820
  settled_at: string | null;
69708
69821
  /** @description Carried on the row rather than joined, so the report survives the site being deleted mid-job — which, on a long run, is not hypothetical. */
@@ -69710,6 +69823,18 @@ export interface components {
69710
69823
  site_id: components["schemas"]["Uuid"];
69711
69824
  status: components["schemas"]["BulkItemStatus"];
69712
69825
  };
69826
+ BulkJobItemFile: {
69827
+ /**
69828
+ * Format: date-time
69829
+ * @description When the file was last modified, as the site's filesystem reports it.
69830
+ */
69831
+ modified_at: string;
69832
+ /**
69833
+ * Format: int64
69834
+ * @description Size in bytes. Format it for the reader's locale.
69835
+ */
69836
+ size_bytes: number;
69837
+ };
69713
69838
  /** @description The operation's arguments. Which keys are read depends on `operation`: `plugin_install` takes `slugs` + `activate`; `plugin_activate`, `plugin_deactivate` and `plugin_remove` take a single `slug`; `plugin_update` takes `slugs` and treats an empty list as *"everything with an update waiting"*, which is what a bulk update means in practice; `theme_install` takes `slug` + `activate`; `blueprint_apply` takes `blueprint_id`; `wp_search_replace` takes `search` + `replace`; `stack_apply`, `core_update` and `application_install` take nothing. ⛔ `application_install` deliberately accepts no `admin_email` or title: they come from the site's own blueprint and plan, exactly as they do for a single-site provision, because a bulk field for them is an account-takeover primitive with a form in front of it. */
69714
69839
  BulkJobParams: {
69715
69840
  /**
@@ -111634,6 +111759,32 @@ export interface operations {
111634
111759
  429: components["responses"]["TooManyRequests"];
111635
111760
  };
111636
111761
  };
111762
+ getAdminAdsMeasurementHealth: {
111763
+ parameters: {
111764
+ query?: never;
111765
+ header?: never;
111766
+ path: {
111767
+ connection_id: string;
111768
+ };
111769
+ cookie?: never;
111770
+ };
111771
+ requestBody?: never;
111772
+ responses: {
111773
+ /** @description The measurement health of this connection. */
111774
+ 200: {
111775
+ headers: {
111776
+ [name: string]: unknown;
111777
+ };
111778
+ content: {
111779
+ "application/json": components["schemas"]["AdsMeasurementHealth"];
111780
+ };
111781
+ };
111782
+ 401: components["responses"]["Unauthorized"];
111783
+ 403: components["responses"]["Forbidden"];
111784
+ 404: components["responses"]["NotFound"];
111785
+ 429: components["responses"]["TooManyRequests"];
111786
+ };
111787
+ };
111637
111788
  getAdminAdsKillSwitch: {
111638
111789
  parameters: {
111639
111790
  query?: never;
@@ -137681,6 +137832,32 @@ export interface operations {
137681
137832
  429: components["responses"]["TooManyRequests"];
137682
137833
  };
137683
137834
  };
137835
+ getAdsMeasurementHealth: {
137836
+ parameters: {
137837
+ query?: never;
137838
+ header?: never;
137839
+ path: {
137840
+ connection_id: string;
137841
+ };
137842
+ cookie?: never;
137843
+ };
137844
+ requestBody?: never;
137845
+ responses: {
137846
+ /** @description The measurement health of this connection. */
137847
+ 200: {
137848
+ headers: {
137849
+ [name: string]: unknown;
137850
+ };
137851
+ content: {
137852
+ "application/json": components["schemas"]["AdsMeasurementHealth"];
137853
+ };
137854
+ };
137855
+ 401: components["responses"]["Unauthorized"];
137856
+ 403: components["responses"]["Forbidden"];
137857
+ 404: components["responses"]["NotFound"];
137858
+ 429: components["responses"]["TooManyRequests"];
137859
+ };
137860
+ };
137684
137861
  getAdsMerchantFeed: {
137685
137862
  parameters: {
137686
137863
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zinn-digital/sdk",
3
- "version": "0.1.1366",
3
+ "version": "0.1.1369",
4
4
  "description": "Typed TypeScript client for the Zinn Digital Platform API, generated from its OpenAPI spec.",
5
5
  "license": "MIT",
6
6
  "author": "Neil Lock \u2014 CEO, Zinn Digital\u00ae Ltd <office@zinndigital.com>",