@zinn-digital/sdk 0.1.1395 → 0.1.1398

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.
@@ -18740,6 +18740,78 @@ export interface paths {
18740
18740
  patch?: never;
18741
18741
  trace?: never;
18742
18742
  };
18743
+ "/v1/ads/connections/{connection_id}/prospecting": {
18744
+ parameters: {
18745
+ query?: never;
18746
+ header?: never;
18747
+ path: {
18748
+ connection_id: string;
18749
+ };
18750
+ cookie?: never;
18751
+ };
18752
+ /**
18753
+ * The Prospecting template's choices - business types, starter negatives, budget (za-158).
18754
+ * @description Gated on `ads.view`. On the caller's own connection. The intents (category, problem, paid-competitor alternative, brand), the match types every keyword starts on (EXACT and PHRASE), each business type with its starter negatives and whether it is paid by default, the Recommended daily budget (five whole units of the account currency, also the floor) and how many prospecting templates wait for approval (docs/1006 §93). Read from stored rows, never a network call in the request.
18755
+ */
18756
+ get: operations["getAdsProspecting"];
18757
+ put?: never;
18758
+ /**
18759
+ * Start building a Prospecting campaign preview from intent groups (za-158).
18760
+ * @description Gated on `ads.manage`. Validates the template and its gates from stored rows, then STARTS the preview workflow and answers 202 with its `preview_id`; the account read (collision replay), the ONE batched translation and the ONE batched AI-writer request run in that workflow, never in the request. Poll `getAdsProspectingPreview`. The same input the same day is the same preview (a running or built one is not started again). The preview is one new Search campaign: a `category` group, a `problem` group, one `<Rival> alternative` group per PAID competitor (a free host is skipped, `notPaidCompetitor`; all are skipped without the competitor switch and plan, `competitorsOff`) and a `brand` group, every keyword on EXACT and PHRASE. The business type's starter negatives, plus the free-seeker class when `paid` is true; every negative passes the collision replay over the account's keywords and searches and the template's own keywords, and one that would block any of them is `dropped` with its reasons. Each group's ad names its topic and must reach GOOD (`waiting`, `adBelowGood` otherwise); the whole request passes the ad-quality gate (`status: refused`, `refused`). Refusals: `prospectingInvalid` (with the field), `killed`, `notInGoodStanding`, `needsReconnect`, `prospectingUnavailable`.
18761
+ */
18762
+ post: operations["buildAdsProspecting"];
18763
+ delete?: never;
18764
+ options?: never;
18765
+ head?: never;
18766
+ patch?: never;
18767
+ trace?: never;
18768
+ };
18769
+ "/v1/ads/connections/{connection_id}/prospecting/{preview_id}": {
18770
+ parameters: {
18771
+ query?: never;
18772
+ header?: never;
18773
+ path: {
18774
+ connection_id: string;
18775
+ preview_id: string;
18776
+ };
18777
+ cookie?: never;
18778
+ };
18779
+ /**
18780
+ * One Prospecting preview - building, ready with the plan, failed or expired (za-158).
18781
+ * @description Gated on `ads.view`. On the caller's own connection. `building` while the workflow runs, `ready` with the plan, `failed` with the refusal (`error.code`, as for `buildAdsProspecting`), `expired` once the run is no longer kept or finished more than a day ago (its account read is stale: build it again).
18782
+ */
18783
+ get: operations["getAdsProspectingPreview"];
18784
+ put?: never;
18785
+ post?: never;
18786
+ delete?: never;
18787
+ options?: never;
18788
+ head?: never;
18789
+ patch?: never;
18790
+ trace?: never;
18791
+ };
18792
+ "/v1/ads/connections/{connection_id}/prospecting/{preview_id}/propose": {
18793
+ parameters: {
18794
+ query?: never;
18795
+ header?: never;
18796
+ path: {
18797
+ connection_id: string;
18798
+ preview_id: string;
18799
+ };
18800
+ cookie?: never;
18801
+ };
18802
+ get?: never;
18803
+ put?: never;
18804
+ /**
18805
+ * Queue a ready Prospecting preview as ONE approve-first change (za-158).
18806
+ * @description Gated on `ads.manage`. Fast: nothing is rebuilt. The gates (kill switch, good standing, campaign changes on) and the ad-quality gate run again on the preview's stored request, then it is queued as ONE pending change (`listAdsChanges`; audit action `ads.prospecting_propose`); proposing the same preview twice is the same pending change, and once that change is approved or applied it is that change again (never a second campaign). Nothing is sent to Google here: the metered gate runs when a person approves it. Refusals: `prospectingInvalid` (field `preview_id`: not ready), `killed`, `notInGoodStanding`, `needsReconnect`, `prospectingUnavailable`.
18807
+ */
18808
+ post: operations["proposeAdsProspecting"];
18809
+ delete?: never;
18810
+ options?: never;
18811
+ head?: never;
18812
+ patch?: never;
18813
+ trace?: never;
18814
+ };
18743
18815
  "/v1/ads/connections/{connection_id}/quality-score": {
18744
18816
  parameters: {
18745
18817
  query?: never;
@@ -64236,6 +64308,100 @@ export interface components {
64236
64308
  /** @description true = the provider reports its own fee (Paddle, Freemius); the estimate is not used. */
64237
64309
  readonly reports_fee?: boolean;
64238
64310
  };
64311
+ AdsProspectingInfoEnvelope: {
64312
+ data: {
64313
+ business_type: string;
64314
+ business_types: {
64315
+ paid_by_default: boolean;
64316
+ starter_negatives: string[];
64317
+ value: string;
64318
+ }[];
64319
+ currency: string;
64320
+ intents: ("category" | "problem" | "alternative" | "brand")[];
64321
+ matches: ("EXACT" | "PHRASE")[];
64322
+ pending: number;
64323
+ recommended_budget_minor: number;
64324
+ };
64325
+ };
64326
+ AdsProspectingPlan: {
64327
+ business_type: string;
64328
+ campaign: {
64329
+ country: string;
64330
+ currency: string;
64331
+ daily_budget_minor: number;
64332
+ final_url: string;
64333
+ language: string;
64334
+ name: string;
64335
+ recommended_budget_minor: number;
64336
+ };
64337
+ change_id: string | null;
64338
+ free_seeker: boolean;
64339
+ groups: {
64340
+ descriptions?: string[];
64341
+ headlines?: string[];
64342
+ /** @enum {string} */
64343
+ intent: "category" | "problem" | "alternative" | "brand";
64344
+ keywords: {
64345
+ /** @enum {string} */
64346
+ match: "EXACT" | "PHRASE";
64347
+ text: string;
64348
+ }[];
64349
+ name: string;
64350
+ reason: string;
64351
+ rival?: string;
64352
+ /** @enum {string} */
64353
+ status: "ready" | "waiting" | "skipped";
64354
+ }[];
64355
+ negatives: {
64356
+ /** @enum {string} */
64357
+ class: "starter" | "free_seeker";
64358
+ /** @enum {string} */
64359
+ match: "EXACT" | "PHRASE";
64360
+ reasons: string[];
64361
+ /** @enum {string} */
64362
+ status: "kept" | "dropped";
64363
+ text: string;
64364
+ }[];
64365
+ paid: boolean;
64366
+ refused: {
64367
+ [key: string]: unknown;
64368
+ } | null;
64369
+ /** @enum {string} */
64370
+ status: "preview" | "proposed" | "refused" | "nothingReady" | "rejectedBefore";
64371
+ };
64372
+ AdsProspectingPreviewEnvelope: {
64373
+ data: {
64374
+ error: {
64375
+ code: string;
64376
+ field: string;
64377
+ } | null;
64378
+ plan: components["schemas"]["AdsProspectingPlan"] | null;
64379
+ preview_id: string;
64380
+ /** @enum {string} */
64381
+ status: "building" | "ready" | "failed" | "expired";
64382
+ };
64383
+ };
64384
+ AdsProspectingRequest: {
64385
+ brand: string;
64386
+ brand_terms?: string[];
64387
+ /** @enum {string} */
64388
+ business_type?: "free_trial" | "freemium" | "lead_gen" | "ecommerce" | "local" | "b2b";
64389
+ category: string[];
64390
+ competitors?: string[];
64391
+ /** @description ISO 3166-1 alpha-2. */
64392
+ country: string;
64393
+ /** @description Minor units of the account currency; null = Recommended (five whole units, also the floor). */
64394
+ daily_budget_minor?: number | null;
64395
+ descriptions?: string[];
64396
+ /** Format: uri */
64397
+ final_url: string;
64398
+ headlines?: string[];
64399
+ /** @default en */
64400
+ language: string;
64401
+ /** @description null = the business type's default (freemium is not paid). */
64402
+ paid?: boolean | null;
64403
+ problems?: string[];
64404
+ };
64239
64405
  AdsQsDiagnosis: {
64240
64406
  ad_group: string;
64241
64407
  /** @description BELOW_AVERAGE, AVERAGE, ABOVE_AVERAGE or empty. */
@@ -139843,6 +140009,119 @@ export interface operations {
139843
140009
  429: components["responses"]["TooManyRequests"];
139844
140010
  };
139845
140011
  };
140012
+ getAdsProspecting: {
140013
+ parameters: {
140014
+ query?: never;
140015
+ header?: never;
140016
+ path: {
140017
+ connection_id: string;
140018
+ };
140019
+ cookie?: never;
140020
+ };
140021
+ requestBody?: never;
140022
+ responses: {
140023
+ /** @description The template's choices. */
140024
+ 200: {
140025
+ headers: {
140026
+ [name: string]: unknown;
140027
+ };
140028
+ content: {
140029
+ "application/json": components["schemas"]["AdsProspectingInfoEnvelope"];
140030
+ };
140031
+ };
140032
+ 401: components["responses"]["Unauthorized"];
140033
+ 403: components["responses"]["Forbidden"];
140034
+ 404: components["responses"]["NotFound"];
140035
+ 429: components["responses"]["TooManyRequests"];
140036
+ };
140037
+ };
140038
+ buildAdsProspecting: {
140039
+ parameters: {
140040
+ query?: never;
140041
+ header?: never;
140042
+ path: {
140043
+ connection_id: string;
140044
+ };
140045
+ cookie?: never;
140046
+ };
140047
+ requestBody: {
140048
+ content: {
140049
+ "application/json": components["schemas"]["AdsProspectingRequest"];
140050
+ };
140051
+ };
140052
+ responses: {
140053
+ /** @description The preview is being built; poll it by `preview_id`. */
140054
+ 202: {
140055
+ headers: {
140056
+ [name: string]: unknown;
140057
+ };
140058
+ content: {
140059
+ "application/json": components["schemas"]["AdsProspectingPreviewEnvelope"];
140060
+ };
140061
+ };
140062
+ 401: components["responses"]["Unauthorized"];
140063
+ 403: components["responses"]["Forbidden"];
140064
+ 404: components["responses"]["NotFound"];
140065
+ 422: components["responses"]["UnprocessableEntity"];
140066
+ 429: components["responses"]["TooManyRequests"];
140067
+ };
140068
+ };
140069
+ getAdsProspectingPreview: {
140070
+ parameters: {
140071
+ query?: never;
140072
+ header?: never;
140073
+ path: {
140074
+ connection_id: string;
140075
+ preview_id: string;
140076
+ };
140077
+ cookie?: never;
140078
+ };
140079
+ requestBody?: never;
140080
+ responses: {
140081
+ /** @description The preview. */
140082
+ 200: {
140083
+ headers: {
140084
+ [name: string]: unknown;
140085
+ };
140086
+ content: {
140087
+ "application/json": components["schemas"]["AdsProspectingPreviewEnvelope"];
140088
+ };
140089
+ };
140090
+ 401: components["responses"]["Unauthorized"];
140091
+ 403: components["responses"]["Forbidden"];
140092
+ 404: components["responses"]["NotFound"];
140093
+ 422: components["responses"]["UnprocessableEntity"];
140094
+ 429: components["responses"]["TooManyRequests"];
140095
+ };
140096
+ };
140097
+ proposeAdsProspecting: {
140098
+ parameters: {
140099
+ query?: never;
140100
+ header?: never;
140101
+ path: {
140102
+ connection_id: string;
140103
+ preview_id: string;
140104
+ };
140105
+ cookie?: never;
140106
+ };
140107
+ requestBody?: never;
140108
+ responses: {
140109
+ /** @description The plan with `status` `proposed` and its `change_id`, or `refused`. */
140110
+ 200: {
140111
+ headers: {
140112
+ [name: string]: unknown;
140113
+ };
140114
+ content: {
140115
+ "application/json": components["schemas"]["AdsProspectingPreviewEnvelope"];
140116
+ };
140117
+ };
140118
+ 401: components["responses"]["Unauthorized"];
140119
+ 403: components["responses"]["Forbidden"];
140120
+ 404: components["responses"]["NotFound"];
140121
+ 422: components["responses"]["UnprocessableEntity"];
140122
+ 429: components["responses"]["TooManyRequests"];
140123
+ };
140124
+ };
139846
140125
  getAdsQualityScore: {
139847
140126
  parameters: {
139848
140127
  query?: never;
@@ -160187,7 +160466,10 @@ export interface operations {
160187
160466
  };
160188
160467
  getDomainPremiumDns: {
160189
160468
  parameters: {
160190
- query?: never;
160469
+ query?: {
160470
+ /** @description The language the app is rendering in (a BCP 47 tag such as `ar` or `pt-PT`). A supported value is the language the offered extra's `name` and `description` are served in; an absent or unsupported one falls back to the caller's stored language preference. Never read from `Accept-Language`. */
160471
+ locale?: string;
160472
+ };
160191
160473
  header?: never;
160192
160474
  path: {
160193
160475
  /** @description The domain's id. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zinn-digital/sdk",
3
- "version": "0.1.1395",
3
+ "version": "0.1.1398",
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>",