@zinn-digital/sdk 0.1.1391 → 0.1.1394

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.
@@ -16959,6 +16959,33 @@ export interface paths {
16959
16959
  patch: operations["updateAdsAudience"];
16960
16960
  trace?: never;
16961
16961
  };
16962
+ "/v1/ads/connections/{connection_id}/audiences/{audience_id}/crm-feed": {
16963
+ parameters: {
16964
+ query?: never;
16965
+ header?: never;
16966
+ path: {
16967
+ audience_id: string;
16968
+ connection_id: string;
16969
+ };
16970
+ cookie?: never;
16971
+ };
16972
+ get?: never;
16973
+ /**
16974
+ * Fill a Customer Match list automatically from one of your CRM sources.
16975
+ * @description za-95 (docs/1006 §72a). Gated on `ads.manage`; audit action `ads.audience_crm_feed_set` (counts and the attestation, never a person). Any change to the attestation re-stamps who and when; withdrawing either consent removes everyone at the next sync; changing the stages or the source re-reads the CRM from the start. Refusals: `audienceHasUploads` (the list holds uploaded people), `crmFeedBadSource`, `crmFeedBadStages`, `audienceDeleted`, `disconnected`.
16976
+ */
16977
+ put: operations["setAdsAudienceCrmFeed"];
16978
+ post?: never;
16979
+ /**
16980
+ * Stop filling a list from the CRM; everyone it added is removed.
16981
+ * @description za-95. Gated on `ads.manage`; audit action `ads.audience_crm_feed_removed`. The list stays and can take uploads again.
16982
+ */
16983
+ delete: operations["removeAdsAudienceCrmFeed"];
16984
+ options?: never;
16985
+ head?: never;
16986
+ patch?: never;
16987
+ trace?: never;
16988
+ };
16962
16989
  "/v1/ads/connections/{connection_id}/audiences/{audience_id}/members": {
16963
16990
  parameters: {
16964
16991
  query?: never;
@@ -20050,6 +20077,26 @@ export interface paths {
20050
20077
  patch?: never;
20051
20078
  trace?: never;
20052
20079
  };
20080
+ "/v1/ads/social": {
20081
+ parameters: {
20082
+ query?: never;
20083
+ header?: never;
20084
+ path?: never;
20085
+ cookie?: never;
20086
+ };
20087
+ /**
20088
+ * The social-network autopilot on this org's X and Meta accounts.
20089
+ * @description Gated on `ads.view`. Read from our own rows (no network call). Per X and Meta account: `levers` says what the autopilot judges there (`audiences` and `creatives` are judged by the scheduled audit; Meta `placements` by the placement guard and `budgets` by the cross-network budget, `elsewhere` with the screen in `where`; X offers no placement change on a running line item, `not_offered`). `review` is the latest audit: audiences (X line items, Meta ad sets) and creatives (X promoted Tweets, Meta ads) judged, the spend found wasted (`waste_micros`, micros of the account currency: spend with no conversion), what was proposed or applied and `findings` (at most 50). A creative is stopped only while its audience keeps another creative that is not waste. `needs_permission` means Meta has not granted Zinn® Ads `ads_management`: judged, nothing proposed. `pending` counts the pauses waiting for a person (docs/1006 §121, za-55).
20090
+ */
20091
+ get: operations["getAdsSocial"];
20092
+ put?: never;
20093
+ post?: never;
20094
+ delete?: never;
20095
+ options?: never;
20096
+ head?: never;
20097
+ patch?: never;
20098
+ trace?: never;
20099
+ };
20053
20100
  "/v1/ads/tracking/events": {
20054
20101
  parameters: {
20055
20102
  query?: never;
@@ -61562,8 +61609,11 @@ export interface components {
61562
61609
  active: boolean;
61563
61610
  added_last?: number;
61564
61611
  at_network_list?: boolean;
61565
- /** @enum {string|null} */
61566
- blocked_by: "notGoogle" | "noConsent" | "noTerms" | "noDataManager" | "paused" | "disconnected" | "killed" | "notInGoodStanding" | "needsReconnect" | "deferred" | null;
61612
+ /**
61613
+ * @description Why nothing is sent now. `noSourceConsent` (za-95) = the list is filled from a CRM source whose Customer Match consents (BOTH ad_user_data and ad_personalization) are not attested; the remedy is to attest both for that source on the list. A list that may not add people (`noConsent` / `noSourceConsent`) still has its removals sent: withdrawing consent or unlinking the CRM takes everyone off at the network.
61614
+ * @enum {string|null}
61615
+ */
61616
+ blocked_by: "notGoogle" | "noConsent" | "noSourceConsent" | "noTerms" | "noDataManager" | "paused" | "disconnected" | "killed" | "notInGoodStanding" | "needsReconnect" | "deferred" | null;
61567
61617
  consent: {
61568
61618
  /** @enum {string} */
61569
61619
  ad_personalization?: "GRANTED" | "DENIED" | "UNSPECIFIED";
@@ -61591,6 +61641,8 @@ export interface components {
61591
61641
  };
61592
61642
  /** Format: date-time */
61593
61643
  created_at: string;
61644
+ /** @description za-95 — the CRM source filling this list automatically (null = an uploaded list). */
61645
+ crm_feed?: components["schemas"]["AdsAudienceCrmFeed"] | null;
61594
61646
  description?: string;
61595
61647
  /** Format: uuid */
61596
61648
  id: string;
@@ -61610,6 +61662,38 @@ export interface components {
61610
61662
  name: string;
61611
61663
  removed_last?: number;
61612
61664
  };
61665
+ /** @description za-95 (docs/1006 §72a): a Customer Match list filled from one of the customer's own CRM sources. People whose lead or deal is at one of `stages` join; a person who leaves those stages, or whose CRM consent field reads a refusal, is removed. The Customer Match attestation is this source's OWN (both consents, who and when) — never the CRM source's ad-measurement `consent_attested`. Until both are attested the CRM is not read for the list. Counts only, never a person. */
61666
+ AdsAudienceCrmFeed: {
61667
+ attest_ad_personalization: boolean;
61668
+ attest_ad_user_data: boolean;
61669
+ /** @description Both attested */
61670
+ attested: boolean;
61671
+ /** Format: date-time */
61672
+ attested_at: string | null;
61673
+ attested_by: string;
61674
+ joined: number;
61675
+ /** Format: date-time */
61676
+ last_fed_at: string | null;
61677
+ leads_read: number;
61678
+ left: number;
61679
+ /** @description Leads at a feed stage whose CRM consent field refused. */
61680
+ not_consented: number;
61681
+ /** Format: uuid */
61682
+ source_id: string;
61683
+ stages: string[];
61684
+ };
61685
+ AdsAudienceCrmFeedPut: {
61686
+ /** @description The customer attests every person in these stages consented to personalised advertising. */
61687
+ attest_ad_personalization: boolean;
61688
+ /** @description The customer attests every person in these stages consented to their data being sent to Google for advertising. */
61689
+ attest_ad_user_data: boolean;
61690
+ /**
61691
+ * Format: uuid
61692
+ * @description A lead or deal source on this ad account (not a calls source).
61693
+ */
61694
+ source_id: string;
61695
+ stages: string[];
61696
+ };
61613
61697
  /** @description One audit of one ad account (za-39: the platform-neutral audit for Microsoft Advertising; the Google audit for Google). Counts only, never vendor text. */
61614
61698
  AdsAuditRun: {
61615
61699
  /** Format: date-time */
@@ -61720,8 +61804,11 @@ export interface components {
61720
61804
  * @enum {string}
61721
61805
  */
61722
61806
  mode: "auto" | "approve" | "off";
61723
- /** @enum {string} */
61724
- step: "negatives" | "pauses" | "keywords" | "budgets" | "bids" | "assets" | "goals";
61807
+ /**
61808
+ * @description za-72 `compare_page`: a competitor ad moved onto the customer's own comparison page for its rival, under the `ads` mode.
61809
+ * @enum {string}
61810
+ */
61811
+ step: "negatives" | "pauses" | "keywords" | "budgets" | "bids" | "assets" | "compare_page" | "goals";
61725
61812
  }[];
61726
61813
  };
61727
61814
  /** @description The organisation's autopilot decisions (za-166, docs/1006 §77). */
@@ -62358,6 +62445,7 @@ export interface components {
62358
62445
  AdsCompetitorGroupsEnvelope: {
62359
62446
  data: {
62360
62447
  enabled: boolean;
62448
+ found_rivals?: components["schemas"]["AdsFoundRival"][];
62361
62449
  last_run: components["schemas"]["AdsCompetitorGroupsRun"] | null;
62362
62450
  /** @description Proposals waiting for approval. */
62363
62451
  pending: number;
@@ -62381,6 +62469,10 @@ export interface components {
62381
62469
  max_keywords?: number | null;
62382
62470
  min_clicks?: number | null;
62383
62471
  min_impressions?: number | null;
62472
+ /** @description za-73: add or dismiss competitors found on the account, by name (from `found_rivals`). An unknown name or value refuses the whole request (competitorGroupsInvalid, field `rivals`). */
62473
+ rivals?: {
62474
+ [key: string]: "added" | "dismissed";
62475
+ };
62384
62476
  };
62385
62477
  AdsCompetitorGroupsRun: {
62386
62478
  /** @description za-71: builds and blocks the Automatic mode sent. */
@@ -62391,6 +62483,8 @@ export interface components {
62391
62483
  blocked?: number;
62392
62484
  /** @description Rival + language pairs that already have a group or a decided proposal. */
62393
62485
  covered: number;
62486
+ /** @description za-73: found competitors waiting for a person to add or dismiss. */
62487
+ found_rivals?: number;
62394
62488
  groups: components["schemas"]["AdsCompetitorGroup"][];
62395
62489
  proposed: number;
62396
62490
  /** @description Empty when it ran; else why not (competitorsOff, notInGoodStanding, ...). */
@@ -62674,6 +62768,8 @@ export interface components {
62674
62768
  };
62675
62769
  AdsCrmSyncResult: {
62676
62770
  failure: string;
62771
+ /** @description za-95: people who joined or left a CRM-fed Customer Match list (CSV uploads). */
62772
+ list_changes?: number;
62677
62773
  more: boolean;
62678
62774
  no_click_id: number;
62679
62775
  not_consented: number;
@@ -62826,6 +62922,22 @@ export interface components {
62826
62922
  */
62827
62923
  option: "move" | "increase";
62828
62924
  };
62925
+ /** @description za-73: a competitor this account's own searches (or a brand bidder Auction Insights named) point at, that nobody added. Added, it joins the competitor list: its ad groups are proposed and no ad may name it. Dismissed, it is never suggested again. */
62926
+ AdsFoundRival: {
62927
+ clicks: number;
62928
+ /** Format: date-time */
62929
+ decided_at?: string | null;
62930
+ /** @description Up to three comparison searches that named it. */
62931
+ examples: string[];
62932
+ /** Format: date-time */
62933
+ first_seen_at?: string | null;
62934
+ impressions: number;
62935
+ name: string;
62936
+ /** @enum {string} */
62937
+ source: "search" | "brand_bidder";
62938
+ /** @enum {string} */
62939
+ status: "new" | "added" | "dismissed";
62940
+ };
62829
62941
  /** @description One geo hold-out (za-202, docs/1006 §80). */
62830
62942
  AdsGeoHoldout: {
62831
62943
  baseline_days: number;
@@ -65146,6 +65258,44 @@ export interface components {
65146
65258
  /** @description The address of the site in that language. */
65147
65259
  url?: string;
65148
65260
  };
65261
+ AdsSocial: {
65262
+ accounts: {
65263
+ /** Format: uuid */
65264
+ connection_id: string;
65265
+ currency: string;
65266
+ label: string;
65267
+ levers: {
65268
+ /** @enum {string} */
65269
+ lever: "audiences" | "placements" | "creatives" | "budgets";
65270
+ /** @enum {string} */
65271
+ state: "judged" | "elsewhere" | "not_offered";
65272
+ where: string;
65273
+ }[];
65274
+ pending: number;
65275
+ /** @enum {string} */
65276
+ platform: "x" | "meta";
65277
+ review: {
65278
+ applied: number;
65279
+ /** Format: date-time */
65280
+ at: string;
65281
+ audiences: number;
65282
+ creatives: number;
65283
+ findings: {
65284
+ clicks: number;
65285
+ cost_micros: number;
65286
+ id: string;
65287
+ /** @enum {string} */
65288
+ lever: "audiences" | "creatives";
65289
+ name: string;
65290
+ }[];
65291
+ held: boolean;
65292
+ needs_permission: boolean;
65293
+ ok: boolean;
65294
+ proposed: number;
65295
+ waste_micros: number;
65296
+ } | null;
65297
+ }[];
65298
+ };
65149
65299
  /** @description za-N2 out-of-stock pause settings of one connection. Each value is the customer's own; `recommended` holds our Recommended defaults and `bounds` the accepted range (minutes). */
65150
65300
  AdsStockPauseSettings: {
65151
65301
  bounds: {
@@ -136329,6 +136479,69 @@ export interface operations {
136329
136479
  429: components["responses"]["TooManyRequests"];
136330
136480
  };
136331
136481
  };
136482
+ setAdsAudienceCrmFeed: {
136483
+ parameters: {
136484
+ query?: never;
136485
+ header?: never;
136486
+ path: {
136487
+ audience_id: string;
136488
+ connection_id: string;
136489
+ };
136490
+ cookie?: never;
136491
+ };
136492
+ requestBody: {
136493
+ content: {
136494
+ "application/json": components["schemas"]["AdsAudienceCrmFeedPut"];
136495
+ };
136496
+ };
136497
+ responses: {
136498
+ /** @description The list, with its feed. */
136499
+ 200: {
136500
+ headers: {
136501
+ [name: string]: unknown;
136502
+ };
136503
+ content: {
136504
+ "application/json": components["schemas"]["AdsAudience"] & {
136505
+ sync_started: boolean;
136506
+ };
136507
+ };
136508
+ };
136509
+ 401: components["responses"]["Unauthorized"];
136510
+ 403: components["responses"]["Forbidden"];
136511
+ 404: components["responses"]["NotFound"];
136512
+ 422: components["responses"]["UnprocessableEntity"];
136513
+ 429: components["responses"]["TooManyRequests"];
136514
+ };
136515
+ };
136516
+ removeAdsAudienceCrmFeed: {
136517
+ parameters: {
136518
+ query?: never;
136519
+ header?: never;
136520
+ path: {
136521
+ audience_id: string;
136522
+ connection_id: string;
136523
+ };
136524
+ cookie?: never;
136525
+ };
136526
+ requestBody?: never;
136527
+ responses: {
136528
+ /** @description Removed; the removals are sent at the next sync. */
136529
+ 202: {
136530
+ headers: {
136531
+ [name: string]: unknown;
136532
+ };
136533
+ content: {
136534
+ "application/json": components["schemas"]["AdsAudience"] & {
136535
+ sync_started: boolean;
136536
+ };
136537
+ };
136538
+ };
136539
+ 401: components["responses"]["Unauthorized"];
136540
+ 403: components["responses"]["Forbidden"];
136541
+ 404: components["responses"]["NotFound"];
136542
+ 429: components["responses"]["TooManyRequests"];
136543
+ };
136544
+ };
136332
136545
  uploadAdsAudienceMembers: {
136333
136546
  parameters: {
136334
136547
  query?: never;
@@ -142214,6 +142427,32 @@ export interface operations {
142214
142427
  429: components["responses"]["TooManyRequests"];
142215
142428
  };
142216
142429
  };
142430
+ getAdsSocial: {
142431
+ parameters: {
142432
+ query?: {
142433
+ org_id?: string;
142434
+ };
142435
+ header?: never;
142436
+ path?: never;
142437
+ cookie?: never;
142438
+ };
142439
+ requestBody?: never;
142440
+ responses: {
142441
+ /** @description The social accounts and their latest review. */
142442
+ 200: {
142443
+ headers: {
142444
+ [name: string]: unknown;
142445
+ };
142446
+ content: {
142447
+ "application/json": components["schemas"]["AdsSocial"];
142448
+ };
142449
+ };
142450
+ 401: components["responses"]["Unauthorized"];
142451
+ 403: components["responses"]["Forbidden"];
142452
+ 404: components["responses"]["NotFound"];
142453
+ 429: components["responses"]["TooManyRequests"];
142454
+ };
142455
+ };
142217
142456
  listAdsTrackingEvents: {
142218
142457
  parameters: {
142219
142458
  query?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zinn-digital/sdk",
3
- "version": "0.1.1391",
3
+ "version": "0.1.1394",
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>",