@zinn-digital/sdk 0.1.1424 → 0.1.1427

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.
@@ -20602,6 +20602,59 @@ export interface paths {
20602
20602
  patch?: never;
20603
20603
  trace?: never;
20604
20604
  };
20605
+ "/v1/ads/tracking-hub": {
20606
+ parameters: {
20607
+ query?: never;
20608
+ header?: never;
20609
+ path?: never;
20610
+ cookie?: never;
20611
+ };
20612
+ /**
20613
+ * The tracking hub — every network tag, conversion id and server-side key status.
20614
+ * @description Gated on `ads.view` (docs/1006 §104, za-126). One hub per organisation: the browser tag id of each network (Google Ads, GA4, Microsoft UET, Meta pixel, TikTok, LinkedIn Insight, X, Pinterest, Amazon), the conversion id per network and outcome kind, and WHICH server-side keys are set (never the key: it is kept only in Vault). `server_routes` says per network how server-side conversions travel: through a connected ad account, through a key in the hub, or not at all. Every site tag (za-128) serves the hub's ids where it leaves its own blank. An organisation with no hub yet answers `version: 0`.
20615
+ */
20616
+ get: operations["getAdsTrackingHub"];
20617
+ /**
20618
+ * Change the hub's tag ids and conversion ids.
20619
+ * @description Gated on `ads.manage`; audit-logged (`ads.tracking_hub_updated`). `tags` and `conversions` each REPLACE the stored map when present (a blank id removes it). Each tag id is checked against its network's format; a wrong one is a `422` (`refusal.adsconnect.trackingHub.*`) naming the field, e.g. `tags.ga4`. The version goes up by one and the cached script of every site tag of the organisation is rewritten.
20620
+ */
20621
+ put: operations["updateAdsTrackingHub"];
20622
+ post?: never;
20623
+ delete?: never;
20624
+ options?: never;
20625
+ head?: never;
20626
+ patch?: never;
20627
+ trace?: never;
20628
+ };
20629
+ "/v1/ads/tracking-hub/keys/{kind}": {
20630
+ parameters: {
20631
+ query?: {
20632
+ /** @description Required when you belong to more than one organisation. */
20633
+ org_id?: string;
20634
+ };
20635
+ header?: never;
20636
+ path: {
20637
+ kind: "meta_capi" | "tiktok_events" | "ga4_mp" | "linkedin_capi" | "pinterest_capi";
20638
+ };
20639
+ cookie?: never;
20640
+ };
20641
+ get?: never;
20642
+ /**
20643
+ * Store one server-side key (write-only; kept in Vault).
20644
+ * @description Gated on `ads.manage`; audit-logged (`ads.tracking_hub_key_set`, the kind only). The key is written to Vault and never returned, logged or stored in the database; the hub keeps the time it was set and its last four characters. `503` when Vault could not be written (nothing is saved; retry).
20645
+ */
20646
+ put: operations["setAdsTrackingHubKey"];
20647
+ post?: never;
20648
+ /**
20649
+ * Remove one server-side key from Vault and from the hub.
20650
+ * @description Gated on `ads.manage`; audit-logged (`ads.tracking_hub_key_removed`). The record is removed only after Vault confirmed the delete. Removing a key that is not set is a `204`.
20651
+ */
20652
+ delete: operations["deleteAdsTrackingHubKey"];
20653
+ options?: never;
20654
+ head?: never;
20655
+ patch?: never;
20656
+ trace?: never;
20657
+ };
20605
20658
  "/v1/ads/tracking/events": {
20606
20659
  parameters: {
20607
20660
  query?: never;
@@ -66662,6 +66715,16 @@ export interface components {
66662
66715
  org_id: string;
66663
66716
  /** @description Public (it is in the page source); never an API credential. */
66664
66717
  public_key: string;
66718
+ /** @description za-126: the ids this site actually serves — its own, else the organisation's tracking hub's. */
66719
+ served?: {
66720
+ ga4_id?: string;
66721
+ google_ads_id?: string;
66722
+ google_labels?: {
66723
+ [key: string]: string;
66724
+ };
66725
+ meta_pixel_id?: string;
66726
+ microsoft_uet_id?: string;
66727
+ };
66665
66728
  site_host: string;
66666
66729
  /** Format: date-time */
66667
66730
  updated_at: string | null;
@@ -66969,6 +67032,59 @@ export interface components {
66969
67032
  rejected: number;
66970
67033
  waiting: number;
66971
67034
  };
67035
+ /** @description One organisation's tracking hub (docs/1006 §104, za-126). */
67036
+ AdsTrackingHub: {
67037
+ /** @description Network -> outcome kind -> conversion id (a Google Ads label, a Meta custom conversion, a TikTok event …). */
67038
+ conversions: {
67039
+ [key: string]: {
67040
+ [key: string]: string;
67041
+ };
67042
+ };
67043
+ kinds: string[];
67044
+ networks: string[];
67045
+ /** Format: uuid */
67046
+ org_id: string;
67047
+ server_keys: {
67048
+ /** @description The key's last four characters (blank when not set). */
67049
+ hint: string;
67050
+ /** @enum {string} */
67051
+ kind: "meta_capi" | "tiktok_events" | "ga4_mp" | "linkedin_capi" | "pinterest_capi";
67052
+ network: string;
67053
+ set: boolean;
67054
+ /** Format: date-time */
67055
+ set_at: string | null;
67056
+ }[];
67057
+ /** @description Network -> how its server-side conversions travel. */
67058
+ server_routes: {
67059
+ [key: string]: {
67060
+ connected_provider: string | null;
67061
+ key_kind: string | null;
67062
+ /** @enum {string} */
67063
+ route: "connected" | "key" | "none";
67064
+ };
67065
+ };
67066
+ /** @description Network -> its browser tag id (google_ads, ga4, microsoft_uet, meta_pixel, tiktok_pixel, linkedin_insight, x_pixel, pinterest_tag, amazon_tag). */
67067
+ tags: {
67068
+ [key: string]: string;
67069
+ };
67070
+ /** Format: date-time */
67071
+ updated_at: string | null;
67072
+ /** @description 0 when no hub has been saved yet. */
67073
+ version: number;
67074
+ };
67075
+ AdsTrackingHubUpdate: {
67076
+ /** @description Network -> {outcome kind: conversion id}. A LinkedIn conversion id is numeric and an X event id is tw-PIXEL-EVENT (for example tw-o1abc-o1xyz); any other shape for those two is refused (badConversion), since the page could never fire it. */
67077
+ conversions?: {
67078
+ [key: string]: {
67079
+ [key: string]: string;
67080
+ };
67081
+ };
67082
+ /** Format: uuid */
67083
+ org_id?: string;
67084
+ tags?: {
67085
+ [key: string]: string;
67086
+ };
67087
+ };
66972
67088
  /** @description One ad account's tracking-truth settings (docs/1006 §21). */
66973
67089
  AdsTrackingSettings: {
66974
67090
  /** @description Network actions that stand for these outcomes; empty = every PRIMARY one. */
@@ -99250,6 +99366,10 @@ export interface components {
99250
99366
  runtime?: components["schemas"]["Runtime"];
99251
99367
  /** @description One of **your own** captured sites (`GET /v1/site-blueprints`) to build this one from. The new site is provisioned on that blueprint's stack and its archive is then restored onto it, so it comes up with the same content, plugins, theme and settings as the site it was captured from — and its stored web addresses are rewritten to this site's domain. ⛔ **Not the same field as `blueprint_id`**: that one names a stack recipe Zinn® publishes, this one names a template you made from a site you already built. Sending both is a `422`. When given, `source`, `stack_type` and `runtime` are all derived and must not be sent. A blueprint whose capture has not finished, or whose backup is no longer available, is a `422` at create time rather than a site that comes up empty an hour later. */
99252
99368
  site_blueprint_id?: components["schemas"]["Uuid"] | null;
99369
+ /** @description The WordPress **Tagline** (`blogdescription`). Read for a WordPress stack only. Omitted or blank leaves WordPress's own tagline. */
99370
+ site_tagline?: string;
99371
+ /** @description The WordPress **Site Title** (V1 parity). Read for a WordPress stack only. Omitted or blank means the primary domain, as before. */
99372
+ site_title?: string;
99253
99373
  source?: components["schemas"]["SiteSource"];
99254
99374
  stack_type?: components["schemas"]["StackType"];
99255
99375
  /** @description The subscription entitling this site. Must belong to the org that will own the site; anything else is a `422` (never a `404`, so it cannot be used to probe which subscription ids exist elsewhere). */
@@ -110527,8 +110647,13 @@ export interface components {
110527
110647
  };
110528
110648
  ZinnCampaignsChannelSettings: {
110529
110649
  bounce_pause_bps: number;
110650
+ /** @description The margin row staff configured (basis points over vendor cost). */
110530
110651
  channel_margin_bps: number;
110652
+ /** @description The credit floor margin (basis points) no channel price goes under. */
110653
+ readonly channel_margin_floor_bps: number;
110531
110654
  complaint_pause_bps: number;
110655
+ /** @description The margin a message is CHARGED at: channel_margin_bps raised to the 3x-net credit floor (CREDIT3X). */
110656
+ readonly effective_channel_margin_bps: number;
110532
110657
  line_enabled: boolean;
110533
110658
  pause_min_sample: number;
110534
110659
  pilot_org_ids: string[];
@@ -145176,6 +145301,125 @@ export interface operations {
145176
145301
  429: components["responses"]["TooManyRequests"];
145177
145302
  };
145178
145303
  };
145304
+ getAdsTrackingHub: {
145305
+ parameters: {
145306
+ query?: {
145307
+ /** @description Required when you belong to more than one organisation. */
145308
+ org_id?: string;
145309
+ };
145310
+ header?: never;
145311
+ path?: never;
145312
+ cookie?: never;
145313
+ };
145314
+ requestBody?: never;
145315
+ responses: {
145316
+ /** @description The organisation's tracking hub. */
145317
+ 200: {
145318
+ headers: {
145319
+ [name: string]: unknown;
145320
+ };
145321
+ content: {
145322
+ "application/json": components["schemas"]["AdsTrackingHub"];
145323
+ };
145324
+ };
145325
+ 401: components["responses"]["Unauthorized"];
145326
+ 403: components["responses"]["Forbidden"];
145327
+ 404: components["responses"]["NotFound"];
145328
+ 422: components["responses"]["UnprocessableEntity"];
145329
+ };
145330
+ };
145331
+ updateAdsTrackingHub: {
145332
+ parameters: {
145333
+ query?: never;
145334
+ header?: never;
145335
+ path?: never;
145336
+ cookie?: never;
145337
+ };
145338
+ requestBody: {
145339
+ content: {
145340
+ "application/json": components["schemas"]["AdsTrackingHubUpdate"];
145341
+ };
145342
+ };
145343
+ responses: {
145344
+ /** @description The hub after the change. */
145345
+ 200: {
145346
+ headers: {
145347
+ [name: string]: unknown;
145348
+ };
145349
+ content: {
145350
+ "application/json": components["schemas"]["AdsTrackingHub"];
145351
+ };
145352
+ };
145353
+ 401: components["responses"]["Unauthorized"];
145354
+ 403: components["responses"]["Forbidden"];
145355
+ 404: components["responses"]["NotFound"];
145356
+ 422: components["responses"]["UnprocessableEntity"];
145357
+ };
145358
+ };
145359
+ setAdsTrackingHubKey: {
145360
+ parameters: {
145361
+ query?: {
145362
+ /** @description Required when you belong to more than one organisation. */
145363
+ org_id?: string;
145364
+ };
145365
+ header?: never;
145366
+ path: {
145367
+ kind: "meta_capi" | "tiktok_events" | "ga4_mp" | "linkedin_capi" | "pinterest_capi";
145368
+ };
145369
+ cookie?: never;
145370
+ };
145371
+ requestBody: {
145372
+ content: {
145373
+ "application/json": {
145374
+ key: string;
145375
+ };
145376
+ };
145377
+ };
145378
+ responses: {
145379
+ /** @description The hub after the change. */
145380
+ 200: {
145381
+ headers: {
145382
+ [name: string]: unknown;
145383
+ };
145384
+ content: {
145385
+ "application/json": components["schemas"]["AdsTrackingHub"];
145386
+ };
145387
+ };
145388
+ 401: components["responses"]["Unauthorized"];
145389
+ 403: components["responses"]["Forbidden"];
145390
+ 404: components["responses"]["NotFound"];
145391
+ 422: components["responses"]["UnprocessableEntity"];
145392
+ 503: components["responses"]["ServiceUnavailable"];
145393
+ };
145394
+ };
145395
+ deleteAdsTrackingHubKey: {
145396
+ parameters: {
145397
+ query?: {
145398
+ /** @description Required when you belong to more than one organisation. */
145399
+ org_id?: string;
145400
+ };
145401
+ header?: never;
145402
+ path: {
145403
+ kind: "meta_capi" | "tiktok_events" | "ga4_mp" | "linkedin_capi" | "pinterest_capi";
145404
+ };
145405
+ cookie?: never;
145406
+ };
145407
+ requestBody?: never;
145408
+ responses: {
145409
+ /** @description Removed (or was not set). */
145410
+ 204: {
145411
+ headers: {
145412
+ [name: string]: unknown;
145413
+ };
145414
+ content?: never;
145415
+ };
145416
+ 401: components["responses"]["Unauthorized"];
145417
+ 403: components["responses"]["Forbidden"];
145418
+ 404: components["responses"]["NotFound"];
145419
+ 422: components["responses"]["UnprocessableEntity"];
145420
+ 503: components["responses"]["ServiceUnavailable"];
145421
+ };
145422
+ };
145179
145423
  listAdsTrackingEvents: {
145180
145424
  parameters: {
145181
145425
  query?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zinn-digital/sdk",
3
- "version": "0.1.1424",
3
+ "version": "0.1.1427",
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>",