Repository navigation
fix(api-catalog): resync spec drift with the latest Domains, Customers and Bulk Operations APIs - #321
Merged
Merged
Conversation
…s and Bulk Operations APIs
- The `api` catalog now lists the Customer GraphQL endpoint
(`POST /stores/{storeId}/customer-subgraph`) in place of the REST customer
operations. Scripts that call the removed customer endpoints with
`gddy api call` need to move to the GraphQL endpoint.
- Bulk operations: cancelling is now
`POST /stores/{storeId}/bulk-operations/{id}/cancelations`; the DELETE route is
listed as deprecated.
- Domains: the catalog lists the new batch registration operations and the
profile-schema lookup, which replaces the registration-schema lookup. The CLI
does not use these yet.
- `domain quote` now always reports the registration `period` and `periodLabel`.
- Orders payment status includes `UNPAID`, and the catalog GraphQL API lists new
list, price and SKU group filters.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
jpage-godaddy
requested review from
apetrovic-godaddy,
axburgess-godaddy,
jhenderson1-godaddy,
jpearlman-godaddy,
mguerrero3-godaddy,
qcai-godaddy,
rts1-godaddy and
sswaminathan-godaddy
as code owners
October 13, 2026 02:18
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved relative Shopping references can still be silently discarded, and omitted domain quote periods can be misreported and cached as one year.
2 open findings
What changed in this PR
Resynchronizes API catalogs and generated clients with current upstream contracts while adapting domain and shopping CLI flows.
Changes:
- Adds
$id-based reference resolution and collision-safe schema generation. - Refreshes Domains, Customers, Shopping, Bulk Operations, Orders, Catalog, and Hosting specifications.
- Updates checkout agreements and domain quote/purchase models.
| File | Description |
|---|---|
rust/tools/generate-api-catalog/src/shopping_spec.rs |
Updates Shopping normalization and validation. |
rust/tools/generate-api-catalog/src/ref_paths.rs |
Adds schema path and $id resolution. |
rust/tools/generate-api-catalog/src/main.rs |
Registers the new path module. |
rust/tools/generate-api-catalog/src/dereference.rs |
Handles namesakes, absolute references, and deeper chains. |
rust/src/shopping/product_actions.rs |
Uses the shared checkout alias. |
rust/src/shopping/common.rs |
Adopts the updated checkout type. |
rust/src/shopping/client.rs |
Maps new checkout response variants. |
rust/src/shopping/checkout/update.rs |
Uses the shared checkout model. |
rust/src/shopping/checkout/get.rs |
Uses the shared checkout model. |
rust/src/shopping/checkout/complete.rs |
Uses upstream agreement and consent types. |
rust/src/domain/quote.rs |
Adapts profile and period handling. |
rust/src/domain/quote_cache.rs |
Updates profile terminology. |
rust/src/domain/purchase.rs |
Deserializes the renamed profile type. |
rust/src/domain/contacts_file.rs |
Initializes contact metadata. |
rust/shopping-client/openapi/shopping.oas3.json |
Refreshes the Shopping client contract. |
rust/schemas/api/orders.json |
Adds the UNPAID payment status. |
rust/schemas/api/manifest.json |
Updates catalog metadata and counts. |
rust/schemas/api/hosting.json |
Updates the Hosting API title. |
rust/schemas/api/bulk-operations.json |
Adds the replacement cancellation route and response models. |
rust/hosting-client/openapi/hosting.oas3.json |
Updates the generated Hosting title. |
rust/domains-client/openapi/domains.oas3.json |
Adds profile schemas and batch registration contracts. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…hema reference The Shopping refresh now checks for unresolved `$ref`s before relative references are normalized, so a missing or moved upstream schema file stops the refresh instead of silently weakening a generated type. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
jhenderson1-godaddy
approved these changes
Oct 13, 2026
jhenderson1-godaddy
left a comment
Collaborator
There was a problem hiding this comment.
Looks fine from a hosting perspective.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Resyncs the embedded API catalog and the generated clients with the latest upstream specs, which the weekly catalog drift run reported as out of date (https://github.com/godaddy/cli/actions/runs/38304412764). The drift run was failing outright because the Shopping spec now uses dated, absolute schema URLs that the generator could not resolve; that is fixed here too.
What changes for users
gddy apicatalog: the Customers REST API (9 operations) is replaced by the Customer GraphQL API (POST /stores/{storeId}/customer-subgraph). Scripts calling the removed customer endpoints withgddy api callmust move to the GraphQL endpoint.POST …/bulk-operations/{id}/cancelations; theDELETEroute is listed as deprecated.getProfileSchema(which replacesgetRegistrationSchema).gddy domaindoes not use them yet.domain quote: always reportsperiodandperiodLabel.PaymentStatusgainsUNPAID; the catalog GraphQL API gains list, price and SKU group filters; hosting's title is now "Hosted Application Lifecycle Management API".Notes for reviewers
Generator (
rust/tools/generate-api-catalog)$refs by the$idof the file that declares them (newref_paths.rs; also moves path helpers out ofdereference.rs, which was over the 1000-line limit).$defskeys still follow file names.$defskeys with the parent directory when two schema files share a name but declare different$ids. Without itproduct-metadata/baseandvariant-metadata/base(andhosting, and the twofulfillment.jsonfiles) silently shared one definition. Other specs keep their existing keys.relaxno longer deletes a property that is namedrequired/format/pattern, and dropsanyOf/oneOfcombinators that only expressed "one of these fields is required". This gives upstream's agreement type itsrequiredflag and a plain struct shape.checkout_with_agreement_input. The CLI's ownshopping_required_agreement/shopping_consent_acceptanceschemas and theadd_completion_consentpatch are removed in favour of upstream's nativerequired_agreementsandconsent.CLI
Checkoutalias (shopping/client.rs) for the upstream response struct. The agreement gate and completion consent behave as before; tests cover decoding a response with therequiredflag and the serialized consent.InlineRegistrationProfile→Profile(same JSON shape, so cached quotes still read), emptyContact.metadata, andperiodhandling for its new non-optional type. The quote cache stores the requested period.Verification
cargo check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspace,cargo fmt --checkandcheck-module-size.shpass. Re-runninggenerate-api-catalogagainst the live spec repos reproduces the committed files (only the manifest timestamp differs). I also compared raw and typed catalog responses against production for the Shopping search.Not verified
profile-schemas,registration-batches,registration-quote-batches) returned a bare 404 in dev, test and prod, so the spec appears to be ahead of the deployment. Nothing in the CLI depends on them.shopping checkout getbefore release.Follow-ups filed
DEVEX-1268 (batch domain registration), DEVEX-1269 (profile schema and
contacts.toml), DEVEX-1270 (product agreementsrequiredflag; resolved by this PR), DEVEX-1271 (show product agreements), DEVEX-1272 (shopping guide wording), DEVEX-1274 (JSON output drops open-object properties), DEVEX-1275 (render product metadata), DEVEX-1276 (default purchase option marker), DEVEX-1277 (checkout getnext action).🤖 Generated with Claude Code