@zinn-digital/sdk 0.1.1427 → 0.1.1430
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.
- package/dist/generated/schema.d.ts +181 -2
- package/package.json +1 -1
|
@@ -15989,6 +15989,26 @@ export interface paths {
|
|
|
15989
15989
|
patch?: never;
|
|
15990
15990
|
trace?: never;
|
|
15991
15991
|
};
|
|
15992
|
+
"/v1/ads/analytics/impact": {
|
|
15993
|
+
parameters: {
|
|
15994
|
+
query?: never;
|
|
15995
|
+
header?: never;
|
|
15996
|
+
path?: never;
|
|
15997
|
+
cookie?: never;
|
|
15998
|
+
};
|
|
15999
|
+
/**
|
|
16000
|
+
* How Zinn® Ads helped - money saved, fraud blocked, refunds won, conversions recovered, changes and before vs after (za-281).
|
|
16001
|
+
* @description Over the same filters as the other analytics reads: wasted spend blocked (search terms and keywords the audit found spending with no conversion, then blocked or paused, with the measured cost and clicks before the block), invalid clicks excluded by the click shield (their measured cost), credits the network granted for invalid activity, conversions Zinn® Ads uploaded that the network's own tag had missed, the changes Zinn® Ads made by kind (changes the customer made, in the dashboard or with their own API key, are not counted) with how many can still be undone, the self-check verdicts of the changes scored in the period, and ROAS over the 90 days before the first account was connected and since. `money_saved_micros` is waste blocked plus, per account and currency, the larger of fraud blocked and refunds won (a credit refunds the same invalid clicks the exclusions measured, so that money is counted once), all measured. `hours_saved` is a MODEL (changes times the stated minutes per change), flagged `modelled: true`. Each list is the latest 20 items with the full `count` beside it; a waste item carries the change that blocked it and whether it can still be undone. Network and account filters apply to every section. The campaign filter narrows waste blocked, fraud blocked (account-level exclusions stay), the self-check verdicts and before vs after; refunds won, conversions recovered and changes made are account-wide and ignore it. Country and product/site filters apply to before vs after only. A fraud item's Undo is offered only where the server accepts it: Google has named it, no removal is under way, and it was applied inside the 30-day undo window. Gated on `ads.view` over the organisations the person can view; `org_id` narrows to that organisation and its client organisations. Stored rows only, never a network call. Money is integer micros of the reporting `currency` at the current stored rate (`fx`).
|
|
16002
|
+
*/
|
|
16003
|
+
get: operations["getAdsAnalyticsImpact"];
|
|
16004
|
+
put?: never;
|
|
16005
|
+
post?: never;
|
|
16006
|
+
delete?: never;
|
|
16007
|
+
options?: never;
|
|
16008
|
+
head?: never;
|
|
16009
|
+
patch?: never;
|
|
16010
|
+
trace?: never;
|
|
16011
|
+
};
|
|
15992
16012
|
"/v1/ads/analytics/summary": {
|
|
15993
16013
|
parameters: {
|
|
15994
16014
|
query?: never;
|
|
@@ -20477,7 +20497,7 @@ export interface paths {
|
|
|
20477
20497
|
put?: never;
|
|
20478
20498
|
/**
|
|
20479
20499
|
* Undo one click-shield exclusion (one click).
|
|
20480
|
-
* @description Gated on `ads.manage` (IPROTATE, za-59). The person's click approves the removal of that one exclusion at Google (sent by the apply workflow, through the metered driver) and the exclusion is never proposed again for its campaign. Refused (422) when it is not at Google (`notApplied`), Google has not confirmed it yet (`notYetAtGoogle`)
|
|
20500
|
+
* @description Gated on `ads.manage` (IPROTATE, za-59). The person's click approves the removal of that one exclusion at Google (sent by the apply workflow, through the metered driver) and the exclusion is never proposed again for its campaign. Refused (422) when it is not at Google (`notApplied`), Google has not confirmed it yet (`notYetAtGoogle`), a removal is already on its way (`alreadyRemoving`) or it was applied more than 30 days ago (`refusal.adsconnect.undoExpired`, the same undo window as every Zinn® Ads change). The daily e-mail's Undo link for one exclusion runs this same path through `actOnAdsEmailLink`. A Microsoft website exclusion is removed from the campaign's list the same way; a Meta `listed` one only leaves the Zinn-held block list (nothing is sent to Meta) and is never listed again.
|
|
20481
20501
|
*/
|
|
20482
20502
|
post: operations["undoAdsShieldExclusion"];
|
|
20483
20503
|
delete?: never;
|
|
@@ -62479,6 +62499,117 @@ export interface components {
|
|
|
62479
62499
|
rate: string;
|
|
62480
62500
|
to: string;
|
|
62481
62501
|
};
|
|
62502
|
+
AdsAnalyticsImpact: components["schemas"]["AdsAnalyticsFrame"] & {
|
|
62503
|
+
before_after: {
|
|
62504
|
+
after: components["schemas"]["AdsAnalyticsImpactPeriod"];
|
|
62505
|
+
before: components["schemas"]["AdsAnalyticsImpactPeriod"];
|
|
62506
|
+
/** Format: date */
|
|
62507
|
+
started_on: string | null;
|
|
62508
|
+
};
|
|
62509
|
+
changes: {
|
|
62510
|
+
by_kind: {
|
|
62511
|
+
count: number;
|
|
62512
|
+
kind: string;
|
|
62513
|
+
undoable: number;
|
|
62514
|
+
}[];
|
|
62515
|
+
total: number;
|
|
62516
|
+
undoable: number;
|
|
62517
|
+
};
|
|
62518
|
+
effect: {
|
|
62519
|
+
better: number;
|
|
62520
|
+
/** Format: int64 */
|
|
62521
|
+
conversions_gained_milli: number;
|
|
62522
|
+
no_data: number;
|
|
62523
|
+
same: number;
|
|
62524
|
+
worse: number;
|
|
62525
|
+
};
|
|
62526
|
+
fraud: {
|
|
62527
|
+
/** Format: int64 */
|
|
62528
|
+
clicks: number;
|
|
62529
|
+
/** Format: int64 */
|
|
62530
|
+
cost_micros: number;
|
|
62531
|
+
count: number;
|
|
62532
|
+
items: {
|
|
62533
|
+
/** Format: date-time */
|
|
62534
|
+
blocked_at: string | null;
|
|
62535
|
+
can_undo: boolean;
|
|
62536
|
+
clicks: number;
|
|
62537
|
+
/** Format: uuid */
|
|
62538
|
+
connection_id: string;
|
|
62539
|
+
/** Format: int64 */
|
|
62540
|
+
cost_micros: number;
|
|
62541
|
+
/** Format: uuid */
|
|
62542
|
+
id: string;
|
|
62543
|
+
kind: string;
|
|
62544
|
+
label: string;
|
|
62545
|
+
}[];
|
|
62546
|
+
};
|
|
62547
|
+
hours_saved: {
|
|
62548
|
+
default_minutes: number;
|
|
62549
|
+
minutes: number;
|
|
62550
|
+
minutes_per_change: {
|
|
62551
|
+
[key: string]: number;
|
|
62552
|
+
};
|
|
62553
|
+
/** @description Always true - an estimate from the stated minutes per change */
|
|
62554
|
+
modelled: boolean;
|
|
62555
|
+
};
|
|
62556
|
+
/**
|
|
62557
|
+
* Format: int64
|
|
62558
|
+
* @description Waste blocked plus fraud blocked plus refunds won (measured).
|
|
62559
|
+
*/
|
|
62560
|
+
money_saved_micros: number;
|
|
62561
|
+
recovered: {
|
|
62562
|
+
conversions: number;
|
|
62563
|
+
/** Format: int64 */
|
|
62564
|
+
value_micros: number;
|
|
62565
|
+
};
|
|
62566
|
+
refunds: {
|
|
62567
|
+
count: number;
|
|
62568
|
+
/** Format: int64 */
|
|
62569
|
+
credited_micros: number;
|
|
62570
|
+
items: {
|
|
62571
|
+
/** Format: uuid */
|
|
62572
|
+
connection_id: string;
|
|
62573
|
+
/** Format: int64 */
|
|
62574
|
+
credited_micros: number;
|
|
62575
|
+
/** Format: uuid */
|
|
62576
|
+
id: string;
|
|
62577
|
+
/** Format: date */
|
|
62578
|
+
month: string | null;
|
|
62579
|
+
}[];
|
|
62580
|
+
};
|
|
62581
|
+
waste: {
|
|
62582
|
+
/** Format: int64 */
|
|
62583
|
+
clicks: number;
|
|
62584
|
+
/** Format: int64 */
|
|
62585
|
+
cost_micros: number;
|
|
62586
|
+
count: number;
|
|
62587
|
+
items: {
|
|
62588
|
+
/** Format: date-time */
|
|
62589
|
+
blocked_at: string | null;
|
|
62590
|
+
campaign: string;
|
|
62591
|
+
can_undo: boolean;
|
|
62592
|
+
/** Format: uuid */
|
|
62593
|
+
change_id: string | null;
|
|
62594
|
+
clicks: number;
|
|
62595
|
+
/** Format: uuid */
|
|
62596
|
+
connection_id: string;
|
|
62597
|
+
/** Format: int64 */
|
|
62598
|
+
cost_micros: number;
|
|
62599
|
+
/** Format: uuid */
|
|
62600
|
+
id: string;
|
|
62601
|
+
/** @enum {string} */
|
|
62602
|
+
kind: "waste_term" | "poor_keyword";
|
|
62603
|
+
text: string;
|
|
62604
|
+
}[];
|
|
62605
|
+
};
|
|
62606
|
+
};
|
|
62607
|
+
AdsAnalyticsImpactPeriod: (components["schemas"]["AdsAnalyticsFigures"] & {
|
|
62608
|
+
/** Format: date */
|
|
62609
|
+
first_day: string;
|
|
62610
|
+
/** Format: date */
|
|
62611
|
+
last_day: string;
|
|
62612
|
+
}) | null;
|
|
62482
62613
|
AdsAnalyticsPoint: components["schemas"]["AdsAnalyticsFigures"] & {
|
|
62483
62614
|
/** Format: date */
|
|
62484
62615
|
bucket: string;
|
|
@@ -119352,7 +119483,7 @@ export interface operations {
|
|
|
119352
119483
|
query?: {
|
|
119353
119484
|
/** @description `true` restricts to still-open purchases past their due date. A completed job past its deadline is not overdue -- it was delivered. */
|
|
119354
119485
|
overdue?: "true";
|
|
119355
|
-
/** @description `open` (default: awaiting_staff + fulfilling), `all`, or one exact status. `fulfilling` is in the default set on purpose: an automated extra stuck mid-workflow is also work nobody is doing. */
|
|
119486
|
+
/** @description `open` (default: awaiting_staff + fulfilling), `all`, or one exact status. `fulfilling` is in the default set on purpose: an automated extra stuck mid-workflow is also work nobody is doing. An AI Move's $0 purchase is left out of `open` while the AI is running it and shown once it escalates (needs staff, taken over, or past its SLA). */
|
|
119356
119487
|
status?: string;
|
|
119357
119488
|
};
|
|
119358
119489
|
header?: never;
|
|
@@ -136348,6 +136479,54 @@ export interface operations {
|
|
|
136348
136479
|
429: components["responses"]["TooManyRequests"];
|
|
136349
136480
|
};
|
|
136350
136481
|
};
|
|
136482
|
+
getAdsAnalyticsImpact: {
|
|
136483
|
+
parameters: {
|
|
136484
|
+
query?: {
|
|
136485
|
+
/** @description Comma-separated `<connection_id>:<campaign_id>` tokens. */
|
|
136486
|
+
campaign?: components["parameters"]["AdsAnalyticsCampaign"];
|
|
136487
|
+
compare?: components["parameters"]["AdsAnalyticsCompare"];
|
|
136488
|
+
/** @description Comma-separated ad-account connection ids. */
|
|
136489
|
+
connection?: components["parameters"]["AdsAnalyticsConnection"];
|
|
136490
|
+
/** @description Comma-separated ISO 3166-1 alpha-2 codes. Reads the country-level figures. */
|
|
136491
|
+
country?: components["parameters"]["AdsAnalyticsCountry"];
|
|
136492
|
+
/** @description Reporting currency (ISO 4217). Default the one currency in play, else the organisation's. */
|
|
136493
|
+
currency?: components["parameters"]["AdsAnalyticsCurrency"];
|
|
136494
|
+
from?: components["parameters"]["AdsAnalyticsFrom"];
|
|
136495
|
+
/** @description Bucket size. Default day up to 92 days, week up to 366, month beyond. */
|
|
136496
|
+
grain?: components["parameters"]["AdsAnalyticsGrain"];
|
|
136497
|
+
/** @description Comma-separated networks (google, microsoft, meta, linkedin, tiktok, x, pinterest, amazon). */
|
|
136498
|
+
network?: components["parameters"]["AdsAnalyticsNetwork"];
|
|
136499
|
+
/** @description Comma-separated product/site ids (za-290), or `unassigned`. */
|
|
136500
|
+
offering?: components["parameters"]["AdsAnalyticsOffering"];
|
|
136501
|
+
org_id?: string;
|
|
136502
|
+
/** @description The period. `custom` takes `from` and `to`. */
|
|
136503
|
+
range?: components["parameters"]["AdsAnalyticsRange"];
|
|
136504
|
+
to?: components["parameters"]["AdsAnalyticsTo"];
|
|
136505
|
+
};
|
|
136506
|
+
header?: never;
|
|
136507
|
+
path?: never;
|
|
136508
|
+
cookie?: never;
|
|
136509
|
+
};
|
|
136510
|
+
requestBody?: never;
|
|
136511
|
+
responses: {
|
|
136512
|
+
/** @description The figures. */
|
|
136513
|
+
200: {
|
|
136514
|
+
headers: {
|
|
136515
|
+
[name: string]: unknown;
|
|
136516
|
+
};
|
|
136517
|
+
content: {
|
|
136518
|
+
"application/json": {
|
|
136519
|
+
data: components["schemas"]["AdsAnalyticsImpact"];
|
|
136520
|
+
};
|
|
136521
|
+
};
|
|
136522
|
+
};
|
|
136523
|
+
401: components["responses"]["Unauthorized"];
|
|
136524
|
+
403: components["responses"]["Forbidden"];
|
|
136525
|
+
404: components["responses"]["NotFound"];
|
|
136526
|
+
422: components["responses"]["UnprocessableEntity"];
|
|
136527
|
+
429: components["responses"]["TooManyRequests"];
|
|
136528
|
+
};
|
|
136529
|
+
};
|
|
136351
136530
|
getAdsAnalyticsSummary: {
|
|
136352
136531
|
parameters: {
|
|
136353
136532
|
query?: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zinn-digital/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1430",
|
|
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>",
|