@poweredbysous/storefront-all-sdk 4.16.0 → 4.17.0

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/index.d.cts CHANGED
@@ -7087,6 +7087,23 @@ interface paths {
7087
7087
  patch?: never;
7088
7088
  trace?: never;
7089
7089
  };
7090
+ "/api/v1/visits/": {
7091
+ parameters: {
7092
+ query?: never;
7093
+ header?: never;
7094
+ path?: never;
7095
+ cookie?: never;
7096
+ };
7097
+ get?: never;
7098
+ put?: never;
7099
+ /** @description Record one storefront visit and send it to Cerebro. */
7100
+ post: operations["visits_create"];
7101
+ delete?: never;
7102
+ options?: never;
7103
+ head?: never;
7104
+ patch?: never;
7105
+ trace?: never;
7106
+ };
7090
7107
  "/api/v1/webhooks/stripe-subscriptions/": {
7091
7108
  parameters: {
7092
7109
  query?: never;
@@ -7604,6 +7621,45 @@ interface components {
7604
7621
  slug: string;
7605
7622
  position?: number;
7606
7623
  };
7624
+ /**
7625
+ * @description * `granted` - granted
7626
+ * * `denied` - denied
7627
+ * * `unknown` - unknown
7628
+ * @enum {string}
7629
+ */
7630
+ AttributionConsentEnum: "granted" | "denied" | "unknown";
7631
+ /**
7632
+ * @description One landing: its click ids, UTMs, path and external referrer.
7633
+ *
7634
+ * The key set of a touch in the storefront-attribution contract (section 1).
7635
+ * An explicit allowlist rather than a free dict: this is attacker-controllable
7636
+ * URL input landing in a JSON column, so unknown keys are dropped, blank
7637
+ * values are dropped and every value is bounded (a longer one, or a null
7638
+ * byte, makes the record invalid).
7639
+ */
7640
+ AttributionTouch: {
7641
+ gclid?: string;
7642
+ gbraid?: string;
7643
+ wbraid?: string;
7644
+ msclkid?: string;
7645
+ fbclid?: string;
7646
+ /** @description Retention send id (`?rt=`). */
7647
+ rt?: string;
7648
+ utm_source?: string;
7649
+ utm_medium?: string;
7650
+ utm_campaign?: string;
7651
+ utm_term?: string;
7652
+ utm_content?: string;
7653
+ /** @description Path of this touch's landing document, no query string. */
7654
+ landing_path?: string;
7655
+ /** @description External host this touch landed from; never the storefront's. */
7656
+ referrer_host?: string;
7657
+ };
7658
+ /**
7659
+ * @description * `2` - 2
7660
+ * @enum {integer}
7661
+ */
7662
+ AttributionVersionEnum: 2;
7607
7663
  AuthToken: {
7608
7664
  username: string;
7609
7665
  password: string;
@@ -8345,7 +8401,7 @@ interface components {
8345
8401
  order_number: string | null;
8346
8402
  purpose: string;
8347
8403
  attribution: {
8348
- [key: string]: string;
8404
+ [key: string]: unknown;
8349
8405
  } | null;
8350
8406
  marketing_consent: {
8351
8407
  [key: string]: unknown;
@@ -8364,27 +8420,58 @@ interface components {
8364
8420
  }[];
8365
8421
  };
8366
8422
  /**
8367
- * @description Ad-click and campaign identifiers captured by the storefront at landing.
8423
+ * @description The attribution record: the last touch at the top level, plus the rest.
8368
8424
  *
8369
- * Stored on the checkout and copied to the order at creation (PAT-2120) so
8370
- * server-side measurement, if added later, can attribute this period. Not
8371
- * read by anything yet. An explicit allowlist rather than a free dict: this
8372
- * is attacker-controllable URL input landing in a JSON column, so unknown
8373
- * keys are dropped and every value is bounded.
8425
+ * storefront-attribution contract, section 1. Shared by checkout creation
8426
+ * and ``POST /api/v1/visits/``, stored on the checkout and copied to
8427
+ * ``Order.metadata["attribution"]`` unchanged. A record without ``v`` is the
8428
+ * flat record written before the contract and is still accepted.
8429
+ *
8430
+ * ``session_id`` and ``ga_client_id`` are the linking identifiers, so both
8431
+ * are dropped here unless the record's ``consent`` is ``granted``: nothing
8432
+ * downstream, checkout or visit, sees them without consent.
8433
+ *
8434
+ * An invalid record is refused by ``POST /api/v1/visits/`` and dropped by
8435
+ * checkout creation, which carries on without it.
8374
8436
  */
8375
8437
  CheckoutAttribution: {
8376
- /** @description GA4 client id from the `_ga` cookie (`X.Y`). */
8377
- ga_client_id?: string;
8378
8438
  gclid?: string;
8439
+ gbraid?: string;
8440
+ wbraid?: string;
8441
+ msclkid?: string;
8379
8442
  fbclid?: string;
8380
- gtm_debug?: string;
8443
+ /** @description Retention send id (`?rt=`). */
8444
+ rt?: string;
8381
8445
  utm_source?: string;
8382
8446
  utm_medium?: string;
8383
8447
  utm_campaign?: string;
8384
8448
  utm_term?: string;
8385
8449
  utm_content?: string;
8450
+ /** @description Path of this touch's landing document, no query string. */
8386
8451
  landing_path?: string;
8452
+ /** @description External host this touch landed from; never the storefront's. */
8387
8453
  referrer_host?: string;
8454
+ /**
8455
+ * @description Record version. Absent on records written before version 2.
8456
+ *
8457
+ * * `2` - 2
8458
+ */
8459
+ v?: components["schemas"]["AttributionVersionEnum"];
8460
+ /** @description The record's first landing. Required when `v` is 2. */
8461
+ first_touch?: components["schemas"]["AttributionTouch"];
8462
+ /** @description GA4 client id from the `_ga` cookie (`X.Y`). Dropped unless `consent` is `granted`. */
8463
+ ga_client_id?: string;
8464
+ /**
8465
+ * @description Cookie banner state when the record was sent. Required when `v` is 2.
8466
+ *
8467
+ * * `granted` - granted
8468
+ * * `denied` - denied
8469
+ * * `unknown` - unknown
8470
+ */
8471
+ consent?: components["schemas"]["AttributionConsentEnum"];
8472
+ /** @description `analytics_session_id`. Dropped unless `consent` is `granted`. */
8473
+ session_id?: string;
8474
+ gtm_debug?: string;
8388
8475
  };
8389
8476
  /** @description One row of the company availability list: a method and its on/off state. */
8390
8477
  CompanyDeliveryMethodAvailability: {
@@ -8506,7 +8593,7 @@ interface components {
8506
8593
  CreateCheckoutInput: {
8507
8594
  /** Format: uuid */
8508
8595
  cart_id: string;
8509
- /** @description Campaign and click identifiers seen by the storefront in this session; stamped on the checkout and the resulting order. */
8596
+ /** @description Campaign and click identifiers seen by the storefront in this session; stamped on the checkout and the resulting order. A record that fails validation is dropped, not refused. */
8510
8597
  attribution?: components["schemas"]["CheckoutAttribution"];
8511
8598
  /**
8512
8599
  * Format: decimal
@@ -12697,6 +12784,10 @@ interface components {
12697
12784
  /** Format: decimal */
12698
12785
  amount: string;
12699
12786
  };
12787
+ VisitInput: {
12788
+ /** @description The attribution record, as on checkout creation. */
12789
+ attribution: components["schemas"]["CheckoutAttribution"];
12790
+ };
12700
12791
  WebhookSubscription: {
12701
12792
  /** Format: uuid */
12702
12793
  readonly id: string;
@@ -44851,6 +44942,84 @@ interface operations {
44851
44942
  };
44852
44943
  };
44853
44944
  };
44945
+ visits_create: {
44946
+ parameters: {
44947
+ query?: never;
44948
+ header?: never;
44949
+ path?: never;
44950
+ cookie?: never;
44951
+ };
44952
+ requestBody: {
44953
+ content: {
44954
+ "application/json": components["schemas"]["VisitInput"];
44955
+ "application/x-www-form-urlencoded": components["schemas"]["VisitInput"];
44956
+ "multipart/form-data": components["schemas"]["VisitInput"];
44957
+ };
44958
+ };
44959
+ responses: {
44960
+ /** @description Recorded, bots included. No body. */
44961
+ 204: {
44962
+ headers: {
44963
+ [name: string]: unknown;
44964
+ };
44965
+ content?: never;
44966
+ };
44967
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
44968
+ 400: {
44969
+ headers: {
44970
+ [name: string]: unknown;
44971
+ };
44972
+ content: {
44973
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44974
+ };
44975
+ };
44976
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
44977
+ 401: {
44978
+ headers: {
44979
+ [name: string]: unknown;
44980
+ };
44981
+ content: {
44982
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44983
+ };
44984
+ };
44985
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
44986
+ 403: {
44987
+ headers: {
44988
+ [name: string]: unknown;
44989
+ };
44990
+ content: {
44991
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44992
+ };
44993
+ };
44994
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
44995
+ 404: {
44996
+ headers: {
44997
+ [name: string]: unknown;
44998
+ };
44999
+ content: {
45000
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45001
+ };
45002
+ };
45003
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
45004
+ 429: {
45005
+ headers: {
45006
+ [name: string]: unknown;
45007
+ };
45008
+ content: {
45009
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45010
+ };
45011
+ };
45012
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
45013
+ 500: {
45014
+ headers: {
45015
+ [name: string]: unknown;
45016
+ };
45017
+ content: {
45018
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45019
+ };
45020
+ };
45021
+ };
45022
+ };
44854
45023
  webhooks_stripe_subscriptions_create: {
44855
45024
  parameters: {
44856
45025
  query?: never;
package/dist/index.d.ts CHANGED
@@ -7087,6 +7087,23 @@ interface paths {
7087
7087
  patch?: never;
7088
7088
  trace?: never;
7089
7089
  };
7090
+ "/api/v1/visits/": {
7091
+ parameters: {
7092
+ query?: never;
7093
+ header?: never;
7094
+ path?: never;
7095
+ cookie?: never;
7096
+ };
7097
+ get?: never;
7098
+ put?: never;
7099
+ /** @description Record one storefront visit and send it to Cerebro. */
7100
+ post: operations["visits_create"];
7101
+ delete?: never;
7102
+ options?: never;
7103
+ head?: never;
7104
+ patch?: never;
7105
+ trace?: never;
7106
+ };
7090
7107
  "/api/v1/webhooks/stripe-subscriptions/": {
7091
7108
  parameters: {
7092
7109
  query?: never;
@@ -7604,6 +7621,45 @@ interface components {
7604
7621
  slug: string;
7605
7622
  position?: number;
7606
7623
  };
7624
+ /**
7625
+ * @description * `granted` - granted
7626
+ * * `denied` - denied
7627
+ * * `unknown` - unknown
7628
+ * @enum {string}
7629
+ */
7630
+ AttributionConsentEnum: "granted" | "denied" | "unknown";
7631
+ /**
7632
+ * @description One landing: its click ids, UTMs, path and external referrer.
7633
+ *
7634
+ * The key set of a touch in the storefront-attribution contract (section 1).
7635
+ * An explicit allowlist rather than a free dict: this is attacker-controllable
7636
+ * URL input landing in a JSON column, so unknown keys are dropped, blank
7637
+ * values are dropped and every value is bounded (a longer one, or a null
7638
+ * byte, makes the record invalid).
7639
+ */
7640
+ AttributionTouch: {
7641
+ gclid?: string;
7642
+ gbraid?: string;
7643
+ wbraid?: string;
7644
+ msclkid?: string;
7645
+ fbclid?: string;
7646
+ /** @description Retention send id (`?rt=`). */
7647
+ rt?: string;
7648
+ utm_source?: string;
7649
+ utm_medium?: string;
7650
+ utm_campaign?: string;
7651
+ utm_term?: string;
7652
+ utm_content?: string;
7653
+ /** @description Path of this touch's landing document, no query string. */
7654
+ landing_path?: string;
7655
+ /** @description External host this touch landed from; never the storefront's. */
7656
+ referrer_host?: string;
7657
+ };
7658
+ /**
7659
+ * @description * `2` - 2
7660
+ * @enum {integer}
7661
+ */
7662
+ AttributionVersionEnum: 2;
7607
7663
  AuthToken: {
7608
7664
  username: string;
7609
7665
  password: string;
@@ -8345,7 +8401,7 @@ interface components {
8345
8401
  order_number: string | null;
8346
8402
  purpose: string;
8347
8403
  attribution: {
8348
- [key: string]: string;
8404
+ [key: string]: unknown;
8349
8405
  } | null;
8350
8406
  marketing_consent: {
8351
8407
  [key: string]: unknown;
@@ -8364,27 +8420,58 @@ interface components {
8364
8420
  }[];
8365
8421
  };
8366
8422
  /**
8367
- * @description Ad-click and campaign identifiers captured by the storefront at landing.
8423
+ * @description The attribution record: the last touch at the top level, plus the rest.
8368
8424
  *
8369
- * Stored on the checkout and copied to the order at creation (PAT-2120) so
8370
- * server-side measurement, if added later, can attribute this period. Not
8371
- * read by anything yet. An explicit allowlist rather than a free dict: this
8372
- * is attacker-controllable URL input landing in a JSON column, so unknown
8373
- * keys are dropped and every value is bounded.
8425
+ * storefront-attribution contract, section 1. Shared by checkout creation
8426
+ * and ``POST /api/v1/visits/``, stored on the checkout and copied to
8427
+ * ``Order.metadata["attribution"]`` unchanged. A record without ``v`` is the
8428
+ * flat record written before the contract and is still accepted.
8429
+ *
8430
+ * ``session_id`` and ``ga_client_id`` are the linking identifiers, so both
8431
+ * are dropped here unless the record's ``consent`` is ``granted``: nothing
8432
+ * downstream, checkout or visit, sees them without consent.
8433
+ *
8434
+ * An invalid record is refused by ``POST /api/v1/visits/`` and dropped by
8435
+ * checkout creation, which carries on without it.
8374
8436
  */
8375
8437
  CheckoutAttribution: {
8376
- /** @description GA4 client id from the `_ga` cookie (`X.Y`). */
8377
- ga_client_id?: string;
8378
8438
  gclid?: string;
8439
+ gbraid?: string;
8440
+ wbraid?: string;
8441
+ msclkid?: string;
8379
8442
  fbclid?: string;
8380
- gtm_debug?: string;
8443
+ /** @description Retention send id (`?rt=`). */
8444
+ rt?: string;
8381
8445
  utm_source?: string;
8382
8446
  utm_medium?: string;
8383
8447
  utm_campaign?: string;
8384
8448
  utm_term?: string;
8385
8449
  utm_content?: string;
8450
+ /** @description Path of this touch's landing document, no query string. */
8386
8451
  landing_path?: string;
8452
+ /** @description External host this touch landed from; never the storefront's. */
8387
8453
  referrer_host?: string;
8454
+ /**
8455
+ * @description Record version. Absent on records written before version 2.
8456
+ *
8457
+ * * `2` - 2
8458
+ */
8459
+ v?: components["schemas"]["AttributionVersionEnum"];
8460
+ /** @description The record's first landing. Required when `v` is 2. */
8461
+ first_touch?: components["schemas"]["AttributionTouch"];
8462
+ /** @description GA4 client id from the `_ga` cookie (`X.Y`). Dropped unless `consent` is `granted`. */
8463
+ ga_client_id?: string;
8464
+ /**
8465
+ * @description Cookie banner state when the record was sent. Required when `v` is 2.
8466
+ *
8467
+ * * `granted` - granted
8468
+ * * `denied` - denied
8469
+ * * `unknown` - unknown
8470
+ */
8471
+ consent?: components["schemas"]["AttributionConsentEnum"];
8472
+ /** @description `analytics_session_id`. Dropped unless `consent` is `granted`. */
8473
+ session_id?: string;
8474
+ gtm_debug?: string;
8388
8475
  };
8389
8476
  /** @description One row of the company availability list: a method and its on/off state. */
8390
8477
  CompanyDeliveryMethodAvailability: {
@@ -8506,7 +8593,7 @@ interface components {
8506
8593
  CreateCheckoutInput: {
8507
8594
  /** Format: uuid */
8508
8595
  cart_id: string;
8509
- /** @description Campaign and click identifiers seen by the storefront in this session; stamped on the checkout and the resulting order. */
8596
+ /** @description Campaign and click identifiers seen by the storefront in this session; stamped on the checkout and the resulting order. A record that fails validation is dropped, not refused. */
8510
8597
  attribution?: components["schemas"]["CheckoutAttribution"];
8511
8598
  /**
8512
8599
  * Format: decimal
@@ -12697,6 +12784,10 @@ interface components {
12697
12784
  /** Format: decimal */
12698
12785
  amount: string;
12699
12786
  };
12787
+ VisitInput: {
12788
+ /** @description The attribution record, as on checkout creation. */
12789
+ attribution: components["schemas"]["CheckoutAttribution"];
12790
+ };
12700
12791
  WebhookSubscription: {
12701
12792
  /** Format: uuid */
12702
12793
  readonly id: string;
@@ -44851,6 +44942,84 @@ interface operations {
44851
44942
  };
44852
44943
  };
44853
44944
  };
44945
+ visits_create: {
44946
+ parameters: {
44947
+ query?: never;
44948
+ header?: never;
44949
+ path?: never;
44950
+ cookie?: never;
44951
+ };
44952
+ requestBody: {
44953
+ content: {
44954
+ "application/json": components["schemas"]["VisitInput"];
44955
+ "application/x-www-form-urlencoded": components["schemas"]["VisitInput"];
44956
+ "multipart/form-data": components["schemas"]["VisitInput"];
44957
+ };
44958
+ };
44959
+ responses: {
44960
+ /** @description Recorded, bots included. No body. */
44961
+ 204: {
44962
+ headers: {
44963
+ [name: string]: unknown;
44964
+ };
44965
+ content?: never;
44966
+ };
44967
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
44968
+ 400: {
44969
+ headers: {
44970
+ [name: string]: unknown;
44971
+ };
44972
+ content: {
44973
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44974
+ };
44975
+ };
44976
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
44977
+ 401: {
44978
+ headers: {
44979
+ [name: string]: unknown;
44980
+ };
44981
+ content: {
44982
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44983
+ };
44984
+ };
44985
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
44986
+ 403: {
44987
+ headers: {
44988
+ [name: string]: unknown;
44989
+ };
44990
+ content: {
44991
+ "application/json": components["schemas"]["APIErrorEnvelope"];
44992
+ };
44993
+ };
44994
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
44995
+ 404: {
44996
+ headers: {
44997
+ [name: string]: unknown;
44998
+ };
44999
+ content: {
45000
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45001
+ };
45002
+ };
45003
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
45004
+ 429: {
45005
+ headers: {
45006
+ [name: string]: unknown;
45007
+ };
45008
+ content: {
45009
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45010
+ };
45011
+ };
45012
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
45013
+ 500: {
45014
+ headers: {
45015
+ [name: string]: unknown;
45016
+ };
45017
+ content: {
45018
+ "application/json": components["schemas"]["APIErrorEnvelope"];
45019
+ };
45020
+ };
45021
+ };
45022
+ };
44854
45023
  webhooks_stripe_subscriptions_create: {
44855
45024
  parameters: {
44856
45025
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poweredbysous/storefront-all-sdk",
3
- "version": "4.16.0",
3
+ "version": "4.17.0",
4
4
  "description": "Type-safe TypeScript SDK for all SOUS Storefront Backend endpoints",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,