@opusdns/api 1.137.0 → 1.139.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/README.md CHANGED
@@ -61,34 +61,69 @@ import {
61
61
 
62
62
  ## Documentation
63
63
 
64
- There are two documentation setups in this repository:
65
-
66
- ### Legacy: GitHub Pages API Reference (production)
67
-
68
- The `docs/` folder is a static site that embeds
69
- [`@scalar/api-reference`](https://github.com/scalar/scalar) and is published
70
- via GitHub Pages on [developers.opusdns.com](https://developers.opusdns.com/).
71
- Source of truth: [`docs/index.html`](./docs/index.html). Do **not** put
72
- guides/Markdown content here.
73
-
74
- ### Scalar Docs 2.0 (local preview)
75
-
76
- A more sophisticated documentation setup using
77
- [Scalar Docs 2.0](https://scalar.com/products/docs/getting-started) is
78
- contained in [`scalar/`](./scalar/). The Scalar project config lives at
79
- [`scalar/scalar.config.json`](./scalar/scalar.config.json), guide content lives
80
- under [`scalar/content/`](./scalar/content/), and the API reference is
81
- fetched from the raw GitHub copy of [`src/openapi.yaml`](./src/openapi.yaml).
82
-
83
- To preview locally:
64
+ [developers.opusdns.com](https://developers.opusdns.com/) is served by
65
+ [Scalar Docs 2.0](https://scalar.com/products/docs/getting-started) from
66
+ [`scalar/`](./scalar/) in this repository.
67
+
68
+ ### How publishing works
69
+
70
+ **Merging to `main` publishes.** Scalar's GitHub integration builds `main`; there
71
+ is no deploy workflow in this repo and no Scalar token. The custom domain is
72
+ declared in the config itself
73
+ ([`scalar/scalar.config.json`](./scalar/scalar.config.json), `siteConfig.customDomain`),
74
+ not in CI. Nothing in the repository shows this connection, so it is written down
75
+ here: if publishing ever stops, the integration in the Scalar dashboard is where
76
+ to look.
77
+
78
+ **Every PR gets a preview.** The same integration builds each pull request and
79
+ posts a throwaway URL as a comment (`…--opusdns-api-spec.apidocumentation.com`),
80
+ so you can read a change as rendered before merging it. Use it — a bad `filepath`
81
+ or an icon name Scalar does not know renders as nothing rather than failing, and
82
+ merging is what makes that public.
83
+
84
+ The preview does not, however, cover the bots' own PRs: GitHub suppresses
85
+ workflow runs for pull requests opened with a token rather than by a person, so
86
+ both bots validate the config inline before opening theirs.
87
+
88
+ ### Layout
89
+
90
+ | Path | What |
91
+ | --- | --- |
92
+ | `scalar/scalar.config.json` | The whole site: tabs, sidebar routes, theme. Every page's title, icon and URL live here — content files carry no frontmatter |
93
+ | `scalar/content/` | Guide Markdown |
94
+ | `scalar/content/tld-knowledge-base/` | **Generated** from `OpusDNS/tld-specifications` by `scripts/generate_tld_knowledge_base.py` |
95
+ | `scalar/content/mcp-server/` | **Generated** in `OpusDNS/opusdns-mcp`, which opens a PR here carrying the diff. `scripts/sync_mcp_docs.py` lives here but is run from there — see [`scripts/mcp_docs/`](./scripts/mcp_docs/) |
96
+ | `src/openapi.yaml` | The spec. The API Reference tab is fetched by Scalar from the raw GitHub URL at build time, so it is eventually consistent rather than bundled |
97
+
98
+ Two bots write `scalar.config.json`: **Generate TLD Knowledge Base**, a workflow
99
+ in this repo, and **Publish MCP docs to api-spec**, a workflow in
100
+ `OpusDNS/opusdns-mcp` that opens its PR here. Each rebuilds only the subtree it
101
+ owns and both serialise identically (`json.dumps(..., indent=2,
102
+ ensure_ascii=False)` plus a trailing newline), so hand edits should match that
103
+ style — otherwise the next bot PR reformats your lines.
104
+
105
+ ### Local preview
84
106
 
85
107
  ```bash
86
108
  npm install
87
109
  npm --prefix scalar install
88
110
  npm run docs:preview
89
111
  # → http://localhost:7970
112
+
113
+ npm --prefix scalar run check # validate scalar.config.json
90
114
  ```
91
115
 
116
+ Run `check` before pushing anything that touches the config. A `filepath`
117
+ pointing at a file that does not exist, or an icon name Scalar does not know,
118
+ renders as nothing — and merging is what publishes.
119
+
120
+ ### The legacy `docs/` folder
121
+
122
+ [`docs/`](./docs/) is a static GitHub Pages site that embeds
123
+ [`@scalar/api-reference`](https://github.com/scalar/scalar). GitHub Pages is
124
+ still configured for it, but DNS points at Scalar, so **it is not what serves the
125
+ domain**. Treat it as vestigial; do not put content there.
126
+
92
127
  ### Links
93
128
 
94
129
  - [Main website](https://www.opusdns.com/)
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "@opusdns/api-spec-ts-generator": "^1.5.0"
4
4
  },
5
5
  "name": "@opusdns/api",
6
- "version": "1.137.0",
6
+ "version": "1.139.0",
7
7
  "description": "TypeScript types for the OpusDNS OpenAPI specification",
8
8
  "main": "./src/index.ts",
9
9
  "module": "./src/index.ts",
@@ -56,6 +56,7 @@ import type {
56
56
  HostStatus,
57
57
  HttpProtocol,
58
58
  IPAddressType,
59
+ InvoiceDocumentType,
59
60
  InvoiceResponsePaymentStatus,
60
61
  InvoiceResponseStatus,
61
62
  InvoiceResponseType,
@@ -1095,6 +1096,16 @@ export const IP_ADDRESS_TYPE_VALUES = [
1095
1096
  'v6',
1096
1097
  ] as const satisfies ReadonlyArray<IPAddressType>;
1097
1098
 
1099
+ export const INVOICE_DOCUMENT_TYPE = {
1100
+ INVOICE: "invoice",
1101
+ RECEIPT: "receipt",
1102
+ } as const satisfies Record<string, InvoiceDocumentType>;
1103
+
1104
+ export const INVOICE_DOCUMENT_TYPE_VALUES = [
1105
+ 'invoice',
1106
+ 'receipt',
1107
+ ] as const satisfies ReadonlyArray<InvoiceDocumentType>;
1108
+
1098
1109
  export const INVOICE_RESPONSE_PAYMENT_STATUS = {
1099
1110
  PENDING: "pending",
1100
1111
  FAILED: "failed",
@@ -110,6 +110,7 @@ export const ORGANIZATIONS_USERS_ENDPOINT = '/v1/organizations/users';
110
110
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_ENDPOINT = '/v1/organizations/{organization_id}';
111
111
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_ATTRIBUTES_ENDPOINT = '/v1/organizations/{organization_id}/attributes';
112
112
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_INVOICES_ENDPOINT = '/v1/organizations/{organization_id}/billing/invoices';
113
+ export const ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_RECEIPTS_ENDPOINT = '/v1/organizations/{organization_id}/billing/receipts';
113
114
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_PRICING_PRODUCT_TYPE_BY_PRODUCT_TYPE_ENDPOINT = '/v1/organizations/{organization_id}/pricing/product-type/{product_type}';
114
115
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_TRANSACTIONS_ENDPOINT = '/v1/organizations/{organization_id}/transactions';
115
116
  export const ORGANIZATIONS_BY_ORGANIZATION_ID_TRANSACTIONS_BY_TRANSACTION_ID_ENDPOINT = '/v1/organizations/{organization_id}/transactions/{transaction_id}';
@@ -263,6 +264,7 @@ export type Endpoint =
263
264
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_ENDPOINT
264
265
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_ATTRIBUTES_ENDPOINT
265
266
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_INVOICES_ENDPOINT
267
+ | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_RECEIPTS_ENDPOINT
266
268
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_PRICING_PRODUCT_TYPE_BY_PRODUCT_TYPE_ENDPOINT
267
269
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_TRANSACTIONS_ENDPOINT
268
270
  | typeof ORGANIZATIONS_BY_ORGANIZATION_ID_TRANSACTIONS_BY_TRANSACTION_ID_ENDPOINT
@@ -3651,6 +3651,7 @@ export const KEYS_IDN_BASE = [
3651
3651
 
3652
3652
  export const KEY_INVOICE_AMOUNT = 'amount' satisfies keyof Invoice;
3653
3653
  export const KEY_INVOICE_CURRENCY = 'currency' satisfies keyof Invoice;
3654
+ export const KEY_INVOICE_DOCUMENT_TYPE = 'document_type' satisfies keyof Invoice;
3654
3655
  export const KEY_INVOICE_EXTERNAL_ID = 'external_id' satisfies keyof Invoice;
3655
3656
  export const KEY_INVOICE_FEES_AMOUNT = 'fees_amount' satisfies keyof Invoice;
3656
3657
  export const KEY_INVOICE_FILE_URL = 'file_url' satisfies keyof Invoice;
@@ -3666,6 +3667,7 @@ export const KEY_INVOICE_TAXES_AMOUNT = 'taxes_amount' satisfies keyof Invoice;
3666
3667
  export const KEYS_INVOICE = [
3667
3668
  KEY_INVOICE_AMOUNT,
3668
3669
  KEY_INVOICE_CURRENCY,
3670
+ KEY_INVOICE_DOCUMENT_TYPE,
3669
3671
  KEY_INVOICE_EXTERNAL_ID,
3670
3672
  KEY_INVOICE_FEES_AMOUNT,
3671
3673
  KEY_INVOICE_FILE_URL,
@@ -106,6 +106,7 @@ import {
106
106
  ORGANIZATIONS_ATTRIBUTES_ENDPOINT,
107
107
  ORGANIZATIONS_BY_ORGANIZATION_ID_ATTRIBUTES_ENDPOINT,
108
108
  ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_INVOICES_ENDPOINT,
109
+ ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_RECEIPTS_ENDPOINT,
109
110
  ORGANIZATIONS_BY_ORGANIZATION_ID_ENDPOINT,
110
111
  ORGANIZATIONS_BY_ORGANIZATION_ID_PRICING_PRODUCT_TYPE_BY_PRODUCT_TYPE_ENDPOINT,
111
112
  ORGANIZATIONS_BY_ORGANIZATION_ID_TRANSACTIONS_BY_TRANSACTION_ID_ENDPOINT,
@@ -949,6 +950,13 @@ export const REQUIRED_PERMISSIONS = {
949
950
  patch: [],
950
951
  delete: [],
951
952
  },
953
+ [ORGANIZATIONS_BY_ORGANIZATION_ID_BILLING_RECEIPTS_ENDPOINT]: {
954
+ get: [PUBLIC_PERMISSION.BILLING_MANAGE],
955
+ post: [],
956
+ put: [],
957
+ patch: [],
958
+ delete: [],
959
+ },
952
960
  [ORGANIZATIONS_BY_ORGANIZATION_ID_ENDPOINT]: {
953
961
  get: [PUBLIC_PERMISSION.ORGANIZATION_READ],
954
962
  post: [],
@@ -880,6 +880,12 @@ export type GET_OrganizationsByOrganizationIdBillingInvoices_Request = {
880
880
  export type GET_OrganizationsByOrganizationIdBillingInvoices_Request_Query = GET_OrganizationsByOrganizationIdBillingInvoices_Request['parameters']['query'];
881
881
  export type GET_OrganizationsByOrganizationIdBillingInvoices_Request_Path = GET_OrganizationsByOrganizationIdBillingInvoices_Request['parameters']['path'];
882
882
 
883
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Request = {
884
+ parameters: operations['list_receipts_v1_organizations__organization_id__billing_receipts_get']['parameters'];
885
+ };
886
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Request_Query = GET_OrganizationsByOrganizationIdBillingReceipts_Request['parameters']['query'];
887
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Request_Path = GET_OrganizationsByOrganizationIdBillingReceipts_Request['parameters']['path'];
888
+
883
889
  export type GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Request = {
884
890
  parameters: operations['get_pricing_plans_v1_organizations__organization_id__pricing_product_type__product_type__get']['parameters'];
885
891
  };
@@ -679,6 +679,11 @@ export type GET_OrganizationsByOrganizationIdBillingInvoices_Response = GET_Orga
679
679
  export type GET_OrganizationsByOrganizationIdBillingInvoices_Response_200 = Pagination_Invoice;
680
680
  export type GET_OrganizationsByOrganizationIdBillingInvoices_Response_422 = HTTPValidationError;
681
681
 
682
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Response = GET_OrganizationsByOrganizationIdBillingReceipts_Response_200 | GET_OrganizationsByOrganizationIdBillingReceipts_Response_422;
683
+
684
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Response_200 = Pagination_Invoice;
685
+ export type GET_OrganizationsByOrganizationIdBillingReceipts_Response_422 = HTTPValidationError;
686
+
682
687
  export type GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response = GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response_200 | GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response_401 | GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response_403 | GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response_422;
683
688
 
684
689
  export type GET_OrganizationsByOrganizationIdPricingProductTypeByProductType_Response_200 = GetPrices;
@@ -327,6 +327,7 @@ export type HttpRedirectRequest = components['schemas']['HttpRedirectRequest'];
327
327
  export type HttpRedirectUpsert = components['schemas']['HttpRedirectUpsert'];
328
328
  export type IPAddressType = components['schemas']['IPAddressType'];
329
329
  export type IdnBase = components['schemas']['IdnBase'];
330
+ export type InvoiceDocumentType = components['schemas']['InvoiceDocumentType'];
330
331
  export type Invoice = components['schemas']['InvoiceResponse'];
331
332
  export type InvoiceResponsePaymentStatus = components['schemas']['InvoiceResponsePaymentStatus'];
332
333
  export type InvoiceResponseStatus = components['schemas']['InvoiceResponseStatus'];
package/src/openapi.yaml CHANGED
@@ -8302,6 +8302,17 @@ components:
8302
8302
  - idn_capable
8303
8303
  title: IdnBase
8304
8304
  type: object
8305
+ InvoiceDocumentType:
8306
+ description: 'Customer-facing document class. Orthogonal to `InvoiceResponseType`:
8307
+ prepaid-credit invoices are receipts,
8308
+
8309
+ everything else billable is an invoice. Documents billing classifies as neither
8310
+ are never returned.'
8311
+ enum:
8312
+ - invoice
8313
+ - receipt
8314
+ title: InvoiceDocumentType
8315
+ type: string
8305
8316
  InvoiceResponse:
8306
8317
  properties:
8307
8318
  amount:
@@ -8312,6 +8323,9 @@ components:
8312
8323
  currency:
8313
8324
  $ref: '#/components/schemas/Currency'
8314
8325
  description: Invoice currency
8326
+ document_type:
8327
+ $ref: '#/components/schemas/InvoiceDocumentType'
8328
+ description: Customer-facing document class
8315
8329
  external_id:
8316
8330
  description: Lago ID (external) for this invoice
8317
8331
  title: External Id
@@ -8365,6 +8379,7 @@ components:
8365
8379
  - issuing_date
8366
8380
  - payment_due_date
8367
8381
  - invoice_type
8382
+ - document_type
8368
8383
  - status
8369
8384
  - payment_status
8370
8385
  - payment_overdue
@@ -15765,7 +15780,7 @@ info:
15765
15780
  \n\n"
15766
15781
  summary: OpusDNS - your gateway to a seamless domain management experience.
15767
15782
  title: OpusDNS API
15768
- version: 2026-08-26-021624
15783
+ version: 2026-08-27-083857
15769
15784
  x-logo:
15770
15785
  altText: OpusDNS API Reference
15771
15786
  url: https://d24lr4zqs1tgqh.cloudfront.net/c9505a20-5ae1-406c-b060-d392569caebf.jpg
@@ -23423,18 +23438,33 @@ paths:
23423
23438
  - domain_forwards:manage
23424
23439
  /v1/domain-search/suggest:
23425
23440
  get:
23426
- description: Get a list of domain suggestions based on a search query
23441
+ description: "Get a list of domain suggestions based on a search query.\n\n\
23442
+ Suggestions are generated and ranked by relevance rather than enumerated from\
23443
+ \ a fixed list, so the\nresults depend on the shape of `query`:\n\n- **Keyword\
23444
+ \ or phrase** (e.g. `bluewidgets`) \u2014 every result is a generated name,\
23445
+ \ and its `available`\n flag is best-effort.\n- **Full domain name** (e.g.\
23446
+ \ `bluewidgets.de`) \u2014 the queried domain is always returned as the first\n\
23447
+ \ result, with availability checked directly against the registry.\n\nUse\
23448
+ \ a full domain name, or `GET /v1/availability`, whenever you need a definitive\
23449
+ \ answer about a\nspecific domain."
23427
23450
  operationId: suggest_v1_domain_search_suggest_get
23428
23451
  parameters:
23429
- - description: The primary keyword or phrase for the domain search
23452
+ - description: The primary keyword or phrase for the domain search. A full domain
23453
+ name is always returned as the first result, with registry-checked availability.
23430
23454
  in: query
23431
23455
  name: query
23432
23456
  required: true
23433
23457
  schema:
23434
- description: The primary keyword or phrase for the domain search
23458
+ description: The primary keyword or phrase for the domain search. A full
23459
+ domain name is always returned as the first result, with registry-checked
23460
+ availability.
23435
23461
  title: Query
23436
23462
  type: string
23437
- - description: The TLDs to include in the search
23463
+ - description: 'Restricts results to these TLDs. This is a filter, not a guarantee:
23464
+ suggestions are ranked by relevance across the whole requested set, so a
23465
+ listed TLD may be absent from the results even when available names exist
23466
+ in it, and raising `limit` does not change that. To guarantee a TLD is represented,
23467
+ query it on its own.'
23438
23468
  examples:
23439
23469
  list:
23440
23470
  summary: A list of TLDs
@@ -23451,7 +23481,11 @@ paths:
23451
23481
  type: string
23452
23482
  type: array
23453
23483
  - type: 'null'
23454
- description: The TLDs to include in the search
23484
+ description: 'Restricts results to these TLDs. This is a filter, not a guarantee:
23485
+ suggestions are ranked by relevance across the whole requested set, so
23486
+ a listed TLD may be absent from the results even when available names
23487
+ exist in it, and raising `limit` does not change that. To guarantee a
23488
+ TLD is represented, query it on its own.'
23455
23489
  title: Tlds
23456
23490
  - description: The maximum number of domain suggestions to return
23457
23491
  in: query
@@ -30456,6 +30490,61 @@ paths:
30456
30490
  - organization
30457
30491
  x-required-permissions:
30458
30492
  - billing:manage
30493
+ /v1/organizations/{organization_id}/billing/receipts:
30494
+ get:
30495
+ description: Retrieves a paginated list of all payment receipts for the organization
30496
+ operationId: list_receipts_v1_organizations__organization_id__billing_receipts_get
30497
+ parameters:
30498
+ - in: path
30499
+ name: organization_id
30500
+ required: true
30501
+ schema:
30502
+ examples:
30503
+ - organization_01h45ytscbebyvny4gc8cr8ma2
30504
+ format: typeid
30505
+ pattern: ^organization_[0-7][0-9a-hjkmnpq-tv-z]{25}$
30506
+ title: Organization Id
30507
+ type: string
30508
+ x-typeid-prefix: organization
30509
+ - in: query
30510
+ name: page
30511
+ required: false
30512
+ schema:
30513
+ default: 1
30514
+ minimum: 1
30515
+ title: Page
30516
+ type: integer
30517
+ - in: query
30518
+ name: page_size
30519
+ required: false
30520
+ schema:
30521
+ default: 10
30522
+ maximum: 1000
30523
+ minimum: 1
30524
+ title: Page Size
30525
+ type: integer
30526
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
30527
+ responses:
30528
+ '200':
30529
+ content:
30530
+ application/json:
30531
+ schema:
30532
+ $ref: '#/components/schemas/Pagination_InvoiceResponse_'
30533
+ description: Successful Response
30534
+ '422':
30535
+ content:
30536
+ application/problem+json:
30537
+ schema:
30538
+ $ref: '#/components/schemas/HTTPValidationError'
30539
+ description: Validation Error
30540
+ security:
30541
+ - OAuth2PasswordBearer: []
30542
+ - APIKeyHeader: []
30543
+ summary: List all payment receipts for the organization
30544
+ tags:
30545
+ - organization
30546
+ x-required-permissions:
30547
+ - billing:manage
30459
30548
  /v1/organizations/{organization_id}/pricing/product-type/{product_type}:
30460
30549
  get:
30461
30550
  description: Retrieves pricing data for a specific product type. If a product
@@ -33664,9 +33753,33 @@ tags:
33664
33753
  - description: ''
33665
33754
  name: domain_tld_specific
33666
33755
  x-displayName: TLD specific domain management
33667
- - description: 'Endpoints for searching domains.
33668
-
33669
- '
33756
+ - description: "Endpoints for searching domains.\n\n### Keyword queries vs. full domain\
33757
+ \ names\n\n`GET /v1/domain-search/suggest` behaves differently depending on the\
33758
+ \ shape of the `query` value:\n\n- **Keyword or phrase** (e.g. `bluewidgets`)\
33759
+ \ \u2014 every result is a name produced by our suggestion engine, which generates\
33760
+ \ candidates and ranks them by relevance. No particular name is guaranteed to\
33761
+ \ appear.\n- **Full domain name** (e.g. `bluewidgets.de`) \u2014 the queried domain\
33762
+ \ is always returned as the first result, and its availability is checked directly\
33763
+ \ against the registry rather than coming from the suggestion engine.\n\nUse a\
33764
+ \ full domain name whenever you need a definitive answer about one specific domain.\
33765
+ \ To check several specific domains at once, use `GET /v1/availability` instead.\n\
33766
+ \n### `tlds` restricts results, it does not guarantee them\n\nThe `tlds` parameter\
33767
+ \ is a filter: results are limited to the TLDs you list, but a TLD you list may\
33768
+ \ still be absent from the response. Suggestions are ranked by relevance across\
33769
+ \ the whole requested set, so a keyword whose strongest candidates are `.com`/`.net`/`.org`\
33770
+ \ names can return no `.de` results even though available `.de` names exist for\
33771
+ \ that keyword.\n\nThis is consistent for a given keyword rather than random \u2014\
33772
+ \ the same query returns the same TLD mix each time \u2014 and raising `limit`\
33773
+ \ does not change it.\n\nTo guarantee that a TLD is represented, query it on its\
33774
+ \ own:\n\n```\nGET /v1/domain-search/suggest?query=bluewidgets&tlds=de&limit=5\n\
33775
+ ```\n\nIssuing one request per TLD is the reliable way to build a per-TLD view\
33776
+ \ in a search interface.\n\n### Availability of suggestions\n\nThe `available`\
33777
+ \ flag on a generated suggestion is best-effort. Our suggestion engine's data\
33778
+ \ is not authoritative for every TLD, and it is less accurate for some ccTLDs,\
33779
+ \ so a suggestion can occasionally be shown as available when it is not.\n\nAvailability\
33780
+ \ is authoritative in two cases: when the query is a full domain name (the first\
33781
+ \ result), and for domains checked via `GET /v1/availability`. Always confirm\
33782
+ \ with one of those before presenting a domain as purchasable.\n"
33670
33783
  name: domain_search
33671
33784
  x-displayName: Domain search
33672
33785
  - description: "Endpoints for managing host objects (nameserver glue records).\n\n\
package/src/schema.d.ts CHANGED
@@ -1063,7 +1063,18 @@ export interface paths {
1063
1063
  };
1064
1064
  /**
1065
1065
  * Suggest domains
1066
- * @description Get a list of domain suggestions based on a search query
1066
+ * @description Get a list of domain suggestions based on a search query.
1067
+ *
1068
+ * Suggestions are generated and ranked by relevance rather than enumerated from a fixed list, so the
1069
+ * results depend on the shape of `query`:
1070
+ *
1071
+ * - **Keyword or phrase** (e.g. `bluewidgets`) — every result is a generated name, and its `available`
1072
+ * flag is best-effort.
1073
+ * - **Full domain name** (e.g. `bluewidgets.de`) — the queried domain is always returned as the first
1074
+ * result, with availability checked directly against the registry.
1075
+ *
1076
+ * Use a full domain name, or `GET /v1/availability`, whenever you need a definitive answer about a
1077
+ * specific domain.
1067
1078
  */
1068
1079
  get: operations["suggest_v1_domain_search_suggest_get"];
1069
1080
  put?: never;
@@ -2293,6 +2304,26 @@ export interface paths {
2293
2304
  patch?: never;
2294
2305
  trace?: never;
2295
2306
  };
2307
+ "/v1/organizations/{organization_id}/billing/receipts": {
2308
+ parameters: {
2309
+ query?: never;
2310
+ header?: never;
2311
+ path?: never;
2312
+ cookie?: never;
2313
+ };
2314
+ /**
2315
+ * List all payment receipts for the organization
2316
+ * @description Retrieves a paginated list of all payment receipts for the organization
2317
+ */
2318
+ get: operations["list_receipts_v1_organizations__organization_id__billing_receipts_get"];
2319
+ put?: never;
2320
+ post?: never;
2321
+ delete?: never;
2322
+ options?: never;
2323
+ head?: never;
2324
+ patch?: never;
2325
+ trace?: never;
2326
+ };
2296
2327
  "/v1/organizations/{organization_id}/pricing/product-type/{product_type}": {
2297
2328
  parameters: {
2298
2329
  query?: never;
@@ -8460,6 +8491,13 @@ export interface components {
8460
8491
  */
8461
8492
  idn_tables?: string[] | null;
8462
8493
  };
8494
+ /**
8495
+ * InvoiceDocumentType
8496
+ * @description Customer-facing document class. Orthogonal to `InvoiceResponseType`: prepaid-credit invoices are receipts,
8497
+ * everything else billable is an invoice. Documents billing classifies as neither are never returned.
8498
+ * @enum {string}
8499
+ */
8500
+ InvoiceDocumentType: "invoice" | "receipt";
8463
8501
  /** InvoiceResponse */
8464
8502
  InvoiceResponse: {
8465
8503
  /**
@@ -8469,6 +8507,8 @@ export interface components {
8469
8507
  amount: string;
8470
8508
  /** @description Invoice currency */
8471
8509
  currency: components["schemas"]["Currency"];
8510
+ /** @description Customer-facing document class */
8511
+ document_type: components["schemas"]["InvoiceDocumentType"];
8472
8512
  /**
8473
8513
  * External Id
8474
8514
  * @description Lago ID (external) for this invoice
@@ -19178,9 +19218,9 @@ export interface operations {
19178
19218
  suggest_v1_domain_search_suggest_get: {
19179
19219
  parameters: {
19180
19220
  query: {
19181
- /** @description The primary keyword or phrase for the domain search */
19221
+ /** @description The primary keyword or phrase for the domain search. A full domain name is always returned as the first result, with registry-checked availability. */
19182
19222
  query: string;
19183
- /** @description The TLDs to include in the search */
19223
+ /** @description Restricts results to these TLDs. This is a filter, not a guarantee: suggestions are ranked by relevance across the whole requested set, so a listed TLD may be absent from the results even when available names exist in it, and raising `limit` does not change that. To guarantee a TLD is represented, query it on its own. */
19184
19224
  tlds?: string[] | null;
19185
19225
  /** @description The maximum number of domain suggestions to return */
19186
19226
  limit?: number | null;
@@ -25181,6 +25221,46 @@ export interface operations {
25181
25221
  };
25182
25222
  };
25183
25223
  };
25224
+ list_receipts_v1_organizations__organization_id__billing_receipts_get: {
25225
+ parameters: {
25226
+ query?: {
25227
+ page?: number;
25228
+ page_size?: number;
25229
+ };
25230
+ header?: {
25231
+ /**
25232
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
25233
+ * @example rfc3339
25234
+ */
25235
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
25236
+ };
25237
+ path: {
25238
+ organization_id: TypeId<"organization">;
25239
+ };
25240
+ cookie?: never;
25241
+ };
25242
+ requestBody?: never;
25243
+ responses: {
25244
+ /** @description Successful Response */
25245
+ 200: {
25246
+ headers: {
25247
+ [name: string]: unknown;
25248
+ };
25249
+ content: {
25250
+ "application/json": components["schemas"]["Pagination_InvoiceResponse_"];
25251
+ };
25252
+ };
25253
+ /** @description Validation Error */
25254
+ 422: {
25255
+ headers: {
25256
+ [name: string]: unknown;
25257
+ };
25258
+ content: {
25259
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
25260
+ };
25261
+ };
25262
+ };
25263
+ };
25184
25264
  get_pricing_plans_v1_organizations__organization_id__pricing_product_type__product_type__get: {
25185
25265
  parameters: {
25186
25266
  query?: {