@signa-so/sdk 0.7.0 → 0.9.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.
@@ -88,6 +88,49 @@ export interface paths {
88
88
  patch?: never;
89
89
  trace?: never;
90
90
  };
91
+ "/v1/offices/votes": {
92
+ parameters: {
93
+ query?: never;
94
+ header?: never;
95
+ path?: never;
96
+ cookie?: never;
97
+ };
98
+ /** @description List the authenticated organization's office-coverage votes, alphabetical by office code. The set is bounded by the votable vocabulary, so the list is always a single page: `limit` and `cursor` are accepted for list-client compatibility but do not affect the response, which always returns every vote with `has_more: false`. */
99
+ get: operations["listOfficeVotes"];
100
+ put?: never;
101
+ /**
102
+ * @description Vote for trademark offices your organization wants on Signa. One vote per office per organization — re-votes are no-ops, so the call is safely retryable. Returns the stored votes for every requested code (newly cast or pre-existing).
103
+ *
104
+ * This operation requires an `Idempotency-Key` header (see parameter description for 24h replay and 409-conflict semantics).
105
+ */
106
+ post: operations["castOfficeVotes"];
107
+ delete?: never;
108
+ options?: never;
109
+ head?: never;
110
+ patch?: never;
111
+ trace?: never;
112
+ };
113
+ "/v1/offices/votes/{code}": {
114
+ parameters: {
115
+ query?: never;
116
+ header?: never;
117
+ path?: never;
118
+ cookie?: never;
119
+ };
120
+ get?: never;
121
+ put?: never;
122
+ post?: never;
123
+ /**
124
+ * @description Retract your organization's vote for an office. Accepts the same code vocabulary as casting; votes for offices that have since gone live can still be retracted.
125
+ *
126
+ * This operation requires an `Idempotency-Key` header (see parameter description for 24h replay and 409-conflict semantics).
127
+ */
128
+ delete: operations["retractOfficeVote"];
129
+ options?: never;
130
+ head?: never;
131
+ patch?: never;
132
+ trace?: never;
133
+ };
91
134
  "/v1/classifications": {
92
135
  parameters: {
93
136
  query?: never;
@@ -335,7 +378,7 @@ export interface paths {
335
378
  };
336
379
  get?: never;
337
380
  put?: never;
338
- /** @description INTERNAL/beta — requires the `image-search:read` scope (internal + design-partner keys only until GA). Search trademarks by logo/image similarity. Accepts a multipart `image` upload, an `{image_url}` (https, SSRF-guarded), or a `{media_id}` (reuse an existing mark logo). Returns mark-level hits with named signal channels + thumbnails. Billed as `image_search`. Bounded top-K (limit ≤ 100). The query image is never stored. */
381
+ /** @description INTERNAL/beta — requires the `image-search:read` scope (internal + design-partner keys only until GA). Search trademarks by logo/image similarity. Accepts a multipart `image` upload, an `{image_url}` (https, SSRF-guarded), or a `{media_id}` (reuse an existing mark logo). Returns mark-level hits with named signal channels + thumbnails. Metered as `image_search`: **0 credits by default** while the image index is being built, 5 credits once image-search billing is enabled. Zero-billed calls carry no `X-Credits-*` headers (nothing is debited). Bounded top-K (limit ≤ 100). The query image is never stored. */
339
382
  post: operations["searchTrademarksByImage"];
340
383
  delete?: never;
341
384
  options?: never;
@@ -467,66 +510,15 @@ export interface paths {
467
510
  patch?: never;
468
511
  trace?: never;
469
512
  };
470
- "/v1/trademarks/{id}/history": {
471
- parameters: {
472
- query?: never;
473
- header?: never;
474
- path?: never;
475
- cookie?: never;
476
- };
477
- /** @description Paginated prosecution event timeline, reverse chronological. Maps to trademark_event table. */
478
- get: operations["listTrademarkHistory"];
479
- put?: never;
480
- post?: never;
481
- delete?: never;
482
- options?: never;
483
- head?: never;
484
- patch?: never;
485
- trace?: never;
486
- };
487
- "/v1/trademarks/{id}/changes": {
488
- parameters: {
489
- query?: never;
490
- header?: never;
491
- path?: never;
492
- cookie?: never;
493
- };
494
- /** @description Version-level change history from the trademark_changes ledger, reverse chronological. This is an OBSERVED-changes feed: each entry records a mutation Signa observed to the record (office re-ingest diffs, Madrid ir_id link/unlink, retractions), not the office's own filing history. Entries are retained for a rolling 12-month window; older changes are pruned. The top-level `observed_since` field is the record's first-observation date (when Signa first ingested it) — the effective start of the visible history is max(observed_since, now − 12 months). */
495
- get: operations["listTrademarkChanges"];
496
- put?: never;
497
- post?: never;
498
- delete?: never;
499
- options?: never;
500
- head?: never;
501
- patch?: never;
502
- trace?: never;
503
- };
504
- "/v1/trademarks/{id}/related": {
505
- parameters: {
506
- query?: never;
507
- header?: never;
508
- path?: never;
509
- cookie?: never;
510
- };
511
- /** @description Mark-to-mark relationships: Madrid designations, divisionals, seniority claims. Maps to trademark_relationship table. */
512
- get: operations["listTrademarkRelated"];
513
- put?: never;
514
- post?: never;
515
- delete?: never;
516
- options?: never;
517
- head?: never;
518
- patch?: never;
519
- trace?: never;
520
- };
521
- "/v1/trademarks/{id}/source": {
513
+ "/v1/trademarks/{id}/events": {
522
514
  parameters: {
523
515
  query?: never;
524
516
  header?: never;
525
517
  path?: never;
526
518
  cookie?: never;
527
519
  };
528
- /** @description Raw-record provenance metadata. Returns where the data came from and when. Falls back to trademark-record metadata when no raw-record version is available — in that case some fields (e.g. the full raw payload reference and response-type classification) are omitted but the response is still 200. Only returns 404 when the trademark itself does not exist. */
529
- get: operations["getTrademarkSource"];
520
+ /** @description Paginated prosecution event timeline for THIS mark, reverse chronological (maps to the trademark_event table): filings, publications, registrations, status changes. This is the office-reported history of a single trademark — not the org-level `/v1/events` activity feed. */
521
+ get: operations["listTrademarkEvents"];
530
522
  put?: never;
531
523
  post?: never;
532
524
  delete?: never;
@@ -586,40 +578,6 @@ export interface paths {
586
578
  patch?: never;
587
579
  trace?: never;
588
580
  };
589
- "/v1/trademarks/{id}/coverage": {
590
- parameters: {
591
- query?: never;
592
- header?: never;
593
- path?: never;
594
- cookie?: never;
595
- };
596
- /** @description Madrid designation territories. Maps to trademark_coverage table. Meaningful only for marks with filing_route = madrid_ir. */
597
- get: operations["listTrademarkCoverage"];
598
- put?: never;
599
- post?: never;
600
- delete?: never;
601
- options?: never;
602
- head?: never;
603
- patch?: never;
604
- trace?: never;
605
- };
606
- "/v1/trademarks/{id}/media/{mediaId}": {
607
- parameters: {
608
- query?: never;
609
- header?: never;
610
- path?: never;
611
- cookie?: never;
612
- };
613
- /** @description Proxy endpoint serving trademark images. Fetches the image server-side from the upstream office or CDN and streams it back. Unauthenticated — suitable for use in <img> tags. */
614
- get: operations["getTrademarkMedia"];
615
- put?: never;
616
- post?: never;
617
- delete?: never;
618
- options?: never;
619
- head?: never;
620
- patch?: never;
621
- trace?: never;
622
- };
623
581
  "/v1/owners/{id}/analytics": {
624
582
  parameters: {
625
583
  query?: never;
@@ -1504,7 +1462,7 @@ export interface paths {
1504
1462
  };
1505
1463
  /** @description Read the org auto-top-up config. Internal (dashboard BFF); requires organization:manage. */
1506
1464
  get: operations["getAutoTopUpConfig"];
1507
- /** @description Update the org auto-top-up config. Internal (dashboard BFF); requires organization:manage. */
1465
+ /** @description Update the org auto-top-up config. Internal (dashboard BFF); requires organization:manage. Any update whose MERGED result would be enabled is refused with 501 — auto-top-up charges saved cards off-session, which Stripe Managed Payments does not support. Disabling (enabled:false) and editing a stored, disabled config remain allowed. */
1508
1466
  put: operations["setAutoTopUpConfig"];
1509
1467
  post?: never;
1510
1468
  delete?: never;
@@ -1556,6 +1514,118 @@ export interface paths {
1556
1514
  export type webhooks = Record<string, never>;
1557
1515
  export interface components {
1558
1516
  schemas: {
1517
+ SourceRecordRef: {
1518
+ /** @example WO */
1519
+ source_office_code: string | null;
1520
+ /** @example US */
1521
+ territory_code: string | null;
1522
+ trademark?: {
1523
+ id: string;
1524
+ href: string;
1525
+ };
1526
+ };
1527
+ DetailCoverageTerritory: {
1528
+ /** @example US */
1529
+ territory: string;
1530
+ /** @example active */
1531
+ primary: string;
1532
+ /** @example registered */
1533
+ stage: string;
1534
+ /** @example protected */
1535
+ protection_status: string | null;
1536
+ /** @example 2024-06-01 */
1537
+ designation_date: string | null;
1538
+ /** @example 2025-01-20 */
1539
+ protection_date: string | null;
1540
+ /**
1541
+ * @description The designation record covering this territory. Always present.
1542
+ * @example tm_7d4e1f2a-3b8c-4d0e-9f1a-2b3c4d5e6f70
1543
+ */
1544
+ trademark_id: string;
1545
+ /** @example United States of America */
1546
+ territory_name: string | null;
1547
+ /** @example 2025-03-11 */
1548
+ refusal_date: string | null;
1549
+ /** @example 2025-06-01 */
1550
+ status_effective_date: string | null;
1551
+ /** @example false */
1552
+ is_subsequent_designation: boolean | null;
1553
+ /** @example madrid_protocol */
1554
+ designation_protocol: string | null;
1555
+ /** @description Reconciliation alternates for a dual-feed territory (the WIPO-feed record folded into a winning national-feed record, or vice versa). Empty for a single-feed territory. */
1556
+ source_records: components["schemas"]["SourceRecordRef"][];
1557
+ };
1558
+ DetailCoverage: {
1559
+ /** @example 50 */
1560
+ territory_count: number;
1561
+ /**
1562
+ * @example {
1563
+ * "active": 46,
1564
+ * "pending": 2,
1565
+ * "inactive": 2
1566
+ * }
1567
+ */
1568
+ by_primary: {
1569
+ [key: string]: number;
1570
+ };
1571
+ /**
1572
+ * @example {
1573
+ * "registered": 46,
1574
+ * "pending": 2,
1575
+ * "refused": 2
1576
+ * }
1577
+ */
1578
+ by_stage: {
1579
+ [key: string]: number;
1580
+ };
1581
+ territories: components["schemas"]["DetailCoverageTerritory"][];
1582
+ };
1583
+ TrademarkRelationship: {
1584
+ /** @example based_on_basic_registration */
1585
+ type: string;
1586
+ /**
1587
+ * @example child
1588
+ * @enum {string}
1589
+ */
1590
+ direction: "child" | "parent";
1591
+ /** @example tm_7d4e1f2a-3b8c-4d0e-9f1a-2b3c4d5e6f70 */
1592
+ trademark_id: string | null;
1593
+ /**
1594
+ * @description ST.3 office code of the counterpart as reported by the office. Null on `parent` edges (the counterpart is identified by `trademark_id`).
1595
+ * @example US
1596
+ */
1597
+ target_office_code: string | null;
1598
+ /**
1599
+ * @description Office-native identifier of the counterpart. Null on `parent` edges (the counterpart is identified by `trademark_id`).
1600
+ * @example 97123456
1601
+ */
1602
+ target_record_id: string | null;
1603
+ /** @example US */
1604
+ office_code: string | null;
1605
+ /** @example SIGNA */
1606
+ mark_text: string | null;
1607
+ /** @example registered */
1608
+ status_stage: string | null;
1609
+ /** @example 2024-03-15 */
1610
+ effective_date: string | null;
1611
+ };
1612
+ Provenance: {
1613
+ /**
1614
+ * @description Date of the office data file/response this record was built from.
1615
+ * @example 2026-03-18
1616
+ */
1617
+ source_data_date: string | null;
1618
+ /**
1619
+ * @description The office's own last-modified timestamp for the record, when it publishes one.
1620
+ * @example 2026-03-17T00:00:00Z
1621
+ */
1622
+ office_updated_at: string | null;
1623
+ /**
1624
+ * @description When Signa last fetched the full detail record from the office.
1625
+ * @example 2026-03-18T04:00:00Z
1626
+ */
1627
+ retrieved_at: string | null;
1628
+ };
1559
1629
  TrademarkDetailV1: {
1560
1630
  /** @example tm_7d4e1f2a3b8c9d0e */
1561
1631
  id: string;
@@ -1620,16 +1690,6 @@ export interface components {
1620
1690
  publication_date: string | null;
1621
1691
  priority_date: string | null;
1622
1692
  termination_date: string | null;
1623
- /**
1624
- * @description Timestamp reported by the source office for the record, when available.
1625
- * @example 2026-03-18T04:00:00Z
1626
- */
1627
- office_updated_at: string | null;
1628
- /**
1629
- * @description Timestamp of the most recent detail enrichment fetch when that office populates it; null otherwise.
1630
- * @example 2026-03-18T04:30:00Z
1631
- */
1632
- retrieved_at: string | null;
1633
1693
  protection_effective_date: string | null;
1634
1694
  designation_date: string | null;
1635
1695
  dependency_period_end_date: string | null;
@@ -1899,29 +1959,18 @@ export interface components {
1899
1959
  } | null;
1900
1960
  } | null;
1901
1961
  has_media: boolean;
1962
+ /**
1963
+ * @description Media-proxy URL for the primary mark image. Null when the mark has no media.
1964
+ * @example https://api.signa.so/v1/trademarks/tm_abc/media/01234567-89ab-cdef-0123-456789abcdef
1965
+ */
1966
+ primary_image_url: string | null;
1967
+ /** @description Per-territory coverage for a grouped Madrid IR (the same reconciled rollup the search row carries, plus per-designation detail). Null on designation legs and on direct/regional marks. */
1968
+ coverage: components["schemas"]["DetailCoverage"] | null;
1969
+ /** @description Mark-to-mark relationships. Excludes Madrid designations (see coverage.territories[]) and seniority claims (see seniority_claims[]). Capped at 200 per mark. */
1970
+ relationships: components["schemas"]["TrademarkRelationship"][];
1902
1971
  events_count: number;
1903
1972
  proceedings_count: number;
1904
- coverage_count: number;
1905
- relationships_count: number;
1906
- data_freshness: {
1907
- /** @example 2026-03-18 */
1908
- source_data_date: string | null;
1909
- /** @example dtd_v2.0 */
1910
- source_format: string | null;
1911
- /** @example 2026-03-18T04:00:00Z */
1912
- last_updated_at: string;
1913
- };
1914
- madrid?: {
1915
- ir_number: string;
1916
- holder_name: string | null;
1917
- origin_office: string | null;
1918
- expiry_date: string | null;
1919
- designation_count: number;
1920
- designated_countries: string[];
1921
- nice_classes: number[];
1922
- status_stage: string | null;
1923
- fetched_at: string | null;
1924
- } | null;
1973
+ provenance: components["schemas"]["Provenance"];
1925
1974
  /** @example 2024-03-16T00:00:00Z */
1926
1975
  created_at: string;
1927
1976
  /** @example 2026-03-18T04:00:00Z */
@@ -2096,18 +2145,6 @@ export interface components {
2096
2145
  /** @example 2025-01-20 */
2097
2146
  protection_date: string | null;
2098
2147
  }[];
2099
- /** @example /v1/trademarks/tm_IR1293856/coverage */
2100
- href: string;
2101
- };
2102
- SourceRecordRef: {
2103
- /** @example WO */
2104
- source_office_code: string | null;
2105
- /** @example US */
2106
- territory_code: string | null;
2107
- trademark?: {
2108
- id: string;
2109
- href: string;
2110
- };
2111
2148
  };
2112
2149
  TerritoryMatch: {
2113
2150
  /**
@@ -2421,27 +2458,33 @@ export interface components {
2421
2458
  data: components["schemas"]["ScreeningHitV3"][];
2422
2459
  request_id?: string;
2423
2460
  };
2424
- Classification: {
2425
- /** @example 9 */
2426
- class_number: number;
2461
+ OfficeVoteResource: {
2427
2462
  /** @enum {string} */
2428
- object: "classification";
2429
- /** @example Electrical and scientific apparatus */
2430
- title: string;
2431
- description: string | null;
2432
- category: string | null;
2463
+ object: "office_vote";
2464
+ /**
2465
+ * @description Canonical WIPO ST.3 office code (uppercase), e.g. BR, MX, BX.
2466
+ * @example BR
2467
+ */
2468
+ office_code: string;
2469
+ /**
2470
+ * @description Current coverage of the voted office: `live` (now on Signa — your ask landed), `roadmap` (modeled, connector not shipping yet), `not_covered` (not modeled yet).
2471
+ * @enum {string}
2472
+ */
2473
+ office_status: "live" | "roadmap" | "not_covered";
2474
+ /** @description When this org first voted for the office. */
2475
+ created_at: string;
2433
2476
  };
2434
- ClassificationListResponse: {
2477
+ OfficeVoteList: {
2435
2478
  /** @enum {string} */
2436
2479
  object: "list";
2437
- data: components["schemas"]["Classification"][];
2480
+ data: components["schemas"]["OfficeVoteResource"][];
2438
2481
  has_more: boolean;
2439
2482
  pagination: {
2440
2483
  cursor: string | null;
2441
2484
  total_count?: number;
2442
2485
  total_count_approximate?: boolean;
2443
2486
  };
2444
- request_id?: string;
2487
+ request_id: string;
2445
2488
  };
2446
2489
  Error: {
2447
2490
  error: {
@@ -2477,23 +2520,53 @@ export interface components {
2477
2520
  /** @example req_abc123 */
2478
2521
  request_id: string;
2479
2522
  };
2480
- GoodsServicesTerm: {
2481
- /** @example Computer software for data processing */
2482
- term: string;
2483
- /** @example computer-software-for-data-processing */
2484
- term_key: string;
2523
+ OfficeVoteDeleted: {
2524
+ /** @enum {string} */
2525
+ object: "office_vote";
2526
+ office_code: string;
2527
+ /** @enum {boolean} */
2528
+ deleted: true;
2529
+ request_id: string;
2530
+ };
2531
+ Classification: {
2485
2532
  /** @example 9 */
2486
2533
  class_number: number;
2487
- /** @example Software > Data Processing */
2488
- taxonomy_path: string | null;
2489
- /** @example true */
2490
- is_harmonised: boolean;
2491
- /**
2492
- * @description Offices whose goods & services catalogs accept this term, as identified by the upstream sources (TMclass/HDB, USPTO ID Manual). This is a catalog-acceptance vocabulary passed through verbatim — NOT the ST.3 `office_code` vocabulary used elsewhere in the API.
2493
- * @example [
2494
- * "USPTO",
2495
- * "EUIPO",
2496
- * "UKIPO",
2534
+ /** @enum {string} */
2535
+ object: "classification";
2536
+ /** @example Electrical and scientific apparatus */
2537
+ title: string;
2538
+ description: string | null;
2539
+ category: string | null;
2540
+ };
2541
+ ClassificationListResponse: {
2542
+ /** @enum {string} */
2543
+ object: "list";
2544
+ data: components["schemas"]["Classification"][];
2545
+ has_more: boolean;
2546
+ pagination: {
2547
+ cursor: string | null;
2548
+ total_count?: number;
2549
+ total_count_approximate?: boolean;
2550
+ };
2551
+ request_id?: string;
2552
+ };
2553
+ GoodsServicesTerm: {
2554
+ /** @example Computer software for data processing */
2555
+ term: string;
2556
+ /** @example computer-software-for-data-processing */
2557
+ term_key: string;
2558
+ /** @example 9 */
2559
+ class_number: number;
2560
+ /** @example Software > Data Processing */
2561
+ taxonomy_path: string | null;
2562
+ /** @example true */
2563
+ is_harmonised: boolean;
2564
+ /**
2565
+ * @description Offices whose goods & services catalogs accept this term, as identified by the upstream sources (TMclass/HDB, USPTO ID Manual). This is a catalog-acceptance vocabulary passed through verbatim — NOT the ST.3 `office_code` vocabulary used elsewhere in the API.
2566
+ * @example [
2567
+ * "USPTO",
2568
+ * "EUIPO",
2569
+ * "UKIPO",
2497
2570
  * "CIPO"
2498
2571
  * ]
2499
2572
  */
@@ -3511,7 +3584,7 @@ export interface components {
3511
3584
  international_registrations: "grouped" | "expanded";
3512
3585
  /**
3513
3586
  * @description Present when a grouped request falls back to expanded because a filter, sort, or option cannot be served by the grouped index.
3514
- * @example filter:vienna_codes forced expanded
3587
+ * @example filter:filing_date forced expanded
3515
3588
  */
3516
3589
  fallback_reason?: string;
3517
3590
  /**
@@ -3575,7 +3648,11 @@ export interface components {
3575
3648
  aggregation_metadata?: components["schemas"]["AggregationMetadata"];
3576
3649
  request_id: string;
3577
3650
  };
3578
- TrademarkHistoryEvent: {
3651
+ TrademarkEvent: {
3652
+ /** @example evt_7d4e1f2a-3b8c-4d0e-9f1a-2b3c4d5e6f70 */
3653
+ id: string;
3654
+ /** @enum {string} */
3655
+ object: "event";
3579
3656
  /** @example 2025-01-20 */
3580
3657
  event_date: string | null;
3581
3658
  /** @example registration */
@@ -3599,108 +3676,10 @@ export interface components {
3599
3676
  /** @example 12 */
3600
3677
  sequence_no: number | null;
3601
3678
  };
3602
- TrademarkHistoryResponse: {
3603
- /** @enum {string} */
3604
- object: "list";
3605
- data: components["schemas"]["TrademarkHistoryEvent"][];
3606
- has_more: boolean;
3607
- pagination: {
3608
- cursor: string | null;
3609
- total_count?: number;
3610
- total_count_approximate?: boolean;
3611
- };
3612
- request_id: string;
3613
- };
3614
- TrademarkChange: {
3615
- /** @example evt_019d2141-6ce9-771b-872e-bc8b20e49fcf */
3616
- id: string;
3617
- /** @enum {string} */
3618
- object: "trademark_change";
3619
- /** @example 12 */
3620
- version: number;
3621
- /** @example updated */
3622
- change_type: string;
3623
- /**
3624
- * @example [
3625
- * "status_stage",
3626
- * "registration_date"
3627
- * ]
3628
- */
3629
- changed_fields: string[];
3630
- /**
3631
- * @example {
3632
- * "status_stage": "examining",
3633
- * "registration_date": null
3634
- * }
3635
- */
3636
- old_values: {
3637
- [key: string]: string | number | boolean | unknown[] | {
3638
- [key: string]: unknown;
3639
- } | null;
3640
- } | null;
3641
- /**
3642
- * @example {
3643
- * "status_stage": "registered",
3644
- * "registration_date": "2026-03-15"
3645
- * }
3646
- */
3647
- new_values: {
3648
- [key: string]: string | number | boolean | unknown[] | {
3649
- [key: string]: unknown;
3650
- } | null;
3651
- };
3652
- /** @example 2026-03-15 */
3653
- source_data_date: string | null;
3654
- /** @example US */
3655
- office_code: string | null;
3656
- /** @example 2026-03-15T12:00:00Z */
3657
- created_at: string;
3658
- };
3659
- TrademarkChangesResponse: {
3660
- /** @enum {string} */
3661
- object: "list";
3662
- data: components["schemas"]["TrademarkChange"][];
3663
- has_more: boolean;
3664
- pagination: {
3665
- cursor: string | null;
3666
- total_count?: number;
3667
- total_count_approximate?: boolean;
3668
- };
3669
- /**
3670
- * Format: date-time
3671
- * @description ISO 8601 date-time the trademark was first observed by Signa (first ingest). Changes older than the rolling 12-month retention window are pruned.
3672
- */
3673
- observed_since: string | null;
3674
- request_id: string;
3675
- };
3676
- TrademarkRelated: {
3677
- /** @example tm_xyz */
3678
- related_trademark_id: string | null;
3679
- /** @example madrid_designation_of */
3680
- relationship_type: string;
3681
- /** @example 2024-06-01 */
3682
- effective_date: string | null;
3683
- /** @example SIGNA */
3684
- mark_text: string | null;
3685
- /** @example EM */
3686
- office_code: string | null;
3687
- /** @example registered */
3688
- status_stage: string | null;
3689
- /** @example child */
3690
- direction: string;
3691
- /** @example null */
3692
- target_office_code: string | null;
3693
- /** @example null */
3694
- target_record_id: string | null;
3695
- /** @example null */
3696
- metadata: string | number | boolean | unknown[] | {
3697
- [key: string]: unknown;
3698
- } | null;
3699
- };
3700
- TrademarkRelatedResponse: {
3679
+ TrademarkEventsResponse: {
3701
3680
  /** @enum {string} */
3702
3681
  object: "list";
3703
- data: components["schemas"]["TrademarkRelated"][];
3682
+ data: components["schemas"]["TrademarkEvent"][];
3704
3683
  has_more: boolean;
3705
3684
  pagination: {
3706
3685
  cursor: string | null;
@@ -3709,27 +3688,6 @@ export interface components {
3709
3688
  };
3710
3689
  request_id: string;
3711
3690
  };
3712
- TrademarkSource: {
3713
- /** @enum {string} */
3714
- object: "trademark_source";
3715
- /** @example tm_abc */
3716
- trademark_id: string;
3717
- /** @example US */
3718
- office_code: string | null;
3719
- /** @example 2026-03-18T04:00:00Z */
3720
- observed_at: string;
3721
- /** @example dtd_v2.0 */
3722
- source_format: string;
3723
- /** @example daily_bulk_xml */
3724
- source_response_type: string | null;
3725
- /** @example apc18840407-20251231-01.zip/entry-1234.xml */
3726
- source_locator: string | null;
3727
- /** @example sha256:a1b2c3d4... */
3728
- payload_hash: string;
3729
- };
3730
- TrademarkSourceResponse: components["schemas"]["TrademarkSource"] & {
3731
- request_id: string;
3732
- };
3733
3691
  TrademarkProceedingParty: {
3734
3692
  /** @example own_xyz */
3735
3693
  owner_id: string | null;
@@ -3930,57 +3888,6 @@ export interface components {
3930
3888
  source_sync: components["schemas"]["TrademarkDocumentSourceSync"];
3931
3889
  request_id: string;
3932
3890
  };
3933
- TrademarkCoverage: {
3934
- /** @example GB */
3935
- territory_code: string | null;
3936
- /** @example United Kingdom */
3937
- territory_name: string | null;
3938
- /** @example active */
3939
- primary: string | null;
3940
- /** @example registered */
3941
- stage: string | null;
3942
- /** @example protected */
3943
- protection_status: string | null;
3944
- /** @example 2024-06-01 */
3945
- designation_date: string | null;
3946
- /** @example 2025-02-15 */
3947
- protection_date: string | null;
3948
- /** @example null */
3949
- refusal_date: string | null;
3950
- /** @example 2025-02-15 */
3951
- status_effective_date: string | null;
3952
- /** @example false */
3953
- is_subsequent_designation: boolean | null;
3954
- /** @example madrid */
3955
- designation_protocol: string | null;
3956
- /** @example null */
3957
- goods_limitations: string | number | boolean | unknown[] | {
3958
- [key: string]: unknown;
3959
- } | null;
3960
- /** @example null */
3961
- status_detail: string | number | boolean | unknown[] | {
3962
- [key: string]: unknown;
3963
- } | null;
3964
- /** @description WIPO/national reconciliation alternates for this territory (§12.1) on grouped IR-parent rows — additive, never a duplicate row. Empty/absent for single-feed territories and non-IR marks. */
3965
- source_records?: {
3966
- /** @example WO */
3967
- source_office_code: string | null;
3968
- /** @example US */
3969
- territory_code: string | null;
3970
- }[];
3971
- };
3972
- TrademarkCoverageResponse: {
3973
- /** @enum {string} */
3974
- object: "list";
3975
- data: components["schemas"]["TrademarkCoverage"][];
3976
- has_more: boolean;
3977
- pagination: {
3978
- cursor: string | null;
3979
- total_count?: number;
3980
- total_count_approximate?: boolean;
3981
- };
3982
- request_id: string;
3983
- };
3984
3891
  AnalyticsPortfolioBlock: {
3985
3892
  mark_count: number;
3986
3893
  active_count: number;
@@ -4395,7 +4302,7 @@ export interface components {
4395
4302
  international_registrations: "grouped" | "expanded";
4396
4303
  /**
4397
4304
  * @description Present when a grouped request falls back to expanded because a filter, sort, or option cannot be served by the grouped index.
4398
- * @example filter:vienna_codes forced expanded
4305
+ * @example filter:filing_date forced expanded
4399
4306
  */
4400
4307
  fallback_reason?: string;
4401
4308
  /**
@@ -4633,7 +4540,7 @@ export interface components {
4633
4540
  international_registrations: "grouped" | "expanded";
4634
4541
  /**
4635
4542
  * @description Present when a grouped request falls back to expanded because a filter, sort, or option cannot be served by the grouped index.
4636
- * @example filter:vienna_codes forced expanded
4543
+ * @example filter:filing_date forced expanded
4637
4544
  */
4638
4545
  fallback_reason?: string;
4639
4546
  /**
@@ -4872,7 +4779,7 @@ export interface components {
4872
4779
  international_registrations: "grouped" | "expanded";
4873
4780
  /**
4874
4781
  * @description Present when a grouped request falls back to expanded because a filter, sort, or option cannot be served by the grouped index.
4875
- * @example filter:vienna_codes forced expanded
4782
+ * @example filter:filing_date forced expanded
4876
4783
  */
4877
4784
  fallback_reason?: string;
4878
4785
  /**
@@ -5167,7 +5074,7 @@ export interface components {
5167
5074
  international_registrations: "grouped" | "expanded";
5168
5075
  /**
5169
5076
  * @description Present when a grouped request falls back to expanded because a filter, sort, or option cannot be served by the grouped index.
5170
- * @example filter:vienna_codes forced expanded
5077
+ * @example filter:filing_date forced expanded
5171
5078
  */
5172
5079
  fallback_reason?: string;
5173
5080
  /**
@@ -6396,6 +6303,8 @@ export interface components {
6396
6303
  */
6397
6304
  status: "active" | "revoked" | "expired";
6398
6305
  expires_at: string | null;
6306
+ /** @description When this key was rotated (superseded). Non-null means expires_at is a rotation grace deadline, not a customer-set expiry. */
6307
+ rotated_at: string | null;
6399
6308
  last_used_at: string | null;
6400
6309
  metadata: {
6401
6310
  [key: string]: string;
@@ -6427,6 +6336,8 @@ export interface components {
6427
6336
  */
6428
6337
  status: "active" | "revoked" | "expired";
6429
6338
  expires_at: string | null;
6339
+ /** @description When this key was rotated (superseded). Non-null means expires_at is a rotation grace deadline, not a customer-set expiry. */
6340
+ rotated_at: string | null;
6430
6341
  last_used_at: string | null;
6431
6342
  metadata: {
6432
6343
  [key: string]: string;
@@ -6577,16 +6488,19 @@ export interface components {
6577
6488
  StripeCheckoutSessionResponse: {
6578
6489
  checkout_url: string | null;
6579
6490
  session_id: string;
6491
+ request_id: string;
6580
6492
  };
6581
6493
  StripeBillingPortalResponse: {
6582
6494
  portal_url: string;
6583
6495
  session_id: string;
6496
+ request_id: string;
6584
6497
  };
6585
6498
  StripeCreditPackCheckoutResponse: {
6586
6499
  checkout_url: string | null;
6587
6500
  session_id: string;
6588
6501
  credits: number;
6589
6502
  plan: string;
6503
+ request_id: string;
6590
6504
  };
6591
6505
  AutoTopUpConfigResponse: {
6592
6506
  enabled: boolean;
@@ -6597,6 +6511,9 @@ export interface components {
6597
6511
  saved_payment_method: string | null;
6598
6512
  month_to_date_spend_usd: number;
6599
6513
  last_failure_reason: string | null;
6514
+ /** @description True while auto-top-up charging is suspended fleet-wide (all Signa payments run through Stripe Managed Payments, which cannot make automatic off-session charges). While true, any update whose merged result would be enabled is refused with 501. */
6515
+ suspended: boolean;
6516
+ request_id: string;
6600
6517
  };
6601
6518
  NotificationCategory: {
6602
6519
  key: string;
@@ -6833,6 +6750,153 @@ export interface operations {
6833
6750
  };
6834
6751
  };
6835
6752
  };
6753
+ listOfficeVotes: {
6754
+ parameters: {
6755
+ query?: {
6756
+ limit?: number;
6757
+ cursor?: string;
6758
+ };
6759
+ header?: never;
6760
+ path?: never;
6761
+ cookie?: never;
6762
+ };
6763
+ requestBody?: never;
6764
+ responses: {
6765
+ /** @description List of office votes */
6766
+ 200: {
6767
+ headers: {
6768
+ [name: string]: unknown;
6769
+ };
6770
+ content: {
6771
+ "application/json": components["schemas"]["OfficeVoteList"];
6772
+ };
6773
+ };
6774
+ /** @description Invalid query parameter */
6775
+ 400: {
6776
+ headers: {
6777
+ [name: string]: unknown;
6778
+ };
6779
+ content: {
6780
+ "application/json": components["schemas"]["Error"];
6781
+ };
6782
+ };
6783
+ /** @description Missing or invalid API key */
6784
+ 401: {
6785
+ headers: {
6786
+ [name: string]: unknown;
6787
+ };
6788
+ content: {
6789
+ "application/json": components["schemas"]["Error"];
6790
+ };
6791
+ };
6792
+ };
6793
+ };
6794
+ castOfficeVotes: {
6795
+ parameters: {
6796
+ query?: never;
6797
+ header: {
6798
+ /** @description Unique key for safe retries. Responses to a given key are cached for 24h; retrying the same key with the same body replays the original response (with an Idempotent-Replayed: true header); the same key with a different body returns 409 conflict. */
6799
+ "Idempotency-Key": string;
6800
+ };
6801
+ path?: never;
6802
+ cookie?: never;
6803
+ };
6804
+ requestBody?: {
6805
+ content: {
6806
+ "application/json": {
6807
+ /**
6808
+ * @description Office codes to vote for (1–50). ST.3 / ISO country codes, any case (surrounding whitespace is trimmed); legacy internal codes and reserved aliases like UK are canonicalized. Offices Signa already covers are rejected — vote for what you want added. Codes your organization already voted for are no-ops, never double counts.
6809
+ * @example [
6810
+ * "BR",
6811
+ * "MX"
6812
+ * ]
6813
+ */
6814
+ office_codes: string[];
6815
+ };
6816
+ };
6817
+ };
6818
+ responses: {
6819
+ /** @description Stored votes for the requested codes */
6820
+ 200: {
6821
+ headers: {
6822
+ [name: string]: unknown;
6823
+ };
6824
+ content: {
6825
+ "application/json": components["schemas"]["OfficeVoteList"];
6826
+ };
6827
+ };
6828
+ /** @description Unknown, already-covered, or register-less office code (unknown_office_code / office_already_live / no_trademark_register) */
6829
+ 400: {
6830
+ headers: {
6831
+ [name: string]: unknown;
6832
+ };
6833
+ content: {
6834
+ "application/json": components["schemas"]["Error"];
6835
+ };
6836
+ };
6837
+ /** @description Missing or invalid API key */
6838
+ 401: {
6839
+ headers: {
6840
+ [name: string]: unknown;
6841
+ };
6842
+ content: {
6843
+ "application/json": components["schemas"]["Error"];
6844
+ };
6845
+ };
6846
+ };
6847
+ };
6848
+ retractOfficeVote: {
6849
+ parameters: {
6850
+ query?: never;
6851
+ header: {
6852
+ /** @description Unique key for safe retries. Responses to a given key are cached for 24h; retrying the same key with the same body replays the original response (with an Idempotent-Replayed: true header); the same key with a different body returns 409 conflict. */
6853
+ "Idempotency-Key": string;
6854
+ };
6855
+ path: {
6856
+ code: string;
6857
+ };
6858
+ cookie?: never;
6859
+ };
6860
+ requestBody?: never;
6861
+ responses: {
6862
+ /** @description Vote deleted */
6863
+ 200: {
6864
+ headers: {
6865
+ [name: string]: unknown;
6866
+ };
6867
+ content: {
6868
+ "application/json": components["schemas"]["OfficeVoteDeleted"];
6869
+ };
6870
+ };
6871
+ /** @description Unknown office code */
6872
+ 400: {
6873
+ headers: {
6874
+ [name: string]: unknown;
6875
+ };
6876
+ content: {
6877
+ "application/json": components["schemas"]["Error"];
6878
+ };
6879
+ };
6880
+ /** @description Missing or invalid API key */
6881
+ 401: {
6882
+ headers: {
6883
+ [name: string]: unknown;
6884
+ };
6885
+ content: {
6886
+ "application/json": components["schemas"]["Error"];
6887
+ };
6888
+ };
6889
+ /** @description No vote for this office */
6890
+ 404: {
6891
+ headers: {
6892
+ [name: string]: unknown;
6893
+ };
6894
+ content: {
6895
+ "application/json": components["schemas"]["Error"];
6896
+ };
6897
+ };
6898
+ };
6899
+ };
6836
6900
  listClassifications: {
6837
6901
  parameters: {
6838
6902
  query?: {
@@ -8328,167 +8392,39 @@ export interface operations {
8328
8392
  * @description International registration presentation. Default grouped → one row per mark/IR, with coverage on IR rows. Use expanded for one row per Madrid designation.
8329
8393
  * @example grouped
8330
8394
  * @enum {string}
8331
- */
8332
- international_registrations?: "grouped" | "expanded";
8333
- /**
8334
- * @description Optional row projections. `full_goods_services` returns full classifications[].goods_services_text; default rows truncate long G&S text to about 280 characters.
8335
- * @example [
8336
- * "full_goods_services"
8337
- * ]
8338
- */
8339
- include?: "full_goods_services"[];
8340
- /**
8341
- * @description Sparse top-level field projection. id and object are always retained.
8342
- * @example [
8343
- * "mark_text",
8344
- * "status",
8345
- * "nice_classes",
8346
- * "owners"
8347
- * ]
8348
- */
8349
- fields?: string[];
8350
- };
8351
- };
8352
- };
8353
- responses: {
8354
- /** @description Search results */
8355
- 200: {
8356
- headers: {
8357
- [name: string]: unknown;
8358
- };
8359
- content: {
8360
- "application/json": components["schemas"]["SearchResponseV2"];
8361
- };
8362
- };
8363
- /** @description Validation error */
8364
- 400: {
8365
- headers: {
8366
- [name: string]: unknown;
8367
- };
8368
- content: {
8369
- "application/json": components["schemas"]["Error"];
8370
- };
8371
- };
8372
- /** @description Missing or invalid API key */
8373
- 401: {
8374
- headers: {
8375
- [name: string]: unknown;
8376
- };
8377
- content: {
8378
- "application/json": components["schemas"]["Error"];
8379
- };
8380
- };
8381
- /** @description Missing required scope */
8382
- 403: {
8383
- headers: {
8384
- [name: string]: unknown;
8385
- };
8386
- content: {
8387
- "application/json": components["schemas"]["Error"];
8388
- };
8389
- };
8390
- /** @description Entity too large (member cap exceeded) */
8391
- 422: {
8392
- headers: {
8393
- [name: string]: unknown;
8394
- };
8395
- content: {
8396
- "application/json": components["schemas"]["Error"];
8397
- };
8398
- };
8399
- };
8400
- };
8401
- listTrademarkHistory: {
8402
- parameters: {
8403
- query?: {
8404
- event_type?: string[] | null;
8405
- event_scope?: string;
8406
- event_date_gte?: string;
8407
- event_date_lt?: string;
8408
- limit?: number;
8409
- cursor?: string;
8410
- };
8411
- header?: never;
8412
- path: {
8413
- id: string;
8414
- };
8415
- cookie?: never;
8416
- };
8417
- requestBody?: never;
8418
- responses: {
8419
- /** @description Trademark event history */
8420
- 200: {
8421
- headers: {
8422
- [name: string]: unknown;
8423
- };
8424
- content: {
8425
- "application/json": components["schemas"]["TrademarkHistoryResponse"];
8426
- };
8427
- };
8428
- /** @description Invalid ID */
8429
- 400: {
8430
- headers: {
8431
- [name: string]: unknown;
8432
- };
8433
- content: {
8434
- "application/json": components["schemas"]["Error"];
8435
- };
8436
- };
8437
- /** @description Missing or invalid API key */
8438
- 401: {
8439
- headers: {
8440
- [name: string]: unknown;
8441
- };
8442
- content: {
8443
- "application/json": components["schemas"]["Error"];
8444
- };
8445
- };
8446
- /** @description Missing required scope */
8447
- 403: {
8448
- headers: {
8449
- [name: string]: unknown;
8450
- };
8451
- content: {
8452
- "application/json": components["schemas"]["Error"];
8453
- };
8454
- };
8455
- /** @description Trademark not found */
8456
- 404: {
8457
- headers: {
8458
- [name: string]: unknown;
8459
- };
8460
- content: {
8461
- "application/json": components["schemas"]["Error"];
8395
+ */
8396
+ international_registrations?: "grouped" | "expanded";
8397
+ /**
8398
+ * @description Optional row projections. `full_goods_services` returns full classifications[].goods_services_text; default rows truncate long G&S text to about 280 characters.
8399
+ * @example [
8400
+ * "full_goods_services"
8401
+ * ]
8402
+ */
8403
+ include?: "full_goods_services"[];
8404
+ /**
8405
+ * @description Sparse top-level field projection. id and object are always retained.
8406
+ * @example [
8407
+ * "mark_text",
8408
+ * "status",
8409
+ * "nice_classes",
8410
+ * "owners"
8411
+ * ]
8412
+ */
8413
+ fields?: string[];
8462
8414
  };
8463
8415
  };
8464
8416
  };
8465
- };
8466
- listTrademarkChanges: {
8467
- parameters: {
8468
- query?: {
8469
- changed_field?: string;
8470
- sort?: "-changed_at" | "changed_at";
8471
- limit?: number;
8472
- cursor?: string;
8473
- };
8474
- header?: never;
8475
- path: {
8476
- id: string;
8477
- };
8478
- cookie?: never;
8479
- };
8480
- requestBody?: never;
8481
8417
  responses: {
8482
- /** @description Trademark change history */
8418
+ /** @description Search results */
8483
8419
  200: {
8484
8420
  headers: {
8485
8421
  [name: string]: unknown;
8486
8422
  };
8487
8423
  content: {
8488
- "application/json": components["schemas"]["TrademarkChangesResponse"];
8424
+ "application/json": components["schemas"]["SearchResponseV2"];
8489
8425
  };
8490
8426
  };
8491
- /** @description Invalid ID */
8427
+ /** @description Validation error */
8492
8428
  400: {
8493
8429
  headers: {
8494
8430
  [name: string]: unknown;
@@ -8515,8 +8451,8 @@ export interface operations {
8515
8451
  "application/json": components["schemas"]["Error"];
8516
8452
  };
8517
8453
  };
8518
- /** @description Trademark not found */
8519
- 404: {
8454
+ /** @description Entity too large (member cap exceeded) */
8455
+ 422: {
8520
8456
  headers: {
8521
8457
  [name: string]: unknown;
8522
8458
  };
@@ -8526,10 +8462,13 @@ export interface operations {
8526
8462
  };
8527
8463
  };
8528
8464
  };
8529
- listTrademarkRelated: {
8465
+ listTrademarkEvents: {
8530
8466
  parameters: {
8531
8467
  query?: {
8532
- relationship_type?: string;
8468
+ event_type?: string[] | null;
8469
+ event_scope?: string;
8470
+ event_date_gte?: string;
8471
+ event_date_lt?: string;
8533
8472
  limit?: number;
8534
8473
  cursor?: string;
8535
8474
  };
@@ -8541,71 +8480,13 @@ export interface operations {
8541
8480
  };
8542
8481
  requestBody?: never;
8543
8482
  responses: {
8544
- /** @description Trademark relationships */
8545
- 200: {
8546
- headers: {
8547
- [name: string]: unknown;
8548
- };
8549
- content: {
8550
- "application/json": components["schemas"]["TrademarkRelatedResponse"];
8551
- };
8552
- };
8553
- /** @description Invalid ID */
8554
- 400: {
8555
- headers: {
8556
- [name: string]: unknown;
8557
- };
8558
- content: {
8559
- "application/json": components["schemas"]["Error"];
8560
- };
8561
- };
8562
- /** @description Missing or invalid API key */
8563
- 401: {
8564
- headers: {
8565
- [name: string]: unknown;
8566
- };
8567
- content: {
8568
- "application/json": components["schemas"]["Error"];
8569
- };
8570
- };
8571
- /** @description Missing required scope */
8572
- 403: {
8573
- headers: {
8574
- [name: string]: unknown;
8575
- };
8576
- content: {
8577
- "application/json": components["schemas"]["Error"];
8578
- };
8579
- };
8580
- /** @description Trademark not found */
8581
- 404: {
8582
- headers: {
8583
- [name: string]: unknown;
8584
- };
8585
- content: {
8586
- "application/json": components["schemas"]["Error"];
8587
- };
8588
- };
8589
- };
8590
- };
8591
- getTrademarkSource: {
8592
- parameters: {
8593
- query?: never;
8594
- header?: never;
8595
- path: {
8596
- id: string;
8597
- };
8598
- cookie?: never;
8599
- };
8600
- requestBody?: never;
8601
- responses: {
8602
- /** @description Source provenance (synthesized from trademark-record metadata when no raw-record version exists — reduced field set) */
8483
+ /** @description Trademark prosecution events */
8603
8484
  200: {
8604
8485
  headers: {
8605
8486
  [name: string]: unknown;
8606
8487
  };
8607
8488
  content: {
8608
- "application/json": components["schemas"]["TrademarkSourceResponse"];
8489
+ "application/json": components["schemas"]["TrademarkEventsResponse"];
8609
8490
  };
8610
8491
  };
8611
8492
  /** @description Invalid ID */
@@ -8836,116 +8717,6 @@ export interface operations {
8836
8717
  };
8837
8718
  };
8838
8719
  };
8839
- listTrademarkCoverage: {
8840
- parameters: {
8841
- query?: {
8842
- protection_status?: string;
8843
- limit?: number;
8844
- cursor?: string;
8845
- };
8846
- header?: never;
8847
- path: {
8848
- id: string;
8849
- };
8850
- cookie?: never;
8851
- };
8852
- requestBody?: never;
8853
- responses: {
8854
- /** @description Trademark coverage territories */
8855
- 200: {
8856
- headers: {
8857
- [name: string]: unknown;
8858
- };
8859
- content: {
8860
- "application/json": components["schemas"]["TrademarkCoverageResponse"];
8861
- };
8862
- };
8863
- /** @description Invalid ID */
8864
- 400: {
8865
- headers: {
8866
- [name: string]: unknown;
8867
- };
8868
- content: {
8869
- "application/json": components["schemas"]["Error"];
8870
- };
8871
- };
8872
- /** @description Missing or invalid API key */
8873
- 401: {
8874
- headers: {
8875
- [name: string]: unknown;
8876
- };
8877
- content: {
8878
- "application/json": components["schemas"]["Error"];
8879
- };
8880
- };
8881
- /** @description Missing required scope */
8882
- 403: {
8883
- headers: {
8884
- [name: string]: unknown;
8885
- };
8886
- content: {
8887
- "application/json": components["schemas"]["Error"];
8888
- };
8889
- };
8890
- /** @description Trademark not found */
8891
- 404: {
8892
- headers: {
8893
- [name: string]: unknown;
8894
- };
8895
- content: {
8896
- "application/json": components["schemas"]["Error"];
8897
- };
8898
- };
8899
- };
8900
- };
8901
- getTrademarkMedia: {
8902
- parameters: {
8903
- query?: never;
8904
- header?: never;
8905
- path: {
8906
- id: string;
8907
- mediaId: string;
8908
- };
8909
- cookie?: never;
8910
- };
8911
- requestBody?: never;
8912
- responses: {
8913
- /** @description Image content */
8914
- 200: {
8915
- headers: {
8916
- [name: string]: unknown;
8917
- };
8918
- content?: never;
8919
- };
8920
- /** @description Invalid ID */
8921
- 400: {
8922
- headers: {
8923
- [name: string]: unknown;
8924
- };
8925
- content: {
8926
- "application/json": components["schemas"]["Error"];
8927
- };
8928
- };
8929
- /** @description Media not found */
8930
- 404: {
8931
- headers: {
8932
- [name: string]: unknown;
8933
- };
8934
- content: {
8935
- "application/json": components["schemas"]["Error"];
8936
- };
8937
- };
8938
- /** @description Upstream image unavailable */
8939
- 502: {
8940
- headers: {
8941
- [name: string]: unknown;
8942
- };
8943
- content: {
8944
- "application/json": components["schemas"]["Error"];
8945
- };
8946
- };
8947
- };
8948
- };
8949
8720
  retrieveOwnerAnalytics: {
8950
8721
  parameters: {
8951
8722
  query?: never;
@@ -12554,6 +12325,11 @@ export interface operations {
12554
12325
  * @description Redirect on cancel.
12555
12326
  */
12556
12327
  cancel_url?: string;
12328
+ /**
12329
+ * Format: email
12330
+ * @description Billing email for the Stripe customer (receipts, invoices, failed-payment mail). The dashboard BFF passes the signed-in user's address. Write-once seed: ignored when the organization already has a billing email (later changes flow from the Stripe customer via the customer.updated webhook).
12331
+ */
12332
+ billing_email?: string;
12557
12333
  };
12558
12334
  };
12559
12335
  };
@@ -12603,6 +12379,24 @@ export interface operations {
12603
12379
  "application/json": components["schemas"]["Error"];
12604
12380
  };
12605
12381
  };
12382
+ /** @description Organization already has an active subscription */
12383
+ 409: {
12384
+ headers: {
12385
+ [name: string]: unknown;
12386
+ };
12387
+ content: {
12388
+ "application/json": components["schemas"]["Error"];
12389
+ };
12390
+ };
12391
+ /** @description Billing is not configured on this deployment (Stripe key absent) */
12392
+ 503: {
12393
+ headers: {
12394
+ [name: string]: unknown;
12395
+ };
12396
+ content: {
12397
+ "application/json": components["schemas"]["Error"];
12398
+ };
12399
+ };
12606
12400
  };
12607
12401
  };
12608
12402
  createBillingPortal: {
@@ -12623,6 +12417,11 @@ export interface operations {
12623
12417
  * @description Return URL after the portal.
12624
12418
  */
12625
12419
  return_url?: string;
12420
+ /**
12421
+ * Format: email
12422
+ * @description Billing email for the Stripe customer (receipts, invoices, failed-payment mail). The dashboard BFF passes the signed-in user's address. Write-once seed: ignored when the organization already has a billing email (later changes flow from the Stripe customer via the customer.updated webhook).
12423
+ */
12424
+ billing_email?: string;
12626
12425
  };
12627
12426
  };
12628
12427
  };
@@ -12636,6 +12435,15 @@ export interface operations {
12636
12435
  "application/json": components["schemas"]["StripeBillingPortalResponse"];
12637
12436
  };
12638
12437
  };
12438
+ /** @description Validation error */
12439
+ 400: {
12440
+ headers: {
12441
+ [name: string]: unknown;
12442
+ };
12443
+ content: {
12444
+ "application/json": components["schemas"]["Error"];
12445
+ };
12446
+ };
12639
12447
  /** @description Missing or invalid API key */
12640
12448
  401: {
12641
12449
  headers: {
@@ -12663,6 +12471,15 @@ export interface operations {
12663
12471
  "application/json": components["schemas"]["Error"];
12664
12472
  };
12665
12473
  };
12474
+ /** @description Billing is not configured on this deployment (Stripe key absent) */
12475
+ 503: {
12476
+ headers: {
12477
+ [name: string]: unknown;
12478
+ };
12479
+ content: {
12480
+ "application/json": components["schemas"]["Error"];
12481
+ };
12482
+ };
12666
12483
  };
12667
12484
  };
12668
12485
  createCreditPackCheckout: {
@@ -12693,6 +12510,11 @@ export interface operations {
12693
12510
  * @description Redirect on cancel.
12694
12511
  */
12695
12512
  cancel_url?: string;
12513
+ /**
12514
+ * Format: email
12515
+ * @description Billing email for the Stripe customer (receipts, invoices, failed-payment mail). The dashboard BFF passes the signed-in user's address. Write-once seed: ignored when the organization already has a billing email (later changes flow from the Stripe customer via the customer.updated webhook).
12516
+ */
12517
+ billing_email?: string;
12696
12518
  };
12697
12519
  };
12698
12520
  };
@@ -12742,6 +12564,15 @@ export interface operations {
12742
12564
  "application/json": components["schemas"]["Error"];
12743
12565
  };
12744
12566
  };
12567
+ /** @description Billing is not configured on this deployment (Stripe key absent) */
12568
+ 503: {
12569
+ headers: {
12570
+ [name: string]: unknown;
12571
+ };
12572
+ content: {
12573
+ "application/json": components["schemas"]["Error"];
12574
+ };
12575
+ };
12745
12576
  };
12746
12577
  };
12747
12578
  getAutoTopUpConfig: {
@@ -12829,7 +12660,7 @@ export interface operations {
12829
12660
  "application/json": components["schemas"]["Error"];
12830
12661
  };
12831
12662
  };
12832
- /** @description Missing scope, or plan cannot enable auto-top-up */
12663
+ /** @description Missing organization:manage scope */
12833
12664
  403: {
12834
12665
  headers: {
12835
12666
  [name: string]: unknown;
@@ -12838,6 +12669,15 @@ export interface operations {
12838
12669
  "application/json": components["schemas"]["Error"];
12839
12670
  };
12840
12671
  };
12672
+ /** @description Auto-top-up cannot be enabled: all Signa payments run through Stripe Managed Payments, which does not support automatic off-session charges. */
12673
+ 501: {
12674
+ headers: {
12675
+ [name: string]: unknown;
12676
+ };
12677
+ content: {
12678
+ "application/json": components["schemas"]["Error"];
12679
+ };
12680
+ };
12841
12681
  };
12842
12682
  };
12843
12683
  getNotificationPreferences: {