@opusdns/api 1.137.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/openapi.yaml +52 -9
- package/src/schema.d.ts +14 -3
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/openapi.yaml
CHANGED
|
@@ -15765,7 +15765,7 @@ info:
|
|
|
15765
15765
|
\n\n"
|
|
15766
15766
|
summary: OpusDNS - your gateway to a seamless domain management experience.
|
|
15767
15767
|
title: OpusDNS API
|
|
15768
|
-
version: 2026-08-26-
|
|
15768
|
+
version: 2026-08-26-165903
|
|
15769
15769
|
x-logo:
|
|
15770
15770
|
altText: OpusDNS API Reference
|
|
15771
15771
|
url: https://d24lr4zqs1tgqh.cloudfront.net/c9505a20-5ae1-406c-b060-d392569caebf.jpg
|
|
@@ -23423,18 +23423,33 @@ paths:
|
|
|
23423
23423
|
- domain_forwards:manage
|
|
23424
23424
|
/v1/domain-search/suggest:
|
|
23425
23425
|
get:
|
|
23426
|
-
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."
|
|
23427
23435
|
operationId: suggest_v1_domain_search_suggest_get
|
|
23428
23436
|
parameters:
|
|
23429
|
-
- 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.
|
|
23430
23439
|
in: query
|
|
23431
23440
|
name: query
|
|
23432
23441
|
required: true
|
|
23433
23442
|
schema:
|
|
23434
|
-
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.
|
|
23435
23446
|
title: Query
|
|
23436
23447
|
type: string
|
|
23437
|
-
- 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.'
|
|
23438
23453
|
examples:
|
|
23439
23454
|
list:
|
|
23440
23455
|
summary: A list of TLDs
|
|
@@ -23451,7 +23466,11 @@ paths:
|
|
|
23451
23466
|
type: string
|
|
23452
23467
|
type: array
|
|
23453
23468
|
- type: 'null'
|
|
23454
|
-
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.'
|
|
23455
23474
|
title: Tlds
|
|
23456
23475
|
- description: The maximum number of domain suggestions to return
|
|
23457
23476
|
in: query
|
|
@@ -33664,9 +33683,33 @@ tags:
|
|
|
33664
33683
|
- description: ''
|
|
33665
33684
|
name: domain_tld_specific
|
|
33666
33685
|
x-displayName: TLD specific domain management
|
|
33667
|
-
- description:
|
|
33668
|
-
|
|
33669
|
-
|
|
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"
|
|
33670
33713
|
name: domain_search
|
|
33671
33714
|
x-displayName: Domain search
|
|
33672
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;
|
|
@@ -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;
|