@opusdns/api 1.136.0 → 1.138.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 +55 -20
- package/package.json +1 -1
- package/src/helpers/constants.ts +2 -0
- package/src/openapi.yaml +53 -9
- package/src/schema.d.ts +15 -4
package/README.md
CHANGED
|
@@ -61,34 +61,69 @@ import {
|
|
|
61
61
|
|
|
62
62
|
## Documentation
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
package/src/helpers/constants.ts
CHANGED
|
@@ -1769,6 +1769,7 @@ export const REGISTRY_SERVICE_BACKEND = {
|
|
|
1769
1769
|
RYCE: "ryce",
|
|
1770
1770
|
COCCA: "cocca",
|
|
1771
1771
|
AMAZON: "amazon",
|
|
1772
|
+
TANGO: "tango",
|
|
1772
1773
|
} as const satisfies Record<string, RegistryServiceBackend>;
|
|
1773
1774
|
|
|
1774
1775
|
export const REGISTRY_SERVICE_BACKEND_VALUES = [
|
|
@@ -1832,6 +1833,7 @@ export const REGISTRY_SERVICE_BACKEND_VALUES = [
|
|
|
1832
1833
|
'ryce',
|
|
1833
1834
|
'cocca',
|
|
1834
1835
|
'amazon',
|
|
1836
|
+
'tango',
|
|
1835
1837
|
] as const satisfies ReadonlyArray<RegistryServiceBackend>;
|
|
1836
1838
|
|
|
1837
1839
|
export const RENEWAL_MODE = {
|
package/src/openapi.yaml
CHANGED
|
@@ -12595,6 +12595,7 @@ components:
|
|
|
12595
12595
|
- ryce
|
|
12596
12596
|
- cocca
|
|
12597
12597
|
- amazon
|
|
12598
|
+
- tango
|
|
12598
12599
|
title: RegistryServiceBackend
|
|
12599
12600
|
type: string
|
|
12600
12601
|
RenewalMode:
|
|
@@ -15764,7 +15765,7 @@ info:
|
|
|
15764
15765
|
\n\n"
|
|
15765
15766
|
summary: OpusDNS - your gateway to a seamless domain management experience.
|
|
15766
15767
|
title: OpusDNS API
|
|
15767
|
-
version: 2026-08-
|
|
15768
|
+
version: 2026-08-26-165903
|
|
15768
15769
|
x-logo:
|
|
15769
15770
|
altText: OpusDNS API Reference
|
|
15770
15771
|
url: https://d24lr4zqs1tgqh.cloudfront.net/c9505a20-5ae1-406c-b060-d392569caebf.jpg
|
|
@@ -23422,18 +23423,33 @@ paths:
|
|
|
23422
23423
|
- domain_forwards:manage
|
|
23423
23424
|
/v1/domain-search/suggest:
|
|
23424
23425
|
get:
|
|
23425
|
-
description: Get a list of domain suggestions based on a search query
|
|
23426
|
+
description: "Get a list of domain suggestions based on a search query.\n\n\
|
|
23427
|
+
Suggestions are generated and ranked by relevance rather than enumerated from\
|
|
23428
|
+
\ a fixed list, so the\nresults depend on the shape of `query`:\n\n- **Keyword\
|
|
23429
|
+
\ or phrase** (e.g. `bluewidgets`) \u2014 every result is a generated name,\
|
|
23430
|
+
\ and its `available`\n flag is best-effort.\n- **Full domain name** (e.g.\
|
|
23431
|
+
\ `bluewidgets.de`) \u2014 the queried domain is always returned as the first\n\
|
|
23432
|
+
\ result, with availability checked directly against the registry.\n\nUse\
|
|
23433
|
+
\ a full domain name, or `GET /v1/availability`, whenever you need a definitive\
|
|
23434
|
+
\ answer about a\nspecific domain."
|
|
23426
23435
|
operationId: suggest_v1_domain_search_suggest_get
|
|
23427
23436
|
parameters:
|
|
23428
|
-
- description: The primary keyword or phrase for the domain search
|
|
23437
|
+
- description: The primary keyword or phrase for the domain search. A full domain
|
|
23438
|
+
name is always returned as the first result, with registry-checked availability.
|
|
23429
23439
|
in: query
|
|
23430
23440
|
name: query
|
|
23431
23441
|
required: true
|
|
23432
23442
|
schema:
|
|
23433
|
-
description: The primary keyword or phrase for the domain search
|
|
23443
|
+
description: The primary keyword or phrase for the domain search. A full
|
|
23444
|
+
domain name is always returned as the first result, with registry-checked
|
|
23445
|
+
availability.
|
|
23434
23446
|
title: Query
|
|
23435
23447
|
type: string
|
|
23436
|
-
- description:
|
|
23448
|
+
- description: 'Restricts results to these TLDs. This is a filter, not a guarantee:
|
|
23449
|
+
suggestions are ranked by relevance across the whole requested set, so a
|
|
23450
|
+
listed TLD may be absent from the results even when available names exist
|
|
23451
|
+
in it, and raising `limit` does not change that. To guarantee a TLD is represented,
|
|
23452
|
+
query it on its own.'
|
|
23437
23453
|
examples:
|
|
23438
23454
|
list:
|
|
23439
23455
|
summary: A list of TLDs
|
|
@@ -23450,7 +23466,11 @@ paths:
|
|
|
23450
23466
|
type: string
|
|
23451
23467
|
type: array
|
|
23452
23468
|
- type: 'null'
|
|
23453
|
-
description:
|
|
23469
|
+
description: 'Restricts results to these TLDs. This is a filter, not a guarantee:
|
|
23470
|
+
suggestions are ranked by relevance across the whole requested set, so
|
|
23471
|
+
a listed TLD may be absent from the results even when available names
|
|
23472
|
+
exist in it, and raising `limit` does not change that. To guarantee a
|
|
23473
|
+
TLD is represented, query it on its own.'
|
|
23454
23474
|
title: Tlds
|
|
23455
23475
|
- description: The maximum number of domain suggestions to return
|
|
23456
23476
|
in: query
|
|
@@ -33663,9 +33683,33 @@ tags:
|
|
|
33663
33683
|
- description: ''
|
|
33664
33684
|
name: domain_tld_specific
|
|
33665
33685
|
x-displayName: TLD specific domain management
|
|
33666
|
-
- description:
|
|
33667
|
-
|
|
33668
|
-
|
|
33686
|
+
- description: "Endpoints for searching domains.\n\n### Keyword queries vs. full domain\
|
|
33687
|
+
\ names\n\n`GET /v1/domain-search/suggest` behaves differently depending on the\
|
|
33688
|
+
\ shape of the `query` value:\n\n- **Keyword or phrase** (e.g. `bluewidgets`)\
|
|
33689
|
+
\ \u2014 every result is a name produced by our suggestion engine, which generates\
|
|
33690
|
+
\ candidates and ranks them by relevance. No particular name is guaranteed to\
|
|
33691
|
+
\ appear.\n- **Full domain name** (e.g. `bluewidgets.de`) \u2014 the queried domain\
|
|
33692
|
+
\ is always returned as the first result, and its availability is checked directly\
|
|
33693
|
+
\ against the registry rather than coming from the suggestion engine.\n\nUse a\
|
|
33694
|
+
\ full domain name whenever you need a definitive answer about one specific domain.\
|
|
33695
|
+
\ To check several specific domains at once, use `GET /v1/availability` instead.\n\
|
|
33696
|
+
\n### `tlds` restricts results, it does not guarantee them\n\nThe `tlds` parameter\
|
|
33697
|
+
\ is a filter: results are limited to the TLDs you list, but a TLD you list may\
|
|
33698
|
+
\ still be absent from the response. Suggestions are ranked by relevance across\
|
|
33699
|
+
\ the whole requested set, so a keyword whose strongest candidates are `.com`/`.net`/`.org`\
|
|
33700
|
+
\ names can return no `.de` results even though available `.de` names exist for\
|
|
33701
|
+
\ that keyword.\n\nThis is consistent for a given keyword rather than random \u2014\
|
|
33702
|
+
\ the same query returns the same TLD mix each time \u2014 and raising `limit`\
|
|
33703
|
+
\ does not change it.\n\nTo guarantee that a TLD is represented, query it on its\
|
|
33704
|
+
\ own:\n\n```\nGET /v1/domain-search/suggest?query=bluewidgets&tlds=de&limit=5\n\
|
|
33705
|
+
```\n\nIssuing one request per TLD is the reliable way to build a per-TLD view\
|
|
33706
|
+
\ in a search interface.\n\n### Availability of suggestions\n\nThe `available`\
|
|
33707
|
+
\ flag on a generated suggestion is best-effort. Our suggestion engine's data\
|
|
33708
|
+
\ is not authoritative for every TLD, and it is less accurate for some ccTLDs,\
|
|
33709
|
+
\ so a suggestion can occasionally be shown as available when it is not.\n\nAvailability\
|
|
33710
|
+
\ is authoritative in two cases: when the query is a full domain name (the first\
|
|
33711
|
+
\ result), and for domains checked via `GET /v1/availability`. Always confirm\
|
|
33712
|
+
\ with one of those before presenting a domain as purchasable.\n"
|
|
33669
33713
|
name: domain_search
|
|
33670
33714
|
x-displayName: Domain search
|
|
33671
33715
|
- 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;
|
|
@@ -11176,7 +11187,7 @@ export interface components {
|
|
|
11176
11187
|
* RegistryServiceBackend
|
|
11177
11188
|
* @enum {string}
|
|
11178
11189
|
*/
|
|
11179
|
-
RegistryServiceBackend: "afnic" | "centralnic" | "cira" | "switch" | "nicat" | "verisign" | "pir" | "gmo" | "google" | "denic" | "identity_digital" | "godaddy" | "dns_belgium" | "eurid" | "rotld" | "nominet_uk" | "radix" | "sidn" | "sidn_hello" | "tucows" | "dot_ua" | "nic_it" | "dns_lu" | "restena_lu" | "cz_nic" | "ras_manual" | "ras_external" | "register_si" | "sk_nic" | "dot_blog" | "nic_lv" | "domreg_lt" | "nor_id" | "website_ws" | "dns_pt" | "punktum_dk" | "nic_mexico" | "internet_ee" | "channel_isles" | "registry_se" | "nask" | "dns_belgium_gtld" | "nominet_dragon" | "red_es" | "internet_nz" | "zacr" | "traficom" | "ie_registry" | "nic_im" | "cn_nic" | "forth" | "dns_hr" | "nixi" | "is_nic" | "sg_nic" | "ke_nic" | "tld_box" | "ryce" | "cocca" | "amazon";
|
|
11190
|
+
RegistryServiceBackend: "afnic" | "centralnic" | "cira" | "switch" | "nicat" | "verisign" | "pir" | "gmo" | "google" | "denic" | "identity_digital" | "godaddy" | "dns_belgium" | "eurid" | "rotld" | "nominet_uk" | "radix" | "sidn" | "sidn_hello" | "tucows" | "dot_ua" | "nic_it" | "dns_lu" | "restena_lu" | "cz_nic" | "ras_manual" | "ras_external" | "register_si" | "sk_nic" | "dot_blog" | "nic_lv" | "domreg_lt" | "nor_id" | "website_ws" | "dns_pt" | "punktum_dk" | "nic_mexico" | "internet_ee" | "channel_isles" | "registry_se" | "nask" | "dns_belgium_gtld" | "nominet_dragon" | "red_es" | "internet_nz" | "zacr" | "traficom" | "ie_registry" | "nic_im" | "cn_nic" | "forth" | "dns_hr" | "nixi" | "is_nic" | "sg_nic" | "ke_nic" | "tld_box" | "ryce" | "cocca" | "amazon" | "tango";
|
|
11180
11191
|
/**
|
|
11181
11192
|
* RenewalMode
|
|
11182
11193
|
* @enum {string}
|
|
@@ -19178,9 +19189,9 @@ export interface operations {
|
|
|
19178
19189
|
suggest_v1_domain_search_suggest_get: {
|
|
19179
19190
|
parameters: {
|
|
19180
19191
|
query: {
|
|
19181
|
-
/** @description The primary keyword or phrase for the domain search */
|
|
19192
|
+
/** @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
19193
|
query: string;
|
|
19183
|
-
/** @description
|
|
19194
|
+
/** @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
19195
|
tlds?: string[] | null;
|
|
19185
19196
|
/** @description The maximum number of domain suggestions to return */
|
|
19186
19197
|
limit?: number | null;
|