@zinn-digital/sdk 0.1.1378 → 0.1.1381

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.
@@ -19752,6 +19752,114 @@ export interface paths {
19752
19752
  patch?: never;
19753
19753
  trace?: never;
19754
19754
  };
19755
+ "/v1/ads/report/pdf": {
19756
+ parameters: {
19757
+ query?: never;
19758
+ header?: never;
19759
+ path?: never;
19760
+ cookie?: never;
19761
+ };
19762
+ /**
19763
+ * One client's white-label advertising report as a PDF (za-200).
19764
+ * @description Gated on `ads.view`. The same document a scheduled report e-mails: the client organisation's figures (and its sub-organisations') over the last `days` days, under the brand that organisation renders under (the agency's white label), in `locale` (any of the 58 platform languages; Arabic and Hebrew right to left). Stored rows only. Throttled per caller (`ads_report_render`, 300 per hour) on top of the account limits.
19765
+ */
19766
+ get: operations["getAdsReportPdf"];
19767
+ put?: never;
19768
+ post?: never;
19769
+ delete?: never;
19770
+ options?: never;
19771
+ head?: never;
19772
+ patch?: never;
19773
+ trace?: never;
19774
+ };
19775
+ "/v1/ads/report/rows": {
19776
+ parameters: {
19777
+ query?: never;
19778
+ header?: never;
19779
+ path?: never;
19780
+ cookie?: never;
19781
+ };
19782
+ /**
19783
+ * Daily campaign rows for Looker Studio (za-200).
19784
+ * @description Gated on `ads.view`. One row per day, ad account and campaign over `start`..`end` (inclusive, at most 400 days) for the organisations the caller may view; `org_id` narrows to that organisation and its clients. Built for the Zinn® Ads Looker Studio community connector, which authenticates with an API key minted on ONE client organisation with only the `ads.view` scope, so the key reads that client and nothing else. Spend and value are integer micros of the account currency (`currency` on every row); conversions are thousandths. Paged: follow `next_offset` until it is `null`. Stored rows only - never a network call in the request.
19785
+ */
19786
+ get: operations["listAdsReportRows"];
19787
+ put?: never;
19788
+ post?: never;
19789
+ delete?: never;
19790
+ options?: never;
19791
+ head?: never;
19792
+ patch?: never;
19793
+ trace?: never;
19794
+ };
19795
+ "/v1/ads/report/schedules": {
19796
+ parameters: {
19797
+ query?: never;
19798
+ header?: never;
19799
+ path?: never;
19800
+ cookie?: never;
19801
+ };
19802
+ /**
19803
+ * The scheduled white-label PDF reports (za-200).
19804
+ * @description Gated on `ads.view`. Every schedule in the organisations the caller may view; `org_id` narrows to that organisation and its clients.
19805
+ */
19806
+ get: operations["listAdsReportSchedules"];
19807
+ put?: never;
19808
+ /**
19809
+ * Create or replace a client's weekly or monthly PDF report (za-200).
19810
+ * @description Gated on `ads.manage`; audit action `ads.report_schedule.save`. One schedule per client organisation and cadence: posting the same cadence again replaces it (200), a new one answers 201. Weekly reports are sent on Monday at 06:00 UTC, monthly ones on the 1st at 06:00 UTC, by a Temporal workflow. A bad field answers `422 badLimit` naming it.
19811
+ */
19812
+ post: operations["saveAdsReportSchedule"];
19813
+ delete?: never;
19814
+ options?: never;
19815
+ head?: never;
19816
+ patch?: never;
19817
+ trace?: never;
19818
+ };
19819
+ "/v1/ads/report/schedules/{schedule_id}": {
19820
+ parameters: {
19821
+ query?: never;
19822
+ header?: never;
19823
+ path?: never;
19824
+ cookie?: never;
19825
+ };
19826
+ get?: never;
19827
+ put?: never;
19828
+ post?: never;
19829
+ /**
19830
+ * Stop and remove a scheduled report (za-200).
19831
+ * @description Gated on `ads.manage`; audit action `ads.report_schedule.delete`.
19832
+ */
19833
+ delete: operations["deleteAdsReportSchedule"];
19834
+ options?: never;
19835
+ head?: never;
19836
+ /**
19837
+ * Change a scheduled report's recipients, language, window or on/off (za-200).
19838
+ * @description Gated on `ads.manage`; audit action `ads.report_schedule.save`.
19839
+ */
19840
+ patch: operations["updateAdsReportSchedule"];
19841
+ trace?: never;
19842
+ };
19843
+ "/v1/ads/report/schedules/{schedule_id}/send": {
19844
+ parameters: {
19845
+ query?: never;
19846
+ header?: never;
19847
+ path?: never;
19848
+ cookie?: never;
19849
+ };
19850
+ get?: never;
19851
+ put?: never;
19852
+ /**
19853
+ * E-mail this period's report now, without moving the schedule (za-200).
19854
+ * @description Gated on `ads.manage`; audit action `ads.report_schedule.send`. Refused with `422 notInGoodStanding` when the paying organisation is not in good standing. Throttled per caller (`ads_report_send`, 300 per hour) on top of the account limits.
19855
+ */
19856
+ post: operations["sendAdsReportScheduleNow"];
19857
+ delete?: never;
19858
+ options?: never;
19859
+ head?: never;
19860
+ patch?: never;
19861
+ trace?: never;
19862
+ };
19755
19863
  "/v1/ads/shield": {
19756
19864
  parameters: {
19757
19865
  query?: never;
@@ -40261,6 +40369,26 @@ export interface paths {
40261
40369
  patch?: never;
40262
40370
  trace?: never;
40263
40371
  };
40372
+ "/v1/public/aged-domains": {
40373
+ parameters: {
40374
+ query?: never;
40375
+ header?: never;
40376
+ path?: never;
40377
+ cookie?: never;
40378
+ };
40379
+ /**
40380
+ * The aged domains on sale, filtered, sorted and paged, every row masked (public).
40381
+ * @description MKTDOMAINS (owner 2026-11-02) — what zinndigital.com/marketplace/domains renders: the same stock, filters and sort as `listAgedDomains`, for a visitor who is not signed in. ⛔ No domain is NAMED — each row carries `masked_domain` and the `id` the app's detail page (`getAgedDomain`, signed in) opens; that page runs the live check and the checkout (docs/1107 §3, §5). `q` matches the description only and `sort=domain` falls back to `-dr`, so the name cannot be recovered a letter at a time. Filters: `q`, `tld`, `language`, `category`, `min_`/`max_` for `dr`, `da`, `tf`, `cf`, `rd`, `uniques`, `added_year` and `price` (USD), flags `indexed`, `wiki`, `gnews` (`1`); `sort` as `listAgedDomains` except `domain`; `per_page` 24, 48 or 96. Prices are the supplier list price with no markup (owner D55), integer USD minor units. Cached 5 minutes per query, facets 15 minutes; no authentication.
40382
+ */
40383
+ get: operations["listPublicAgedDomains"];
40384
+ put?: never;
40385
+ post?: never;
40386
+ delete?: never;
40387
+ options?: never;
40388
+ head?: never;
40389
+ patch?: never;
40390
+ trace?: never;
40391
+ };
40264
40392
  "/v1/public/aged-domains/summary": {
40265
40393
  parameters: {
40266
40394
  query?: never;
@@ -64174,6 +64302,77 @@ export interface components {
64174
64302
  /** Format: int64 */
64175
64303
  value_micros: number;
64176
64304
  };
64305
+ AdsReportRows: {
64306
+ /** Format: date */
64307
+ end: string;
64308
+ fields: {
64309
+ name: string;
64310
+ /** @description The Looker Studio semantic type. */
64311
+ type: string;
64312
+ }[];
64313
+ next_offset: number | null;
64314
+ rows: {
64315
+ account: string;
64316
+ campaign: string;
64317
+ campaign_id: string;
64318
+ clicks: number;
64319
+ client: string;
64320
+ /** Format: uuid */
64321
+ client_org_id: string;
64322
+ /** Format: uuid */
64323
+ connection_id: string;
64324
+ conversions_milli: number;
64325
+ cost_micros: number;
64326
+ currency: string;
64327
+ /** Format: date */
64328
+ day: string;
64329
+ impressions: number;
64330
+ platform: string;
64331
+ value_micros: number;
64332
+ }[];
64333
+ /** Format: date */
64334
+ start: string;
64335
+ };
64336
+ AdsReportSchedule: {
64337
+ /** @enum {string} */
64338
+ cadence: "weekly" | "monthly";
64339
+ enabled: boolean;
64340
+ /** Format: uuid */
64341
+ id: string;
64342
+ /** @description `notInGoodStanding`, `mailRefused`, `renderFailed` or empty. */
64343
+ last_error: string;
64344
+ /** Format: date-time */
64345
+ last_sent_at: string | null;
64346
+ locale: string;
64347
+ /** Format: date-time */
64348
+ next_run_at: string | null;
64349
+ /** Format: uuid */
64350
+ org_id: string;
64351
+ recipients: string[];
64352
+ window_days: number;
64353
+ };
64354
+ AdsReportScheduleInput: {
64355
+ /** @enum {string} */
64356
+ cadence: "weekly" | "monthly";
64357
+ /** @default true */
64358
+ enabled: boolean;
64359
+ /**
64360
+ * @description One of the 58 platform languages.
64361
+ * @default en
64362
+ */
64363
+ locale: string;
64364
+ /**
64365
+ * Format: uuid
64366
+ * @description The client organisation the report is about.
64367
+ */
64368
+ org_id?: string;
64369
+ recipients: string[];
64370
+ /**
64371
+ * @description Default 7 (weekly) or 30 (monthly).
64372
+ * @enum {integer}
64373
+ */
64374
+ window_days?: 7 | 30 | 90;
64375
+ };
64177
64376
  /** @description A scheduled review (AUTOREVIEW1). `figures` are the measurements the verdict rests on: the judged window (`after`) and the same length before it (`before`) with impressions, clicks, cost in the account's integer micros and conversions in thousandths (plus our own first-party `outcomes` on the house account), per campaign; a funnel's `idle` campaigns; a Quality Score review's `now` and `before` (`qs_x10`, `lp_below`, `keywords`); `stale` when the stored figures could not be read. */
64178
64377
  AdsReview: {
64179
64378
  campaign_ids: string[];
@@ -65582,6 +65781,72 @@ export interface components {
65582
65781
  per_page: number;
65583
65782
  total: number;
65584
65783
  };
65784
+ AgedDomainPublicPage: {
65785
+ applied: {
65786
+ [key: string]: unknown;
65787
+ };
65788
+ /** @enum {string} */
65789
+ currency: "USD";
65790
+ data: {
65791
+ added_year?: number | null;
65792
+ categories: string[];
65793
+ cf?: number | null;
65794
+ currency: string;
65795
+ da?: number | null;
65796
+ dr?: number | null;
65797
+ /** @description Sold by our team personally rather than self-serve. */
65798
+ enquire_only: boolean;
65799
+ has_gnews: boolean;
65800
+ has_wiki: boolean;
65801
+ /**
65802
+ * Format: uuid
65803
+ * @description Opens the signed-in detail page (`getAgedDomain`).
65804
+ */
65805
+ id: string;
65806
+ indexed: boolean;
65807
+ language: string;
65808
+ /** @example e••••••••••••••t.com */
65809
+ masked_domain: string;
65810
+ /** @description USD cents; supplier list price, no markup (D55). */
65811
+ price_minor: number;
65812
+ rd?: number | null;
65813
+ tf?: number | null;
65814
+ tld: string;
65815
+ }[];
65816
+ facets: {
65817
+ /** @description Domains at least `years` old (a `max_added_year` filter); empty when no row carries a year. */
65818
+ age_mins: {
65819
+ count: number;
65820
+ max_added_year: number;
65821
+ years: number;
65822
+ }[];
65823
+ /** @description The sixty most stocked categories, most first; `category_count` says how many exist. */
65824
+ categories: components["schemas"]["AgedDomainFacetCount"][];
65825
+ category_count: number;
65826
+ dr_bands: {
65827
+ count: number;
65828
+ high: number | null;
65829
+ low: number;
65830
+ }[];
65831
+ languages: components["schemas"]["AgedDomainFacetCount"][];
65832
+ rd_mins: {
65833
+ count: number;
65834
+ min: number;
65835
+ }[];
65836
+ tf_mins: {
65837
+ count: number;
65838
+ min: number;
65839
+ }[];
65840
+ tld_count: number;
65841
+ /** @description The forty most stocked TLDs, most first. */
65842
+ tlds: components["schemas"]["AgedDomainFacetCount"][];
65843
+ /** @description Aged domains on sale now (unfiltered). */
65844
+ total: number;
65845
+ };
65846
+ page: number;
65847
+ per_page: number;
65848
+ total: number;
65849
+ };
65585
65850
  AgedDomainPublicSummary: {
65586
65851
  /**
65587
65852
  * Format: date-time
@@ -141206,6 +141471,233 @@ export interface operations {
141206
141471
  429: components["responses"]["TooManyRequests"];
141207
141472
  };
141208
141473
  };
141474
+ getAdsReportPdf: {
141475
+ parameters: {
141476
+ query?: {
141477
+ days?: 7 | 30 | 90;
141478
+ locale?: string;
141479
+ org_id?: string;
141480
+ };
141481
+ header?: never;
141482
+ path?: never;
141483
+ cookie?: never;
141484
+ };
141485
+ requestBody?: never;
141486
+ responses: {
141487
+ /** @description The PDF. */
141488
+ 200: {
141489
+ headers: {
141490
+ [name: string]: unknown;
141491
+ };
141492
+ content: {
141493
+ "application/pdf": string;
141494
+ };
141495
+ };
141496
+ 401: components["responses"]["Unauthorized"];
141497
+ 403: components["responses"]["Forbidden"];
141498
+ 404: components["responses"]["NotFound"];
141499
+ 422: components["responses"]["UnprocessableEntity"];
141500
+ 429: components["responses"]["TooManyRequests"];
141501
+ };
141502
+ };
141503
+ listAdsReportRows: {
141504
+ parameters: {
141505
+ query: {
141506
+ end: string;
141507
+ offset?: number;
141508
+ org_id?: string;
141509
+ start: string;
141510
+ };
141511
+ header?: never;
141512
+ path?: never;
141513
+ cookie?: never;
141514
+ };
141515
+ requestBody?: never;
141516
+ responses: {
141517
+ /** @description One page of rows. */
141518
+ 200: {
141519
+ headers: {
141520
+ [name: string]: unknown;
141521
+ };
141522
+ content: {
141523
+ "application/json": {
141524
+ data: components["schemas"]["AdsReportRows"];
141525
+ };
141526
+ };
141527
+ };
141528
+ 401: components["responses"]["Unauthorized"];
141529
+ 403: components["responses"]["Forbidden"];
141530
+ 404: components["responses"]["NotFound"];
141531
+ 422: components["responses"]["UnprocessableEntity"];
141532
+ 429: components["responses"]["TooManyRequests"];
141533
+ };
141534
+ };
141535
+ listAdsReportSchedules: {
141536
+ parameters: {
141537
+ query?: {
141538
+ org_id?: string;
141539
+ };
141540
+ header?: never;
141541
+ path?: never;
141542
+ cookie?: never;
141543
+ };
141544
+ requestBody?: never;
141545
+ responses: {
141546
+ /** @description The schedules. */
141547
+ 200: {
141548
+ headers: {
141549
+ [name: string]: unknown;
141550
+ };
141551
+ content: {
141552
+ "application/json": {
141553
+ data: components["schemas"]["AdsReportSchedule"][];
141554
+ };
141555
+ };
141556
+ };
141557
+ 401: components["responses"]["Unauthorized"];
141558
+ 403: components["responses"]["Forbidden"];
141559
+ 404: components["responses"]["NotFound"];
141560
+ 429: components["responses"]["TooManyRequests"];
141561
+ };
141562
+ };
141563
+ saveAdsReportSchedule: {
141564
+ parameters: {
141565
+ query?: never;
141566
+ header?: never;
141567
+ path?: never;
141568
+ cookie?: never;
141569
+ };
141570
+ requestBody: {
141571
+ content: {
141572
+ "application/json": components["schemas"]["AdsReportScheduleInput"];
141573
+ };
141574
+ };
141575
+ responses: {
141576
+ /** @description The replaced schedule. */
141577
+ 200: {
141578
+ headers: {
141579
+ [name: string]: unknown;
141580
+ };
141581
+ content: {
141582
+ "application/json": {
141583
+ data: components["schemas"]["AdsReportSchedule"];
141584
+ };
141585
+ };
141586
+ };
141587
+ /** @description The new schedule. */
141588
+ 201: {
141589
+ headers: {
141590
+ [name: string]: unknown;
141591
+ };
141592
+ content: {
141593
+ "application/json": {
141594
+ data: components["schemas"]["AdsReportSchedule"];
141595
+ };
141596
+ };
141597
+ };
141598
+ 401: components["responses"]["Unauthorized"];
141599
+ 403: components["responses"]["Forbidden"];
141600
+ 404: components["responses"]["NotFound"];
141601
+ 422: components["responses"]["UnprocessableEntity"];
141602
+ 429: components["responses"]["TooManyRequests"];
141603
+ };
141604
+ };
141605
+ deleteAdsReportSchedule: {
141606
+ parameters: {
141607
+ query?: never;
141608
+ header?: never;
141609
+ path: {
141610
+ schedule_id: string;
141611
+ };
141612
+ cookie?: never;
141613
+ };
141614
+ requestBody?: never;
141615
+ responses: {
141616
+ /** @description Removed. */
141617
+ 204: {
141618
+ headers: {
141619
+ [name: string]: unknown;
141620
+ };
141621
+ content?: never;
141622
+ };
141623
+ 401: components["responses"]["Unauthorized"];
141624
+ 403: components["responses"]["Forbidden"];
141625
+ 404: components["responses"]["NotFound"];
141626
+ 429: components["responses"]["TooManyRequests"];
141627
+ };
141628
+ };
141629
+ updateAdsReportSchedule: {
141630
+ parameters: {
141631
+ query?: never;
141632
+ header?: never;
141633
+ path: {
141634
+ schedule_id: string;
141635
+ };
141636
+ cookie?: never;
141637
+ };
141638
+ requestBody: {
141639
+ content: {
141640
+ "application/json": {
141641
+ enabled?: boolean;
141642
+ locale?: string;
141643
+ recipients?: string[];
141644
+ /** @enum {integer} */
141645
+ window_days?: 7 | 30 | 90;
141646
+ };
141647
+ };
141648
+ };
141649
+ responses: {
141650
+ /** @description The schedule. */
141651
+ 200: {
141652
+ headers: {
141653
+ [name: string]: unknown;
141654
+ };
141655
+ content: {
141656
+ "application/json": {
141657
+ data: components["schemas"]["AdsReportSchedule"];
141658
+ };
141659
+ };
141660
+ };
141661
+ 401: components["responses"]["Unauthorized"];
141662
+ 403: components["responses"]["Forbidden"];
141663
+ 404: components["responses"]["NotFound"];
141664
+ 422: components["responses"]["UnprocessableEntity"];
141665
+ 429: components["responses"]["TooManyRequests"];
141666
+ };
141667
+ };
141668
+ sendAdsReportScheduleNow: {
141669
+ parameters: {
141670
+ query?: never;
141671
+ header?: never;
141672
+ path: {
141673
+ schedule_id: string;
141674
+ };
141675
+ cookie?: never;
141676
+ };
141677
+ requestBody?: never;
141678
+ responses: {
141679
+ /** @description How many recipients the report went to. */
141680
+ 200: {
141681
+ headers: {
141682
+ [name: string]: unknown;
141683
+ };
141684
+ content: {
141685
+ "application/json": {
141686
+ data: {
141687
+ recipients: number;
141688
+ /** Format: uuid */
141689
+ schedule_id: string;
141690
+ };
141691
+ };
141692
+ };
141693
+ };
141694
+ 401: components["responses"]["Unauthorized"];
141695
+ 403: components["responses"]["Forbidden"];
141696
+ 404: components["responses"]["NotFound"];
141697
+ 422: components["responses"]["UnprocessableEntity"];
141698
+ 429: components["responses"]["TooManyRequests"];
141699
+ };
141700
+ };
141209
141701
  getAdsShield: {
141210
141702
  parameters: {
141211
141703
  query?: {
@@ -174955,6 +175447,44 @@ export interface operations {
174955
175447
  429: components["responses"]["TooManyRequests"];
174956
175448
  };
174957
175449
  };
175450
+ listPublicAgedDomains: {
175451
+ parameters: {
175452
+ query?: {
175453
+ category?: string;
175454
+ indexed?: "1";
175455
+ language?: string;
175456
+ max_added_year?: number;
175457
+ max_dr?: number;
175458
+ max_price?: string;
175459
+ min_dr?: number;
175460
+ /** @description USD, e.g. 49.99 */
175461
+ min_price?: string;
175462
+ min_rd?: number;
175463
+ min_tf?: number;
175464
+ page?: number;
175465
+ per_page?: 24 | 48 | 96;
175466
+ q?: string;
175467
+ sort?: string;
175468
+ tld?: string;
175469
+ wiki?: "1";
175470
+ };
175471
+ header?: never;
175472
+ path?: never;
175473
+ cookie?: never;
175474
+ };
175475
+ requestBody?: never;
175476
+ responses: {
175477
+ /** @description One masked page of matching domains, the total, and the public facet counts. */
175478
+ 200: {
175479
+ headers: {
175480
+ [name: string]: unknown;
175481
+ };
175482
+ content: {
175483
+ "application/json": components["schemas"]["AgedDomainPublicPage"];
175484
+ };
175485
+ };
175486
+ };
175487
+ };
174958
175488
  getPublicAgedDomainSummary: {
174959
175489
  parameters: {
174960
175490
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zinn-digital/sdk",
3
- "version": "0.1.1378",
3
+ "version": "0.1.1381",
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>",