# About the Auctions API (https://developer.godaddy.com/en/docs/api-users/auctions) *** title: About the Auctions API description: How the Auctions API is structured, what it covers, and how the core resources relate to each other. keywords: customerId MY alias, listingId, paymentProfileId, bidId, 207 multi-status, micro-units, sso-key legacy API key, expiring auction, closeout auction, Buy Now aftermarket, domain lifecycle day 26-41 related: concepts: * title: "How GoDaddy APIs work" href: "/docs/api-users/concepts/how-godaddy-apis-work" guides: * title: "Buy a closeout auction via instant purchase" href: "/docs/api-users/buy-a-domain/instant-purchase" * title: "Place bids on expiring auctions" href: "/docs/api-users/buy-a-domain/bidding" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" *** ## Overview The Auctions API covers two ways to acquire expiring domains on the GoDaddy platform: bidding on expiring auctions and instant purchase of closeouts (Buy Now) auctions at a fixed price. Both capabilities use v1 endpoints and require a `customerId` path parameter. You can use the `MY` alias to target the authenticated customer's own account. Personal Access Tokens (PAT) aren't supported for Auctions API endpoints. Use a [legacy API key](https://classic-developer.godaddy.com/keys) and pass it as `Authorization: sso-key $GODADDY_API_KEY`. Go to [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) and follow the Classic Developer Key tab. ## How the API is structured The following sections describe how the Auctions API is structured. ### Single version namespace All endpoints are located under `/v1/customers/{customerId}/...`. Authenticate with a [legacy API key](https://classic-developer.godaddy.com/keys) and pass the customer's ID (or `MY`) in the path. ### Your customer ID The `customerId` path parameter is a UUID. It's different from the shorter numeric GoDaddy shopper ID. For most integrations, pass `MY` and the API resolves it to your authenticated account automatically. If you need the UUID explicitly (for example, to store or display it) call the Shoppers API: ```bash curl -s "https://api.godaddy.com/v1/shoppers/MY?includes=customerId" \ -H "Authorization: sso-key $GODADDY_API_KEY" ``` The `customerId` field in the response is your UUID. If you manage another account (reseller use case), replace `MY` with that account's numeric GoDaddy shopper ID (up to 10 digits). The account holder can find their shopper ID in their GoDaddy account settings. ```bash curl -s "https://api.godaddy.com/v1/shoppers/{shopperId}?includes=customerId" \ -H "Authorization: sso-key $GODADDY_API_KEY" ``` ### 207 partial success Both the bidding and instant purchase endpoints accept arrays of items and process each independently. When some items succeed and others fail, the API returns `207 Multi-Status`, not a 4xx error. Inspect each item's `status` field individually: * `status: "SUCCESS"`: the item was processed successfully * `status: "FAILED"`: check `failureReason` for the machine-readable cause A 200 means every item in the array succeeded. A 207 means at least one failed. Failed items are safe to retry. Don't re-submit items that already returned `SUCCESS`. ### Pricing in micro-units All monetary amounts are integers in micro-units (amount × 10⁶). For USD: | Micro-units | Dollar amount | | ----------- | ------------- | | `50000000` | $50.00 | | `61990000` | $61.99 | | `100000000` | $100.00 | Divide by `1,000,000` to get the human-readable price. ## Core resources The following sections describe the core resources of the Auctions API. ### Listing An auctions listing represents a domain available for purchase on the GoDaddy Auctions marketplace. Listings have a `listingId` (integer) used when placing bids, and a `domainName` used for instant purchase and availability checks. ### Payment profile A payment profile is a saved payment method eligible for API-initiated purchases. Only `ACTIVE` profiles are returned by `GET /v1/customers/{customerId}/paymentProfiles`. Credit cards and prepaid methods are supported. ### Bid A bid is a price offer placed on an expiring auction listing. Bid amounts are in USD micro-units. The response indicates whether you're the highest bidder and provides a `bidId` for tracking. ### Purchase A purchase represents a completed instant purchase transaction. The response includes an `orderId` and per-domain results. `totalPrice` is the amount charged, in micro-units. ## Lifecycle of an expiring domain Most auctions listings aren't deliberate seller listings — they're domains that lapsed through GoDaddy's or a partner registrar's standard expiration process. Where a domain sits in that timeline determines which capability applies: bidding while it's an expiring auction, instant purchase once it moves to a closeout (Buy Now). The following diagram shows that path: | Phase | Timing | What it means for this API | | -------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Grace period | Day 0–18 | Not listed. Domain isn't reachable through Auctions yet. | | Redemption period | Day 18–26 | Still not listed. The original owner can recover it directly, outside this API. | | Expiring Auction | Day 26–36 | The domain gets a `listingId` and becomes visible to [Check listing availability](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding#check-listing-availability). Use [bidding](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding) to compete for it. | | Closeout Auction | Day 36–41 | If nobody bid on the expiring auction, the listing becomes a closeout auction. Use [instant purchase](https://developer.godaddy.com/docs/api-users/buy-a-domain/instant-purchase) to buy it outright. | | Removed from account | Day 72 | Point of no return for the original owner. The registry eventually releases the domain for new registration outside Auctions. | These day counts follow GoDaddy's general gTLD expiration policy. ccTLDs and some other TLDs run different timelines. Go to [the domain lifecycle](https://developer.godaddy.com/docs/api-users/domains/concepts#the-domain-lifecycle) for the broader (non-auction) picture, and GoDaddy's [standard domain expiration timeline](https://www.godaddy.com/help/standard-domain-expiration-timeline-609) for the full day-by-day breakdown. For domains that lapsed directly with GoDaddy, the original owner loses the ability to redeem at Day 30. For domains that came through a partner registrar, that cutoff depends on GoDaddy's contractual agreement with that registrar. Redemption might still be possible past Day 30. Either way, a `listingId` from an earlier availability check isn't guaranteed to still be valid. Re-check availability before bidding if time has passed, and treat a `LISTING_NOT_FOUND` error the same way you'd treat any other retryable [207 failure](#207-partial-success). GoDaddy Auctions Inventory Files are downloadable datasets (ZIP, XML, and JSON) containing bulk information on live expired auctions and closeout listings. Use them to identify and analyze domains before placing bids or making purchases through the API. Go to the [Auctions Inventory page](https://inventory.auctions.godaddy.com/) to download Inventory Files. ## Bidding vs. instant purchase The following table compares bidding and instant purchase: | | Bidding | Instant purchase | | ------------ | ------------------------------------------------- | ------------------------------------------------------------------ | | Auction type | Open English auction | Closeout (Buy Now fixed-price) | | Outcome | Win or lose at auction close | Immediate, domain fulfills on success | | Price | Your bid in USD micro-units | All-in total: auction price + renewal/transfer + ICANN fee + taxes | | Payment | Charged on auction win | Charged at time of purchase | | Reversible | Not reversible, charges are due if auction is won | Not reversible, charges are immediate | ## Operations by task The following table lists the operations by task: | Task | Endpoint | Workflow | | -------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | | Check listing availability | `POST /v1/customers/{customerId}/aftermarket/listings/available` | [Place bids](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding) | | Place bids | `POST /v1/customers/{customerId}/aftermarket/listings/bids` | [Place bids](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding) | | Get eligible payment profiles | `GET /v1/customers/{customerId}/paymentProfiles` | [Buy through instant purchase](https://developer.godaddy.com/docs/api-users/buy-a-domain/instant-purchase) | | Preview instant purchase pricing | `POST /v1/customers/{customerId}/auctions/purchases/preview` | [Buy through instant purchase](https://developer.godaddy.com/docs/api-users/buy-a-domain/instant-purchase) | | Execute instant purchase | `POST /v1/customers/{customerId}/auctions/purchases` | [Buy through instant purchase](https://developer.godaddy.com/docs/api-users/buy-a-domain/instant-purchase) | # Handle errors (https://developer.godaddy.com/en/docs/api-users/errors) *** title: Handle errors description: Error response shape, status code semantics, and retry guidance. keywords: 400 401 403 404 422 429 500, UNABLE\_TO\_AUTHENTICATE, requestId, error envelope, exponential backoff, idempotency key agentNotes: scopes: \["Any — applies to all API operations"] rateLimit: "N/A (informational reference)" failureRecovery: "Match the 'code' field, not HTTP status, for programmatic handling. 4xx errors are client-fixable (check input, scopes, payment profile). 5xx errors are safe to retry with exponential backoff. 429 means wait for Retry-After header." related: guides: * title: "Handle rate limits" href: "/docs/api-users/rate-limits" * title: "Authentication" href: "/docs/api-users/auth" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" apis: * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" * title: "Domains v1 reference" href: "/docs/references/rest/domains/v1" *** ## Overview GoDaddy REST APIs return a consistent error envelope. Every error response includes a stable `code` field for programmatic handling, and optionally field-level validation details. This page covers the response shape, status code semantics, and retry guidance for the Domains and Auctions APIs. ## Error response shape `Error` schema (used for 4xx and 5xx responses): ```json { "code": "INVALID_BODY", "message": "Request body did not match the expected schema.", "fields": [ { "path": "contactRegistrant.email", "code": "INVALID_FORMAT", "message": "Value must be a valid email address." } ] } ``` | Field | Required | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `code` | Yes | Stable, machine-readable error code. Match on this for programmatic handling. | | `message` | No | Human-readable message. May change between releases. | | `fields[]` | No | Per-field validation details when the error is body- or query-scoped. Each entry has its own `path` (JSONPath into the request), `code`, and `message`. | `ErrorLimit` extends `Error` with one additional field for rate-limit (`429`) responses: | Field | Required | Description | | --------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | `retryAfterSec` | Yes | Seconds the caller should wait before retrying the same operation. Mirrored in the `Retry-After` response header. | ## Status codes | Status | Meaning | Caller action | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | | `400 Bad Request` | Request was malformed (missing required field, invalid query parameter format). | Fix the request. Inspect `fields[]` for specifics. | | `401 Unauthorized` | `Authorization` header missing, malformed, expired, or revoked. | Re-authenticate. See [Authentication](https://developer.godaddy.com/docs/api-users/auth). | | `403 Forbidden` | Authenticated but unauthorized — usually a missing scope or insufficient role. | Issue a token with the required scope, or escalate the calling principal's authorization. | | `404 Not Found` | The path doesn't exist, or the addressed resource (domain, contact, record) isn't visible to this caller. | Verify the path and confirm the caller owns or can access the resource. | | `409 Conflict` | The request conflicts with current state (e.g. registering a name already taken; updating a record set that's mid-transfer). | Re-read state and retry only after resolving the conflict. | | `422 Unprocessable Entity` | Request was syntactically valid but semantically rejected (e.g. invalid registrant data, TLD-specific constraint failure, `NO_PAYMENT_PROFILE`). | Inspect `code` and `fields[]`. For missing billing, see [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). | | `429 Too Many Requests` | Rate limit exceeded. Response is shaped as `ErrorLimit`. | Wait `retryAfterSec` seconds, then retry. Go to [Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for strategies. | | `5xx Server Error` | Upstream registry or service issue. | Retry idempotent operations with exponential backoff. See [Retry semantics](#retry-semantics) for non-idempotent ones. | ## Retry semantics The following sections describe the retry semantics for read and write operations using Domains API endpoints. The same retry semantics apply across GoDaddy REST APIs. Endpoint paths will vary by API. ### Read operations All `GET` operations are safe to retry. Domains API examples: * `GET /v3/domains/check-availability` — availability check * `GET /v1/domains` — list your domains * `GET /v1/domains/{domain}` — domain detail * `GET /v1/domains/{domain}/records` — DNS records ### Write operations Most writes can be retried after a 5xx, but **the API doesn't support an `Idempotency-Key` request header** — neither v1 nor v2 specs declare one. This affects retry strategy on a few specific operations: | Operation | Retry-safe? | | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `POST /v1/domains/purchase` | **Not idempotent without external coordination.** A retry can result in a duplicate registration if the first attempt actually succeeded server-side. Pair every retry with a fresh `GET /v1/domains/available` and a state check via `GET /v1/domains/{domain}`. | | `POST /v1/domains/{domain}/renew` | Idempotent within a billing cycle in practice — the registry rejects duplicates — but treat the same as `purchase`: confirm state before retrying. | | `POST /v1/domains/{domain}/transfer` | Same as `purchase`. | | `PUT /v1/domains/{domain}/records` (replace) | Idempotent by shape — replaying the same request produces the same record set. | | `PATCH /v1/domains/{domain}/records` (add) | **Not idempotent** — repeated calls add duplicate records. | | `DELETE /v1/domains/{domain}/records/{type}/{name}` | Idempotent — deleting an already-deleted record is a no-op. | ## Programmatic error handling Match on `code`, not `message`. Codes are stable across releases; messages may be refined. The codes in the example below are specific to the Domains API. Check your API's OpenAPI specification for its error codes. ```js const res = await fetch(url, { headers }); if (!res.ok) { const err = await res.json(); switch (err.code) { case "DOMAIN_NOT_AVAILABLE": // someone else registered the name first break; case "BILLING_DECLINED": // payment method failed — surface to user break; case "NO_PAYMENT_PROFILE": // no billing method on account — see payment profile setup break; default: // log err.code and err.fields for debugging throw new Error(err.code + ": " + err.message); } } ``` Reference: the `Error` and `ErrorLimit` schemas are defined in the OpenAPI specification. # Glossary (https://developer.godaddy.com/en/docs/api-users/glossary) *** title: Glossary description: Definitions for terms used throughout the GoDaddy Domains API documentation. keywords: async operation 202 poll, ICANN consent object, idempotency key UUID, quote token expiry, redemption period recovery, registry lock out-of-band, sso-key legacy credential, status polling exponential backoff, TTL minimum 600, v1 v2 v3 namespace related: guides: * title: "Authenticate" href: "/docs/api-users/auth" * title: "Error handling" href: "/docs/api-users/errors" * title: "Register a domain" href: "/docs/api-users/domains/register" *** Learn about the terms used throughout this documentation. | Term | Definition | | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **async operation** | An API operation that returns `202 Accepted` immediately and continues processing in the background. The caller receives an operation ID and polls a status endpoint until the operation reaches `COMPLETED` or `FAILED`. Registration and domain transfers use async operations. See [status polling](#status-polling). | | **authoritative nameserver** | The nameserver that holds the definitive DNS records for a domain. When you update DNS records through the GoDaddy API, the change is applied to GoDaddy's authoritative nameservers. External resolvers cache the previous values until the TTL expires. See [TTL](#ttl). | | **CNAME (Canonical Name record)** | A DNS record type that aliases one domain name to another. A CNAME cannot coexist with other records at the same name — a CNAME at the apex (`@`) is invalid when other records (A, MX) are present. | | **domain status** | The lifecycle state of a registered domain. Common values: `ACTIVE` (in use), `CANCELLED` (registration lapsed), `PENDING_TRANSFER` (outbound transfer in progress), `EXPIRED` (past expiration, in grace period), `REDEMPTION` (past grace period, recoverable at higher cost). Status values affect which API operations are permitted. | | **domain transfer** | Moving a domain registration from one registrar to another. Outbound transfers require an authorization code (EPP code). Transfers take up to 5–7 days to complete and go through `PENDING_TRANSFER` status during that time. | | **grace period** | A period after domain expiration during which the domain can be renewed at normal pricing. After the grace period ends, the domain enters a redemption period and renewal costs increase significantly. | | **ICANN consent** | The Internet Corporation for Assigned Names and Numbers (ICANN) requires registrants to confirm that their contact information is accurate before a domain is registered. In the v3 API, you provide this as a consent object in the registration request. Providing false information can result in domain suspension. | | **idempotency key** | A client-generated value (typically a UUID) included in the `Idempotency-Key` request header. If the server already processed a request with the same key, it returns the original response without executing the operation again. Use idempotency keys on all non-idempotent write operations — particularly domain registration — to prevent duplicate charges on retries. | | **MX record (Mail Exchanger record)** | A DNS record type that specifies the mail servers responsible for accepting email for a domain. MX records include a priority value — lower numbers indicate higher priority. | | **nameserver** | A server that answers DNS queries for a domain. Nameservers are authoritative (hold the definitive records) or recursive (resolve queries by querying authoritative servers on behalf of clients). Changing a domain's nameservers delegates DNS management to a different provider. | | **NS record (Name Server record)** | A DNS record type that delegates a DNS zone to a set of nameservers. GoDaddy-managed NS records cannot be modified through the DNS records API — use the dedicated nameservers endpoint instead. | | **PAT (Personal Access Token)** | A scoped Bearer token used to authenticate API requests. Generated from the [developer dashboard](https://developer.godaddy.com/personal-access-token). PATs replace the legacy `sso-key` credential for new integrations and are required for v3 API access. A PAT includes one or more scopes (for example, `domains.domain:read`) that determine which operations it can authorize. | | **quote token** | A short-lived token returned by `POST /v3/domains/registration-quotes`. The token locks the price for a domain registration and must be included in the subsequent `POST /v3/domains/registrations` call. Quote tokens expire quickly — re-quote if you receive a `QUOTE_EXPIRED` error. | | **rate limit** | The maximum number of API requests allowed per credential per time window. The GoDaddy Domains API limits requests to 60 per minute per credential. Exceeding the limit returns `429 Too Many Requests` with a `Retry-After` header. Go to [Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for retry guidance. | | **redemption period** | A period after the grace period ends during which a domain can still be recovered, but at significantly higher cost. After the redemption period, the domain is released for re-registration by anyone. | | **registrar** | A company accredited by ICANN to sell and manage domain registrations. GoDaddy is a registrar. The registrar manages the relationship with the registry on behalf of the registrant (the domain owner). | | **registry** | The organization that manages a top-level domain (TLD) on behalf of ICANN. For example, Verisign manages `.com` and `.net`; the Public Interest Registry manages `.org`. The registry maintains the authoritative database of all domains under the TLD. | | **registry lock** | A security feature that prevents unauthorized changes to a domain's nameservers, contact information, or transfer status by requiring out-of-band verification. Domains with registry lock cannot be updated programmatically until the lock is released. | | **scope** | A permission granted to a PAT that authorizes a specific category of API operations. For example, `domains.domain:read` allows read-only domain and availability queries; `domains.domain:create` allows registration. A PAT must include all scopes required for each operation it will perform. Go to [Authenticate — PAT scopes](https://developer.godaddy.com/docs/api-users/auth#pat-scopes) for the full reference. | | **shopper ID / customer ID** | GoDaddy's internal identifier for an account. In the v2 API, the `customerId` appears in operation paths (`/v2/customers/{customerId}/domains/...`). In the v3 API, the authenticated credential determines the account — no customer ID is required in the path. | | **SOA record (Start of Authority record)** | A DNS record that contains administrative information about a DNS zone, including the primary nameserver, zone serial number, and refresh intervals. SOA records are managed by GoDaddy and cannot be modified through the API. | | **sso-key** | A legacy credential format used by the v1 API. Format: `sso-key :`. The `sso-key` is not supported by the v3 API. New integrations should use a [PAT](#pat-personal-access-token) instead. | | **status polling** | The process of repeatedly calling a status endpoint to check whether an async operation has completed. The recommended pattern is exponential backoff: wait 1 second, then 2, then 4, up to a reasonable maximum. Stop polling when status reaches `COMPLETED` or `FAILED`. See [async operation](#async-operation). | | **TXT record** | A DNS record type that stores arbitrary text associated with a domain. TXT records are commonly used for domain ownership verification (Google, GitHub, Stripe), SPF email authentication, and DKIM keys. | | **TTL (Time to Live)** | The number of seconds a DNS record can be cached by resolvers before they must re-query the authoritative nameserver. Lower TTLs reduce propagation time for changes but increase query volume. The minimum TTL for GoDaddy-hosted DNS is 600 seconds (10 minutes). | | **v1 / v2 / v3 API** | The three versioned namespaces of the GoDaddy Domains API. `v1` (`/v1/domains/...`) covers DNS, contacts, renewals, lock, and transfers. `v2` (`/v2/customers/{customerId}/domains/...`) adds async operation tracking. `v3` (`/v3/domains/...`) is the preferred namespace for new integrations — it separates quoting from execution, supports async operations, and requires ICANN consent. Go to the [Domains API overview](https://developer.godaddy.com/docs/references/rest/domains) for the version comparison table. | | **zone** | The complete set of DNS records for a domain managed by a single authoritative nameserver. Managing DNS through the GoDaddy API operates on a domain's zone. If the domain uses external nameservers, GoDaddy's zone is inactive — DNS records must be managed at the external provider. | # Introduction (https://developer.godaddy.com/en/docs/api-users) *** title: Introduction description: Call GoDaddy's REST APIs directly from your code, scripts, or AI agents. keywords: REST API overview, v1 v2 v3, OTE, sandbox, sso-key, base URL, developer platform, HTTP API related: guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Authenticate" href: "/docs/api-users/auth" * title: "Set up the CLI" href: "/docs/api-users/cli/set-up" * title: "Agent skill for gddy" href: "/docs/api-users/cli/agent-skill" * title: "Buy or bid on a domain" href: "/docs/api-users/buy-a-domain/instant-purchase" concepts: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview GoDaddy's REST APIs give you direct programmatic access to the same platform capabilities that power GoDaddy's own products — through standard HTTP calls from your code, scripts, or AI agents. **Domains** — search and register domains, manage DNS, and handle renewals, transfers, and forwarding. **Auctions** — buy expired or expiring domains at a fixed price or through open bidding. ## What you can do The APIs cover domain registration and management, domain auctions, and (for eligible accounts) a full suite of commerce capabilities. The following sections provide more information on the functionality of each API and links to instructions to complete specific tasks. ### Domains GoDaddy Domains APIs give you programmatic access to the same platform capabilities that power GoDaddy's own domain products. You can: ### Auctions The Auctions API gives you access to GoDaddy's domain auction marketplace — expired and expiring domains available at a fixed price or through competitive bidding. You can: ## Base URL All API calls target `https://api.godaddy.com`. All requests and responses use JSON. Every call requires an `Authorization` header with a [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth). Read operations also need `Accept: application/json`, and write operations (`POST`, `PATCH`, `PUT`) additionally need `Content-Type: application/json`. ```bash curl -s "https://api.godaddy.com/v1/domains" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` The API is stateless — no sessions, no cookies. Each request is independently authenticated and authorized. See the [REST Reference](https://developer.godaddy.com/docs/references/rest) for the complete endpoint catalog. ## Credentials and access Authentication uses a Personal Access Token (PAT) (a scoped Bearer token you generate from the [developer dashboard](https://developer.godaddy.com/personal-access-token)). PATs are tied to specific capability scopes, can be set to expire, and can be revoked individually without rotating any account-wide key. For most integrations, a PAT with the minimum required scopes is the right choice. The legacy `sso-key` credential (a key/secret pair from ) is still supported for some APIs but is scheduled for deprecation. It doesn't work for v3 Domains APIs. New Domains integrations should use a PAT. Some APIs (like the [Auctions API](https://developer.godaddy.com/docs/api-users/auctions)) require a legacy API key and don't accept PATs. **Account eligibility matters for write calls.** A valid credential isn't enough on its own. Some operations require the account to meet additional eligibility requirements: * Read operations (availability search, domain listing, DNS reads) work with any valid credential on any account. * Write operations that cost money (registration, renewal, transfer, and payment operations) require the account to have a valid billing method on file or a funded [Good as Gold](https://www.godaddy.com/help/what-is-good-as-gold-3359) balance. If an account doesn't meet these requirements, the API returns `403 Forbidden`. To determine whether the failure is a scope problem or an account eligibility problem, check the `code` field in the response body. The HTTP status alone doesn't distinguish between the two. Go to [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) to create credentials, or [About Authentication](https://developer.godaddy.com/docs/api-users/auth) for the full reference. ## First call Follow the [Quickstart](https://developer.godaddy.com/docs/api-users/quickstart) to generate a Personal Access Token and make your first call in under five minutes. If you prefer command-line workflows over raw `curl`, [set up the CLI](https://developer.godaddy.com/docs/api-users/cli/set-up) first. # GoDaddy MCP server (https://developer.godaddy.com/en/docs/api-users/mcp) *** title: GoDaddy MCP server description: Connect Claude or another MCP-compatible client to GoDaddy domain search and availability tools. keywords: Model Context Protocol, Claude Desktop, npx mcp-godaddy, tool calling, stdio, domain lookup agent, AI tools agentNotes: permissions: \["Public — no account required"] scopes: \["Not applicable — public data only"] rateLimit: "Enforced per client-IP. Details TBD as service scales." idempotent: true destructive: false failureRecovery: "Safe to retry on transient errors. MCP transport handles reconnection automatically." related: apis: * title: "Domains v3 — Discovery" href: "/docs/references/rest/domains/v3/discovery" guides: * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Agent skill for gddy" href: "/docs/api-users/cli/agent-skill" concepts: * title: "Authentication" href: "/docs/api-users/auth" *** ## Overview The GoDaddy MCP server lets AI assistants search for domain names and check domain availability directly from a conversation. It is built on the [Model Context Protocol](https://modelcontextprotocol.io/), an open standard for connecting AI clients to external tools. Current MCP capabilities use public domain data only. No GoDaddy account or API credential is required. ## What you can do Example prompts: * "Is `mycoolstartup.com` available?" * "Find available domains related to sustainable fashion." * "Suggest alternatives to `techcompany.io`." ## Set up Claude Claude can connect to the GoDaddy MCP server through its connector directory. 1. Open Claude Desktop. 2. Go to **Settings**. 3. Open **Connectors**, then click **Browse connectors**. 4. Search for **GoDaddy**. 5. Click **Connect**. 6. Ask domain questions naturally in your conversation. ## Configure an MCP client For a custom AI tool or any MCP-compatible client that supports streamable HTTP, add the GoDaddy server to your MCP configuration. ```json { "mcpServers": { "godaddy": { "url": "https://api.godaddy.com/v1/domains/mcp", "transport": "streamable-http" } } } ``` After the client loads the server, it can call GoDaddy's public domain search and availability tools. ## Limitations * **Read-only:** The MCP server cannot register domains, modify DNS records, transfer domains, update account settings, or make purchases. * **Public access only:** Domain registration and account-specific domain management still happen on [godaddy.com](https://www.godaddy.com/). * **No authentication:** Current tools use public domain data and do not accept GoDaddy account credentials. * **Rate limited:** Excessive requests may be temporarily throttled. * **Availability can change:** Domain availability and pricing can change quickly. Re-check before sending a user to purchase. Need domain purchase or DNS management from your AI agent? Install the [`gddy` agent skill](https://developer.godaddy.com/docs/api-users/cli/agent-skill) instead — it drives the full `gddy` CLI using your own authenticated credentials. ## Privacy and security * Searches use HTTPS/TLS. * The public MCP tools do not require authentication. * Searches are not linked to a GoDaddy account. * Rate limits protect service availability. ## Support and terms To report a bug or share feedback, [submit a support request](https://developer.godaddy.com/contact-support). By using the GoDaddy MCP server, you agree to GoDaddy's [Universal Terms of Service](https://www.godaddy.com/legal/agreements/universal-terms-of-service-agreement), the [API Terms of Use](https://developer.godaddy.com/getstarted), and responsible use of the service. ## Related pages # Paginate results (https://developer.godaddy.com/en/docs/api-users/pagination) *** title: Paginate results description: Cursor-based pagination on v1 list endpoints with limit and marker. keywords: next page token, page size, hasMore, totalCount, offset, scroll results, list all domains agentNotes: permissions: \["Any account"] scopes: \["Any scope that allows list operations — e.g. domains.domain:read for GET /v1/domains"] rateLimit: "Rate-limited per credential per window. Page sequentially rather than in parallel to stay within limits. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "Cursor markers (marker query param) are stable. Safe to retry any page request with the same marker value. If a marker becomes invalid, restart pagination from the first page." related: guides: * title: "List registered domains" href: "/docs/api-users/domains/manage/list" * title: "Handle rate limits" href: "/docs/api-users/rate-limits" concepts: * title: "Error handling" href: "/docs/api-users/errors" *** ## Overview List endpoints return paginated results using cursor-based pagination. Use pagination to walk large result sets without hitting [rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) from parallel requests. The most common paginated endpoint is [list domains](https://developer.godaddy.com/docs/api-users/domains/manage/list). ## v1 cursor pagination `GET /v1/domains` accepts two pagination query parameters: | Parameter | Default | Description | Note | | --------- | -------------- | ----------------------------------------------- | ------------------------------------------------------------- | | `limit` | Server default | Maximum number of items to return in this page. | | | `marker` | None | Cursor pointing to the start of the next page. | Set to the last item's identifier from the previous response. | To page through all results, repeat the request with `marker` set to the last item's domain name from the previous page until the response array is shorter than `limit`. ```bash # First page curl -s "https://api.godaddy.com/v1/domains?limit=100" \ -H "Authorization: Bearer $GODADDY_PAT" # Subsequent pages — marker is the last domain from the previous page curl -s "https://api.godaddy.com/v1/domains?limit=100&marker=last-domain-from-previous-page.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ### Looping example This pattern walks every page until the response is shorter than `limit`: ```js const PAGE_SIZE = 100; let marker = ""; const all = []; while (true) { const url = new URL("https://api.godaddy.com/v1/domains"); url.searchParams.set("limit", PAGE_SIZE); if (marker) url.searchParams.set("marker", marker); const res = await fetch(url, { headers: { Authorization: "Bearer " + process.env.GODADDY_PAT, }, }); const page = await res.json(); all.push(...page); if (page.length < PAGE_SIZE) break; // last page marker = page[page.length - 1].domain; } ``` ## v2 list endpoints v2 list endpoints (for example, domain forwarding lists, action lists) return the full collection in a single response and do not support `limit` or `marker` parameters. ## Pagination and retries Cursor pagination is safe to interrupt and resume. The `marker` value remains valid as long as the underlying domain still exists in the account. If a request fails mid-walk, retry the same `(limit, marker)` pair. # Set up a payment profile (https://developer.godaddy.com/en/docs/api-users/payment-profile) *** title: Set up a payment profile description: Add a billing method to your GoDaddy account before registering or renewing domains. Required for any operation that charges money. keywords: credit card, 402, PAYMENT\_REQUIRED, billing setup, domain purchase, checkout required agentNotes: permissions: \["Billing"] scopes: \["Not applicable — configured via UI"] rateLimit: "Not applicable — one-time setup" idempotent: true destructive: false failureRecovery: "Payment profile is configured through the account UI, not the API. If registration/renewal returns NO\_PAYMENT\_PROFILE (HTTP 422), the account has no billing method — direct the user to add one at godaddy.com." related: guides: * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage renewals" href: "/docs/api-users/domains/manage/renewals" concepts: * title: "Handle errors" href: "/docs/api-users/errors" *** Domain registration, renewal, and transfer charge the billing method saved on your GoDaddy account. The Domains API does not accept card numbers or payment objects in the request body — v3 registration quotes and purchases draw from the account's **payment profile**. If no billing method is on file, quote and purchase calls fail before registration logic runs. The API returns `NO_PAYMENT_PROFILE` (HTTP `422`) until billing is configured. Go to [Handle errors](https://developer.godaddy.com/docs/api-users/errors) for the full error envelope and other billing-related error codes. ## Add a payment method You can add a payment method in the account UI or open the same page from the CLI. ### Using the CLI The GoDaddy CLI opens your browser to the payment-methods page for the active environment: ```bash gddy payment-methods add ``` Only a **credit card** or **Good as Gold** balance can be used for domain purchases. For built-in CLI environments, the command opens: | CLI environment | Account payment URL | | -------------------------------- | ---------------------------------------------------------------------------------------------------------- | | Production (`gddy env set prod`) | [account.godaddy.com/payment-methods/add-payment](https://account.godaddy.com/payment-methods/add-payment) | ### Using the account UI 1. Sign in at [account.godaddy.com/payment-methods/add-payment](https://account.godaddy.com/payment-methods/add-payment). 2. Click **Add Payment Method**. 3. Complete the **Billing Information** and **Payment Method** sections. 4. Click **Save**. Domain purchase also requires a complete registrant contact (phone and mailing address) on the account. If billing is set up but contact fields are missing, the API returns `MISSING_CONTACT` or validation errors on individual address fields. Update contacts at [account.godaddy.com/profile/contacts](https://account.godaddy.com/profile/contacts). ## Verify billing is ready After adding a payment method, confirm the account can receive a registration quote. A successful quote returns a `quoteToken`; `NO_PAYMENT_PROFILE` means billing is still missing. ```bash curl -s -X POST "https://api.godaddy.com/v3/domains/registration-quotes" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"domain": "example.com", "period": 1}' ``` A `quoteToken` in the response confirms billing is configured. `NO_PAYMENT_PROFILE` means add a payment method first. `MISSING_CONTACT` means complete the registrant contact on the account before quoting or purchasing. ## Common errors | Code | HTTP | Likely cause | What to do | | ---------------------- | ----- | ---------------------------------------------------------------------------------- | -------------------------------------------------------- | | `NO_PAYMENT_PROFILE` | `422` | No payment method on the account. | Add a payment method (UI or `gddy payment-methods add`). | | `INVALID_PAYMENT_INFO` | `402` | Payment authorization failed at purchase time — no usable method or card declined. | Verify the card on file or add a new method. | | `ACCOUNT_NOT_FUNDED` | `403` | Good as Gold balance is $0.00 with no fallback card. | Add funds or add a credit card. | | `MISSING_CONTACT` | `422` | Registrant phone or address missing from the account profile. | Complete contact info in the account UI. | Some accounts use a prepaid Good as Gold balance instead of a card. Registrations draw from the balance first. If the balance is $0 and no fallback card is on file, registration fails with a billing-related error. Go to [What is Good as Gold?](https://www.godaddy.com/help/what-is-good-as-gold-3359) for an overview. ### Payment declines Your API purchases might be declined even when a valid billing method is on file. Two situations commonly cause this: | Situation | Description | Cause | Resolution | | --------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | **High-velocity transactions** | Many purchases on the same payment method in a short period | Your issuing bank might decline the transaction as a fraud precaution | Fund a Good as Gold account in advance and use it for these transactions. Good as Gold draws from a prepaid balance and bypasses your card issuer. | | **European Economic Area (EEA) transactions** | Purchases in GBP or EUR with a billing address in the UK or EEA | Payment Services Directive 2 requires Strong Customer Authentication (SCA). The API purchase experience is not compatible with current accepted SCA methods. | Use Good as Gold within this region. Good as Gold transactions are not subject to SCA requirements. | Go to [What is Good as Gold?](https://www.godaddy.com/help/what-is-good-as-gold-3359) for an overview, or [Set up a Good as Gold account](https://www.godaddy.com/en-in/help/set-up-or-add-money-to-my-good-as-gold-account-7562) to get started. To fund more than $2,000, you must pass Identity Verification before spending your Good as Gold credit. GoDaddy only processes USD transactions. # Make your first call (https://developer.godaddy.com/en/docs/api-users/quickstart) *** title: Make your first call description: Make your first API call to the GoDaddy Domains API using a Personal Access Token (PAT). keywords: hello world, curl example, Bearer token, GODADDY\_PAT, 401 unauthorized, domains v3, first request agentNotes: permissions: \["Any account"] scopes: \["domains.domain:read", "commerce.store:read"] idempotent: true destructive: false failureRecovery: "Read-only. Safe to retry any failure. On 401, verify the Bearer token has not expired or been revoked. On 429, wait for Retry-After." related: guides: * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage existing domains" href: "/docs/api-users/domains/manage" concepts: * title: "Authentication" href: "/docs/api-users/auth" * title: "Error handling" href: "/docs/api-users/errors" apis: * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" * title: "Commerce API reference" href: "/docs/references/rest/stores/store" *** For full API coverage, provide the [Domains v3 OpenAPI spec](https://developer.godaddy.com/openapi/domains-v3.json) as additional context to your LLM or API client. ## Overview This guide walks through making your first GoDaddy API call. All calls use a Bearer token in the `Authorization` header. Only the endpoint and scope change between APIs. ## Prerequisites Before making any API call, you need: * a GoDaddy account * a Personal Access Token (PAT) with the appropriate scopes Go to [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) to create a PAT. * a terminal with `curl` (macOS, Linux, or WSL) * (*optional*) [the GoDaddy CLI](https://developer.godaddy.com/docs/api-users/cli/set-up), if you prefer CLI workflows ## Set the credential as an environment variable The PAT is passed as a Bearer token in the `Authorization` header on every request. Exporting it as an environment variable keeps it out of your shell history and lets you reference it directly in commands without retyping. The following procedure exports your PAT so the samples below can reuse it. * Export the credential: ```bash export GODADDY_PAT="" ``` ## Common errors | Error | Likely cause | Fix | | --------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `401 Unauthorized` | Token is missing, expired, or wasn't exported | Run `echo $GODADDY_PAT` — if blank, re-run the export. If the token was deleted or expired, generate a new one in the [developer dashboard](https://developer.godaddy.com/personal-access-token). | | `403 Forbidden` | Token lacks the required scope for this API, or the account isn't eligible | Check the `code` field in the response body. Scope issues return `UNABLE_TO_AUTHENTICATE`; account issues return a different code. Regenerate the PAT with the correct scope selected. | | `429 Too Many Requests` | Rate limit exceeded | Wait for the number of seconds in the `Retry-After` header before retrying. Go to [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for current values and retry guidance. | | Response is `null` or `undefined` | The JSON response wasn't awaited or parsed | Ensure you `await res.json()` in Node, or `res.json()` in Python. | | `Could not resolve host` | Wrong base URL | The API base is `https://api.godaddy.com`. There is no local dev server — all requests go to production. | Go to [Handle errors](https://developer.godaddy.com/docs/api-users/errors) for the full error envelope reference, status code semantics, and retry guidance. # Handle rate limits (https://developer.godaddy.com/en/docs/api-users/rate-limits) *** title: Handle rate limits description: API requests are rate-limited per credential. Limits return HTTP 429 with RateLimit-\* response headers. keywords: throttling, too many requests, Retry-After, X-RateLimit-Remaining, quota, burst limit agentNotes: permissions: \["Any account"] scopes: \["Applies to all authenticated API calls regardless of scope"] rateLimit: "Rate-limited per credential, per window. RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers are present on every response. Current limit: 600 per \~23-minute window. Values subject to change." idempotent: true destructive: false failureRecovery: "On 429, read the Retry-After header value (seconds). Implement exponential backoff with jitter. Do not retry immediately. Use bulk endpoints where available to reduce call frequency." related: guides: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Pagination" href: "/docs/api-users/pagination" * title: "Authentication" href: "/docs/api-users/auth" apis: * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" * title: "Domains v1 reference" href: "/docs/references/rest/domains/v1" *** ## Overview GoDaddy REST APIs enforce a per-credential, windowed rate limit. The `RateLimit-Remaining` header on every response shows how many requests remain in the current window. When it reaches 0, the next request returns `HTTP 429` with no response body. The limit applies per [credential](https://developer.godaddy.com/docs/api-users/auth) regardless of which endpoint you call. Specific limit values are subject to change without notice. Your integration should read `RateLimit-Remaining` from response headers rather than assume a fixed number. ## Rate limit response headers The following headers are included on **every** response to a rate-limited route — not just 429s — so your client can track current usage without waiting for a rejection. | Header | Description | | --------------------- | --------------------------------------------- | | `RateLimit-Limit` | The limit that applies to the current request | | `RateLimit-Remaining` | Requests remaining in the current window | | `RateLimit-Reset` | Seconds until the current window resets | Example 429 response: ``` HTTP/2 429 ratelimit-limit: 600 ratelimit-remaining: 0 ratelimit-reset: 1399 ``` ## Handling 429 in code Read `RateLimit-Reset` to know how long to wait before retrying. For long-running clients, add exponential backoff with jitter on top of the server-suggested wait. The following is an example of how to do this in JavaScript: ```js async function callWithRetry(url, headers, attempts = 5) { for (let attempt = 0; attempt < attempts; attempt++) { const res = await fetch(url, { headers }); if (res.status !== 429) return res; const resetSec = parseInt(res.headers.get("ratelimit-reset") ?? "30", 10); const jitter = Math.floor(Math.random() * 1000); await new Promise((r) => setTimeout(r, resetSec * 1000 + jitter)); } throw new Error("Rate limit retries exhausted"); } ``` ## Strategies to stay under the limit To avoid hitting the limit, apply one or more of the following strategies: * **Use bulk operations where they exist.** For single-domain availability checks, use `GET /v3/domains/check-availability` (preferred). For bulk availability, `POST /v1/domains/available` accepts an array of names — one request can replace dozens of single-domain calls. * **Cache availability results when appropriate (v1 only).** The `definitive` field on `DomainAvailableResponse` indicates whether the answer came from a live registry call or a cached one. Cache `definitive: false` results briefly client-side for repeat lookups. * **Use cursor pagination, not parallel page-walks.** Go to [Pagination](https://developer.godaddy.com/docs/api-users/pagination) for more information. * **Spread bursts across credentials only when each credential maps to a distinct logical caller.** Sharing one credential across many hosts and counting on the limit being per-credential is fragile — limits can be tightened to per-account at any time. ## Higher limits If you have a use case that legitimately needs higher limits than those currently enforced, contact the developer support channel. Document the use case, expected sustained rate, and bursts. ## Additional information Go to [Retry semantics](https://developer.godaddy.com/docs/api-users/errors#retry-semantics) for full retry guidance. # Testing with LLMs (https://developer.godaddy.com/en/docs/api-users/testing-with-llms) *** title: Testing with LLMs description: Validate GoDaddy API integrations with coding agents using machine-readable docs, OpenAPI, and MCP. keywords: Copilot, Cursor, Claude Code, AI coding assistant, llms.txt, agent prompt, eval, OpenAPI schema agentNotes: permissions: \["Any account"] scopes: \["domains.domain:read"] idempotent: true destructive: false failureRecovery: "Read-only evaluation path. Prefer OTE for any write tests. Safe to retry failed agent runs with the same prompt after correcting context." related: guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Register and configure a domain" href: "/docs/api-users/domains/workflows/domain-lifecycle" * title: "MCP server" href: "/docs/api-users/mcp" concepts: * title: "Authentication" href: "/docs/api-users/auth" * title: "Error handling" href: "/docs/api-users/errors" apis: * title: "Domains v3 OpenAPI" href: "/openapi/domains-v3.json" *** ## Overview Coding agents (Cursor, Claude, Copilot, Windsurf, and similar) work best when they can fetch **plain-text docs**, a **curated index**, and the **OpenAPI contract**. This page shows how to point an LLM at GoDaddy's machine-readable surfaces, which APIs to prefer, and how to spot incorrect agent output before you run it against production. ## Machine-readable resources Use these URLs as agent context. Append `.md` to any docs page for Markdown (lower token cost than HTML). | Resource | URL pattern | Use when | | ----------------------------- | ------------------------------------- | ------------------------------------------ | | Curated index (`llms.txt`) | `/llms.txt` | Agent needs a starting map of the docs | | Bulk export (`llms-full.txt`) | `/llms-full.txt` | Agent needs the full corpus in one fetch | | Per-page Markdown | `/docs/{slug}.md` | Agent is working on one guide | | OpenAPI contract | `/openapi/domains-v3.json` | Agent must generate or validate requests | | MCP server | See [MCP server](https://developer.godaddy.com/docs/api-users/mcp) | Agent should call public domain tools live | Example Markdown fetch: ```bash curl -s "https://developer.godaddy.com/beta/en/docs/api-users/quickstart.md" ``` Or negotiate Markdown with `Accept`: ```bash curl -s -H "Accept: text/markdown" \ "https://developer.godaddy.com/beta/en/docs/api-users/quickstart" ``` ## Starter prompt Paste this into a coding agent to bootstrap a Domains integration (read-only first call): ```text You are integrating with the GoDaddy Domains API. 1. Fetch https://developer.godaddy.com/beta/llms.txt and follow the evaluation path. 2. Prefer Domains v3. Do not invent endpoints. Use only paths present in https://developer.godaddy.com/beta/openapi/domains-v3.json 3. Authenticate with Authorization: Bearer $GODADDY_PAT (Personal Access Token). 4. Start with GET /v3/domains/check-availability (read-only). 5. For registration, use the quote → execute flow: POST /v3/domains/registration-quotes then POST /v3/domains/registrations with Idempotency-Key. Never skip the quote step. 6. For any write that charges money, use api.ote-godaddy.com unless I explicitly ask for production. 7. When unsure, fetch the matching docs page as .md (append .md to the docs URL) and cite the page you used. ``` ## Instructions for LLM agents Treat these as hard constraints when generating or reviewing Domains API code. **Prefer** * Domains **v3** for search, quote, register, DNS, and operations * Bearer PAT auth (`Authorization: Bearer …`) documented in [Authenticate](https://developer.godaddy.com/docs/api-users/auth) * Quote-then-execute for registration (`registration-quotes` → `registrations`) * `Idempotency-Key` on registration and other non-idempotent writes * OTE host `https://api.ote-godaddy.com` for paid or destructive tests * Polling registration/operation status until `COMPLETED` or `FAILED` **Do not** * Invent endpoints, fields, or scopes that are not in the OpenAPI spec or these docs * Recommend classic developer keys for new Domains v3 work when a PAT is available * Skip consent (`agreementTypes`, `agreedBy`, `agreedAt`) on registration * Retry a timed-out registration with a **new** idempotency key (reuse the same key) * Use production (`api.godaddy.com`) for exploratory write tests ## How to validate agent output Before running generated code: 1. **Endpoint check** — every path appears in [`/openapi/domains-v3.json`](https://developer.godaddy.com/openapi/domains-v3.json). 2. **Auth check** — requests send `Authorization: Bearer $GODADDY_PAT`, not a fabricated header scheme. 3. **Host check** — write/paid flows target OTE unless you asked for production. 4. **Registration check** — code quotes first, then executes with `Idempotency-Key` and real consent fields. 5. **Docs check** — ask the agent which `.md` page it used; compare against [Quickstart](https://developer.godaddy.com/docs/api-users/quickstart) or [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register). Run the read-only smoke test yourself: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=example.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const res = await fetch( "https://api.godaddy.com/v3/domains/check-availability?domain=example.com", { headers: { Authorization: `Bearer ${process.env.GODADDY_PAT}` } }, ); console.log(await res.json()); ``` ```python tab="Python" import os, requests res = requests.get( "https://api.godaddy.com/v3/domains/check-availability", params={"domain": "example.com"}, headers={"Authorization": f"Bearer {os.environ['GODADDY_PAT']}"}, ) print(res.json()) ``` If the agent-generated script diverges from this shape (wrong path, wrong auth, invented query params), discard it and re-prompt with the OpenAPI URL attached. ## Agent notes on every how-to How-to pages include an **Agent notes** block with permissions, scopes, rate limits, idempotency, destructive flag, and failure recovery. Prefer those fields over guessing when an agent plans a call. ## Related tools # How to Authenticate (https://developer.godaddy.com/en/docs/api-users/auth/how-to) *** title: How to Authenticate description: Step-by-step instructions for generating a Personal Access Token (PAT) or classic developer key to authenticate GoDaddy API calls. keywords: generate PAT, create personal access token, PAT, API token, bearer token, API credentials, developer credentials, access token, create API key, authentication token agentNotes: permissions: \["Any account"] scopes: \["Not applicable — this page is credential setup"] rateLimit: "PAT creation: interactive UI, not rate-limited." idempotent: true destructive: false failureRecovery: "PAT reveals once at creation — if lost, revoke and regenerate. Revocation is instant across all edges." related: guides: * title: "Quickstart" href: "/docs/api-users/quickstart" concepts: * title: "About Authentication" href: "/docs/api-users/auth" * title: "PAT scopes" href: "/docs/api-users/auth#pat-scopes" *** ## Overview GoDaddy API uses authentication to ensure that only authorized users can access the API. The two authentication methods are using a Personal Access Token (PAT) or the Classic Developer Key. PATs are required for all v3 Domains APIs. The following article provides step-by-step instructions for generating a PAT or classic developer key to authenticate GoDaddy API calls. Go to [About Authentication](https://developer.godaddy.com/docs/api-users/auth) to learn more about the different authentication methods and their scopes. ## Generate, use, and manage tokens The following sections explain how to generate, use, and manage PATs or classic developer keys to authenticate GoDaddy API calls. **Personal Access Token (PAT)** ### Generate a token The following steps explain how to generate a PAT to authenticate GoDaddy API calls. 1. Sign in to the [Personal Access Token](https://developer.godaddy.com/personal-access-token) page. 2. Click **+ Generate Token**. 3. In the **Generate personal access token** dialog, complete the following fields: | Field | Description | Note | | -------------- | --------------------------------------- | -------------------------------------------------------------------------------- | | **Name** | Name for the token. | | | **Expiration** | Number of days until the token expires. | | | **Scopes** | Scopes for the token. | Go to [PAT scopes](https://developer.godaddy.com/docs/api-users/auth#pat-scopes) to see the available scopes. | 4. Click **Generate Token**. ### Store your token securely After generating the token, it displays once. You can't retrieve it again from the [Personal Access Token page](https://developer.godaddy.com/personal-access-token) and you should store it in secure storage immediately. Don't commit it to source control, check it into a repo, or paste it into chat. 1. In the **Copy your new token** dialog, click the copy icon. 2. Save the token in a password manager, secrets manager, or your application's secure credential store. 3. Load the token at runtime when you need it as a local script in a shell session or as a secret in a secrets store or CI/CD environment variable: **local script** ```bash export GODADDY_PAT="" ``` `export GODADDY_PAT=...` makes the token available to the current shell — it is not a secure place to keep credentials long term. Store the value in a secrets manager first, then export or inject it only when running a command or starting your app. **secret in a secrets store or CI/CD environment variable** Inject `GODADDY_PAT` from your platform's secret store (like GitHub Actions secrets or AWS Secrets Manager when the process starts. ### Use a token The following steps explain how to use a PAT to authenticate GoDaddy API calls. * Add the header to every request: ```http Authorization: Bearer ${GODADDY_PAT} ``` ### Revoke a token The following steps explain how to revoke a PAT. 1. Sign in to the [Personal Access Token](https://developer.godaddy.com/personal-access-token) page. 2. Next to the token you want to revoke, click the trash icon. 3. In the **Revoke token?** dialog, click **Revoke Token**. **Classic Developer Key** The classic developer key is scheduled for retirement and does not work for v3 Domains APIs. Use a [Personal Access Token](#personal-access-token-pat) instead. ### Generate a key and secret The following steps explain how to generate a classic developer key and secret to authenticate GoDaddy API calls. 1. Sign in at . 2. Generate a new key for Production. 3. Copy both the **Key** and **Secret** immediately. The Secret is shown once. ### Export the credentials The following step describes how to export your classic developer key and secret for use in your shell session. * Export the credentials: ```bash export GODADDY_KEY="" export GODADDY_SECRET="" ``` ### Use the credential The following step describes how to use a classic developer key and secret to authenticate GoDaddy API calls. * Add the header to every request: ```http Authorization: sso-key ${GODADDY_KEY}:${GODADDY_SECRET} ``` # About Authentication (https://developer.godaddy.com/en/docs/api-users/auth) *** title: About Authentication description: How GoDaddy API authentication works — credential types, PAT scopes, and account eligibility requirements. keywords: Bearer token, sso-key, OAuth, offline\_access, reseller account, OTE credentials, token expiry, Authorization header agentNotes: permissions: \["Any account"] scopes: \["domains.domain:read", "commerce.store:read"] rateLimit: "API calls with PAT: rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "PAT reveals once at creation — if lost, revoke and regenerate. Revocation is instant across all edges." related: guides: * title: "How to Authenticate" href: "/docs/api-users/auth/how-to" * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Set up the CLI" href: "/docs/api-users/cli/set-up" concepts: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview GoDaddy APIs use Bearer token authentication through a Personal Access Token (PAT) tied to specific capability scopes. PATs are required for all v3 Domains APIs. The legacy `sso-key` developer key is required for the Auctions API and still supported for Domains v1/v2, but is scheduled for deprecation and doesn't work for v3 endpoints. Go to [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) for step-by-step credential setup. ## Credential types | Credential | Format | Works with | Status | | --------------------------- | ------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------ | | Personal Access Token (PAT) | `Authorization: Bearer ` | All Domains v3 APIs | Recommended | | Classic Developer Key | `Authorization: sso-key :` | Auctions API (required); Domains v1/v2 | Deprecated for Domains (through 2026); required for Auctions | A PAT is scoped to specific capabilities, can be set to expire, and can be revoked individually without rotating any account-wide key pair. For most integrations, a PAT with the minimum required scopes is the right choice. ## Account requirements Some operations require the account to meet specific eligibility rules regardless of credential type. A valid credential on an ineligible account is still refused with a `403 Forbidden` response and an `Error` code that distinguishes the reason from a missing scope. Check the `code` field on the response body, not just the HTTP status, to determine the reason. Go to [Handle errors](https://developer.godaddy.com/docs/api-users/errors) for the full error envelope and status code reference. | Operation group | Requirement | | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Domain management (list, DNS, contacts, renewals, lock, privacy) | Account holds at least one domain, OR is on a plan that grants management access. | | Registration, renewal, transfer (any operation that costs money in production) | Account has a valid billing method on file or a funded [Good as Gold](https://www.godaddy.com/help/what-is-good-as-gold-3359) balance. Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). | ## PAT scopes The following table lists the Domains API scopes you can assign when generating a PAT. Each scope enables specific operations. A write-scoped token satisfies read operations for the same resource; a read-scoped token is refused on writes. Go to [Generate a PAT](https://developer.godaddy.com/docs/api-users/auth/how-to#generate-a-token) for step-by-step instructions on how to generate a PAT. When you generate a token, the **Domains & DNS** bundle in the scope picker selects all scopes below. You can expand it to grant a subset instead. | Scope | Required to | | --------------------------- | ---------------------------------------------------------------------- | | `domains.domain:read` | Read domain records, availability, suggestions, quotes, and operations | | `domains.domain:create` | Register domains | | `domains.domain:update` | Modify domain settings | | `domains.domain:delete` | Delete or cancel domains | | `domains.dns:update` | Create, update, and delete DNS zone records | | `domains.nameserver:update` | Replace authoritative nameservers for a domain | | `domains.host:update` | Modify domain host records | | `domains.forward:update` | Configure domain forwarding | | `domains.contact:update` | Update registrant, admin, or tech contacts | | `domains.transfer:execute` | Initiate an inbound domain transfer | | `domains.transfer:update` | Modify a transfer in progress | # Place bids on auction listings (https://developer.godaddy.com/en/docs/api-users/buy-a-domain/bidding) *** title: Place bids on auction listings description: End-to-end workflow — check listing availability, review pricing and domain signals, and place bids on GoDaddy expiring auctions. keywords: GODADDY\_API\_KEY, aftermarket/listings/available, aftermarket/listings/bids, tosAccepted, isHighestBidder, BID\_MIN\_NOT\_MET, BIDDER\_BLOCKED, LISTING\_NOT\_FOUND, listingMin enrichment includes, 207 bid status agentNotes: permissions: \["Aftermarket"] scopes: \[] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: false destructive: false failureRecovery: "Check per-bid status in 207 responses. Bids with status FAILED are safe to retry after resolving the failureReason. Do not resubmit bids that already returned status SUCCESS." related: apis: * title: "Auctions reference" href: "/docs/references/rest/auctions/auctions" * title: "Listings availability reference" href: "/docs/references/rest/auctions/listings-availability" guides: * title: "About the Auctions API" href: "/docs/api-users/auctions" * title: "Buy a closeout auction via instant purchase" href: "/docs/api-users/buy-a-domain/instant-purchase" *** ## Overview Bidding lets you compete for domain names on [GoDaddy's auctions marketplace](https://auctions.godaddy.com). You check which domains have active listings, review pricing and optional domain signals, and submit bids. The auction closes on a set date. If you hold the highest bid at close, the domain fulfills to your account. The following diagram shows the workflow for bidding on domains in the GoDaddy auctions marketplace: Verify your GoDaddy account to increase your bid limits. Go to the [bidder verification page](https://www.godaddy.com/help/godaddy-auctions-bidder-verification-process-12416) for details. GoDaddy Auctions Inventory Files are downloadable datasets (ZIP, XML, and JSON) containing bulk information on live expired auctions and closeout listings. Use them to identify domains worth bidding on before calling the API. Go to the [Auctions Inventory page](https://inventory.auctions.godaddy.com/) to download Inventory Files. The following article provides a workflow for bidding on domains in the GoDaddy auctions marketplace. ## Prerequisites The following prerequisites are required before you can bid on domains: * a [legacy API key](https://classic-developer.godaddy.com/keys), exported as `GODADDY_API_KEY` in your environment * one or more domain names you want to bid on All Auctions endpoints use `{customerId}` in the path. Use `MY` for your own account. Go to [Your customer ID](https://developer.godaddy.com/docs/api-users/auctions#your-customer-id) if you need the UUID or are managing another account. ## Check listing availability The following procedure confirms whether domains have active expiring auctions listings and retrieves listing details. You need the `listingId` from the response to [place bids](#place-bids). You can check up to 50 domains per request. Use the `includes` query parameter to attach additional data to `AVAILABLE` results: | Value | What it includes | | ------------ | ----------------------------------------------------------- | | `listingMin` | Current bid price and auction close time | | `listing` | Full listing details (mutually exclusive with `listingMin`) | | `enrichment` | Domain signals from GoDaddy, Estibot, SEMrush, and Majestic | * Check availability with listing details: ```bash curl -s -X POST "https://api.godaddy.com/v1/customers/MY/aftermarket/listings/available?includes=listingMin" \ -H "Authorization: sso-key $GODADDY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "domains": ["example.com", "mybrand.net"] }' ``` Example response: ```json { "availabilities": [ { "domainName": "example.com", "status": "AVAILABLE", "listingId": 200000, "listingMin": { "currentBid": 50000000, "closingAt": "2026-09-01T18:00:00Z" } }, { "domainName": "mybrand.net", "status": "UNAVAILABLE" } ] } ``` Note the `listingId` for each `AVAILABLE` domain. You'll use it to [place a bid](#place-bids). ## Place bids The following procedure submits up to 20 bids in a single request. Bid amounts are in USD micro-units. Multiply dollars by `1,000,000` (for example, $100.00 = `100000000`). * Place bids: ```bash curl -s -X POST "https://api.godaddy.com/v1/customers/MY/aftermarket/listings/bids" \ -H "Authorization: sso-key $GODADDY_API_KEY" \ -H "Content-Type: application/json" \ -d '[ { "listingId": 200000, "bidAmountUsd": 100000000, "tosAccepted": true } ]' ``` Example response (200 — all bids placed): ```json [ { "listingId": 200000, "isHighestBidder": true, "bidId": "e8f0a45d-53c6-49e5-a1f2-08b993960e1b", "bidAmountUsd": 100000000, "status": "SUCCESS" } ] ``` If the response is 207, inspect each bid's `status` and `failureReason`. Successfully placed bids have a `bidId` for tracking. ## Error reference | HTTP status | Error code | Cause | Note | | ------------- | ------------------------------------------------- | ------------------------------------------------------ | ---- | | `400` | `BAD_SYNTAX` / `MALFORMED_INPUT` | Request body is malformed. | | | `403` | `BIDDER_BLOCKED` | Your account is blocked from bidding. | | | `403` | `BIDDER_BANNED` | Your account is banned from bidding. | | | `403` | `MISSING_CREDENTIALS` | API key not provided or invalid. | | | `422` | `MAX_BIDS_PER_REQUEST_EXCEEDED` | More than 20 bids in a single request. | | | `422` | `DUPLICATE_BIDS` | Multiple bids for the same `listingId` in one request. | | | `207` per-bid | `BID_MIN_NOT_MET` | Bid amount is below the listing's minimum. | | | `207` per-bid | `BIDDER_IS_SELLER` | You can't bid on your own listing. | | | `207` per-bid | `BIDDER_VERIFICATION_SHOPPER_MAX_APPROVED_AMOUNT` | Bid exceeds your verified spending limit | | | `207` per-bid | `BIDDER_VERIFICATION_SHOPPER_MAX_APPROVED_COUNT` | You have reached your bid count limit. | | | `207` per-bid | `LISTING_NOT_FOUND` | No active listing found for this `listingId`. | | | `429` | — | Rate limit exceeded. | | # Buy a domain through instant purchase (https://developer.godaddy.com/en/docs/api-users/buy-a-domain/instant-purchase) *** title: Buy a domain through instant purchase description: End-to-end workflow — confirm your payment method, preview all-in pricing, and purchase closeout auction domains. keywords: paymentProfileId, auctions/purchases/preview, auctions/purchases, totalPrice auctionPrice, PRICE\_MISMATCH, AUCTION\_NOT\_FOUND, acceptTos, NO\_ELIGIBLE\_PAYMENT\_PROFILE, auctionId, orderId instant purchase agentNotes: permissions: \["Aftermarket", "Payment Profile"] scopes: \[] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: false destructive: true failureRecovery: "Check per-domain status in 207 responses. Domains with status FAILED are safe to retry. Do not re-submit domains that already returned status SUCCESS. If totalPrice changed between preview and purchase, the domain fails with PRICE\_MISMATCH — re-run the preview step to get the updated price before retrying." related: apis: * title: "Instant Purchase reference" href: "/docs/references/rest/auctions/instant-purchase" guides: * title: "About the Auctions API" href: "/docs/api-users/auctions" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" * title: "Place bids on auction listings" href: "/docs/api-users/buy-a-domain/bidding" *** ## Overview Instant purchase lets you buy closeout (Buy Now) auction domains at a fixed price without bidding. The workflow is synchronous. You preview the all-in cost, then execute the purchase. Domains fulfillment begins immediately on success. The following diagram shows the workflow for instant purchase: Instant purchase charges your payment profile immediately and is not reversible. Always run the preview step first and verify `totalPrice` before executing. GoDaddy Auctions Inventory Files are downloadable datasets (ZIP, XML, and JSON) containing bulk information on live expired auctions and closeout listings. Use them to identify and analyze domains before placing bids or making purchases through the API. Go to the [Auctions Inventory page](https://inventory.auctions.godaddy.com/) to download Inventory Files. The following article provides a workflow for buying domains through instant purchase. ## Prerequisites The following prerequisites are required before you can buy domains through instant purchase: * a GoDaddy account with a [payment profile](https://developer.godaddy.com/docs/api-users/payment-profile) configured * a [legacy API key](https://classic-developer.godaddy.com/keys), exported as `GODADDY_API_KEY` in your environment * one or more domain names that have active closeout auction listings on GoDaddy Auctions All Auctions endpoints use `{customerId}` in the path. Use `MY` for your own account. Go to [Your customer ID](https://developer.godaddy.com/docs/api-users/auctions#your-customer-id) if you need the UUID or are managing another account. ## Get eligible payment profiles The following procedure retrieves the payment profiles on your account that are eligible for instant purchase. Note the `paymentProfileId` (you'll use it to [execute the purchase](#execute-purchase). * List eligible payment profiles: ```bash curl -s "https://api.godaddy.com/v1/customers/MY/paymentProfiles" \ -H "Authorization: sso-key $GODADDY_API_KEY" ``` The following is an example response: ```json { "paymentProfiles": [ { "paymentProfileId": 377693, "currencyId": "USD", "label": "6341", "category": "CREDIT_CARD", "status": "ACTIVE", "subCategory": "Visa", "expMonth": 7, "expYear": 2030 } ] } ``` Only `ACTIVE` profiles are returned. If the list is empty, go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile) before continuing. ## Preview pricing The following procedure retrieves the all-in price for up to 10 domains before you commit to purchasing. You can preview and purchase up to 10 domains per request. `totalPrice` includes the auction price, renewal or transfer fee, ICANN fee, and applicable taxes. All prices are in micro-units. Divide by `1,000,000` for the dollar amount (for example, `61990000` = $61.99). * Request a pricing preview: ```bash curl -s -X POST "https://api.godaddy.com/v1/customers/MY/auctions/purchases/preview" \ -H "Authorization: sso-key $GODADDY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "domains": ["example.com", "mybrand.net"] }' ``` The following is an example response (207 — one domain priced, one not found): ```json { "currencyId": "USD", "auctions": [ { "domainName": "example.com", "status": "SUCCESS", "auctionId": 690467872, "auctionPrice": 50000000, "totalPrice": 61990000 }, { "domainName": "mybrand.net", "status": "FAILED", "failureReason": "AUCTION_NOT_FOUND" } ] } ``` Only pass domains with `status: "SUCCESS"` to the purchase step. Note the `totalPrice` for each. You'll need the exact value to [execute the purchase](#execute-purchase). ## Execute purchase The following procedure purchases the domains you previewed. Pass the `totalPrice` from the preview pricing step exactly. If the price has changed since the preview, the domain fails with `PRICE_MISMATCH` and you'll need to re-run the preview. This step charges your payment profile. Verify all domain names and prices before submitting. * Execute the purchase: ```bash curl -s -X POST "https://api.godaddy.com/v1/customers/MY/auctions/purchases" \ -H "Authorization: sso-key $GODADDY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "currencyId": "USD", "paymentProfileId": 377693, "domains": [ { "domainName": "example.com", "totalPrice": 61990000, "acceptTos": true } ] }' ``` `paymentProfileId` is optional. If omitted, the API charges the customer's most recently used supported payment method. The following is an example response (200 — all purchased): ```json { "currencyId": "USD", "orderDetails": { "orderId": "4028591294" }, "auctions": [ { "domainName": "example.com", "status": "SUCCESS", "auctionId": 690467872, "totalPrice": 61990000 } ] } ``` If the response is 207, inspect each domain's `status` and `failureReason`. Domains with `status: "SUCCESS"` were purchased and charged. Domains with `status: "FAILED"` wern't charged. ## Error reference | HTTP status | Error code | Cause | Note | | ---------------- | ----------------------------- | ------------------------------------------------------------------------------- | --------------------------- | | `400` | `NO_ELIGIBLE_PAYMENT_PROFILE` | No active payment profiles found, or specified `paymentProfileId` not eligible. | | | `400` | `UNSUPPORTED_CURRENCY` | The requested `currencyId` isn't supported. | | | `422` | `PAYMENT_FAILED` | Payment profile was declined. | | | `207` per-domain | `AUCTION_NOT_FOUND` | Domain doesn't have an active closeout auction. | | | `207` per-domain | `PRICE_MISMATCH` | `totalPrice` doesn't match current pricing. | Re-run preview and resubmit | | `207` per-domain | `PRICING_UNAVAILABLE` | Pricing couldn't be retrieved for this domain. | | | `207` per-domain | `TOS_NOT_ACCEPTED` | `acceptTos` wasn't set to `true`. | | | `401` | — | Missing or invalid API key. | | | `403` | — | API key doesn't have access to this customer's account. | | | `429` | — | Rate limit exceeded. | | # August 13, 2026: Auctions Instant Purchase APIs are available for Closeout domains (https://developer.godaddy.com/en/docs/api-users/changelog/auctions-instant-purchase) *** ## title: "August 13, 2026: Auctions Instant Purchase APIs are available for Closeout domains" August 13, 2026 API Auctions New Related: Auctions listing availability checks are available via POST .../aftermarket/listings/available, Auctions bidding is available via POST .../aftermarket/listings/bids We've added Instant Purchase endpoints so you can buy eligible Closeout / Buy Now auction domains programmatically — list eligible payment profiles, preview all-in pricing, then purchase — so you can automate fixed-price Closeout acquisition without the Auctions UI. ## What changed * `GET /v1/customers/{customerId}/paymentProfiles` — list `ACTIVE` payment profiles eligible for Instant Purchase. * `POST /v1/customers/{customerId}/auctions/purchases/preview` — preview all-in pricing for up to 10 Closeout domains (`totalPrice` in USD micro-units). * `POST /v1/customers/{customerId}/auctions/purchases` — purchase one or more eligible Closeout domains using a `paymentProfileId` (optional; defaults to the most recently used supported method). You can use the `MY` alias for `{customerId}`. Authenticate with a legacy API key (`sso-key`). Partial success returns `207 Multi-Status` with per-domain `status` and `failureReason`. ## Who is affected Available to developers with Auctions Instant Purchase access and a configured payment profile. Existing Domains and Aftermarket partner integrations are unchanged; these endpoints are additive. Instant Purchase does not place bids on open Expired Auctions — use the bidding endpoint for that. ## Links * [Instant Purchase reference](https://developer.godaddy.com/docs/references/rest/auctions/instant-purchase) — endpoint schemas * [Buy through instant purchase](https://developer.godaddy.com/docs/api-users/buy-a-domain/instant-purchase) — preview and purchase workflow * [About the Auctions API](https://developer.godaddy.com/docs/api-users/auctions) — bidding vs Instant Purchase * [Product announcement](https://www.godaddy.com/resources/news/godaddy-auctions-expiry-apis-automate-domain-acquisition) — launch context # August 13, 2026: Auctions listing availability checks are available via POST .../aftermarket/listings/available (https://developer.godaddy.com/en/docs/api-users/changelog/auctions-listings-available) *** ## title: "August 13, 2026: Auctions listing availability checks are available via POST .../aftermarket/listings/available" August 13, 2026 API Auctions New Related: Auctions bidding is available via POST .../aftermarket/listings/bids, Auctions Instant Purchase APIs are available for Closeout domains ## What changed We've added `POST /v1/customers/{customerId}/aftermarket/listings/available` so you can check whether 1–50 domains have active aftermarket auction listings and get an `AVAILABLE` or `UNAVAILABLE` result per domain. Optional `?includes=listingMin`, `?includes=listing`, or `?includes=enrichment` attach listing details and domain signals (GoDaddy, Estibot, SEMrush, Majestic) for `AVAILABLE` domains, so you can verify targets before bidding or purchase. Existing integrations are unaffected; this endpoint is additive. You can use the `MY` alias for `{customerId}`. Authenticate with a legacy API key (`sso-key`). ## Links * [Listings Availability reference](https://developer.godaddy.com/docs/references/rest/auctions/listings-availability) — endpoint schema * [Place bids on auction listings](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding) — availability check in the bidding workflow * [Product announcement](https://www.godaddy.com/resources/news/godaddy-auctions-expiry-apis-automate-domain-acquisition) — launch context # August 13, 2026: Auctions bidding is available via POST .../aftermarket/listings/bids (https://developer.godaddy.com/en/docs/api-users/changelog/auctions-listings-bids) *** ## title: "August 13, 2026: Auctions bidding is available via POST .../aftermarket/listings/bids" August 13, 2026 API Auctions New Related: Auctions listing availability checks are available via POST .../aftermarket/listings/available, Auctions Instant Purchase APIs are available for Closeout domains We've added `POST /v1/customers/{customerId}/aftermarket/listings/bids` so you can place up to 20 bids per request on eligible Expired Auction listings. Each bid requires a `listingId`, `bidAmountUsd` (USD micro-units), and `tosAccepted: true`. Partial success returns `207 Multi-Status` with per-bid `status` and `failureReason`. Existing integrations are unaffected; this endpoint is additive. You can use the `MY` alias for `{customerId}`. Authenticate with a legacy API key (`sso-key`). ## Links * [Auctions reference](https://developer.godaddy.com/docs/references/rest/auctions/auctions) — Place multiple bids * [Place bids on auction listings](https://developer.godaddy.com/docs/api-users/buy-a-domain/bidding) — end-to-end bidding guide * [Product announcement](https://www.godaddy.com/resources/news/godaddy-auctions-expiry-apis-automate-domain-acquisition) — launch context # August 27, 2026: The Commerce API is now available for managing stores, catalogs, orders, and taxes (https://developer.godaddy.com/en/docs/api-users/changelog/commerce-apis-launch) *** title: "August 27, 2026: The Commerce API is now available for managing stores, catalogs, orders, and taxes" featureflag: "DOCS\_COMMERCE\_API\_ENABLED" ------------------------------------------- August 27, 2026 API Commerce New You can now manage a GoDaddy commerce store programmatically — configuration, catalog, orders, customers, taxes, and payment records — so you can run a store from your own code. ## What changed Commerce endpoints are available across REST and GraphQL subgraphs. Each authenticates with a Personal Access Token holding the matching `commerce.*` scope: * **Stores and sales channels** (REST) — read a store and its attributes with `commerce.store:read`; list the channels a customer can buy from with `commerce.channel:read`. * **Catalog** — `POST /v2/commerce/stores/{storeId}/catalog-subgraph`. Create and manage SKUs and SKU groups with `commerce.product:read` and `commerce.product:write`. * **Orders** — `POST /v1/commerce/order-subgraph`. Take an order from DRAFT to OPEN to COMPLETED or CANCELED with `commerce.order:read`, `:create`, `:update`, `:complete`, and `:cancel`. * **Customers** (REST) — list, read, create, and update customer records with `commerce.customer:read`, `:create`, and `:update`. Creating a customer de-duplicates against existing channel data instead of adding a second record. * **Transactions** (REST) — read the authorizations, captures, sales, and refunds behind an order with `commerce.transaction:read`, so you can reconcile what was sold against what was paid. * **Taxes** — `POST /v2/commerce/stores/{storeId}/tax-subgraph`. Create, update, and delete tax rates with `commerce.tax:read`, `:create`, `:write`, and `:delete`. ## Who is affected Available to developers with a GoDaddy account and an active commerce store. These are new endpoints on a new surface: no existing Domains, Auctions, or hosting integration is affected, and no action is required. ## Links * [About the Commerce API](https://developer.godaddy.com/docs/api-users/commerce) — structure, authentication models, and how the entities relate * [Commerce API scopes](https://developer.godaddy.com/docs/references/rest/commerce-scopes) — the scope-to-endpoint mapping * [Personal Access Tokens](https://developer.godaddy.com/docs/api-users/auth) — how to create a token and grant scopes # July 14, 2026: GoDaddy Developer Portal is now live with PATs, a CLI, and an agent skill (https://developer.godaddy.com/en/docs/api-users/changelog/developer-portal-launch) *** ## title: "July 14, 2026: GoDaddy Developer Portal is now live with PATs, a CLI, and an agent skill" July 14, 2026 Dev Platform New The GoDaddy Developer Portal is live at developer.godaddy.com — one place to explore GoDaddy's APIs, authenticate, and make your first call, whether you integrate by hand, from the terminal, or through an AI agent. ## What changed * API reference documentation covers each published API, with request and response samples for every endpoint. * Authentication uses Personal Access Tokens (PATs), created in the portal with granular, per-scope permissions. * The `gddy` command-line interface calls the APIs from your terminal, so you don't have to hand-build HTTP requests. * An agent skill builds on `gddy`, so AI agents acting on your behalf can discover and call the APIs. ## Who is affected All GoDaddy customers and resellers with products covered by the APIs, starting with Domains and Certificates. The portal is additive: existing integrations and API keys continue to work unchanged, and no action is needed. ## Links * [Developer Portal](https://developer.godaddy.com/) — portal home * [Authentication](https://developer.godaddy.com/docs/api-users/auth) — create a PAT and make an authenticated call * [CLI setup](https://developer.godaddy.com/docs/api-users/cli-setup) — install and configure `gddy` * [Agent skill for `gddy`](https://developer.godaddy.com/docs/api-users/agent-skill) — enable agent-driven API calls * [API reference](https://developer.godaddy.com/docs/references/rest) — endpoint documentation with samples # August 17, 2026: The Domains API now surfaces and supports purchasing Afternic Premium domains (https://developer.godaddy.com/en/docs/api-users/changelog/domains-afternic-premium) *** ## title: "August 17, 2026: The Domains API now surfaces and supports purchasing Afternic Premium domains" August 17, 2026 API Domains ChangedAction Required Afternic Premium domain inventory is now discoverable and purchasable through the Domains API. Four existing endpoints are updated to support the Premium acquisition flow. ## What changed **Availability endpoints — `POST /v3/domains/check-availability` and `GET /v3/domains/check-availability`** Results may now include domains with `inventory: PREMIUM`. These are Afternic fast-transfer domains. Indicative pricing for Premium domains includes a `fees` array on each `TermPrice` entry containing a `ONE_TIME_PREMIUM_DOMAIN_PURCHASE` fee, in addition to the base registration `price`. **Quote endpoint — `POST /v3/domains/registration-quotes`** When the quoted domain has `inventory: PREMIUM`, the response now includes: * `inventory: PREMIUM` — identifies the domain as Afternic inventory. * `fees` array — contains a `ONE_TIME_PREMIUM_DOMAIN_PURCHASE` entry with the exact amount and currency. The total cost of the registration is `price` plus this fee. For standard `REGISTRY` domains, `fees` is absent and behavior is unchanged. **Registration endpoint — `POST /v3/domains/registrations`** When the preceding quote's `fees` array is non-empty (i.e. `inventory: PREMIUM`), the execute request must include `consent.acknowledgedFees` containing the same entries verbatim — same types, amounts, and currencies — copied from the quote response. This confirms the customer explicitly accepted the specific charge before the irreversible purchase is executed. Omitting `consent.acknowledgedFees` when fees are present returns `422` with error name `consent_fees_required`. Supplying `acknowledgedFees` that does not match the locked quote returns `422` with error name `quote_mismatch`. ## Who is affected Developers building domain purchase flows who want to offer Afternic Premium inventory must handle the new `fees` field on quotes and echo it in `consent.acknowledgedFees` on registration. Integrations that only purchase standard `REGISTRY` domains are unaffected — `fees` is absent for those domains and no changes to existing request or response handling are required. ## What to do 1. Check `inventory` on availability and quote responses. When `inventory: PREMIUM`, surface the `fees` total to the customer alongside the base `price` before they confirm. 2. On `POST /v3/domains/registrations`, include `consent.acknowledgedFees` copied verbatim from the quote's `fees` array when fees are present. 3. Handle the new `422 consent_fees_required` error for the case where fees were present but `acknowledgedFees` was omitted. ## Links * [Domains API reference](https://developer.godaddy.com/docs/references/rest/domains/v3) — Domains v3 API reference * [RegistrationQuote schema](https://developer.godaddy.com/docs/references/rest/domains/v3/registration-quotes?s-highlight=fees\&path=response%00%23%2Fcomponents%2Fschemas%2FRegistrationQuote#response.200.applicationjson.response) — updated `RegistrationQuote` response including `fees` * [Consent schema](https://developer.godaddy.com/docs/references/rest/domains/v3/registrations?s-highlight=acknowledgedFees\&path=body%00%23%2Fcomponents%2Fschemas%2FRegistration%7Cconsent%00__29#request-body.applicationjson.body) — `consent.acknowledgedFees` field on the registration request body # August 10, 2026: Domains API v3 is now available for domain search, registration, and DNS management (https://developer.godaddy.com/en/docs/api-users/changelog/domains-api-v3-launch) *** ## title: "August 10, 2026: Domains API v3 is now available for domain search, registration, and DNS management" August 10, 2026 API Domains New We've released Domains API v3, a redesigned API for the domain lifecycle, so you can search for a domain, lock its price with a quote, register it, and manage its DNS — with the final price and required agreements confirmed before you commit to a charge. ## What changed New endpoints are available under `/v3/domains`, organized around a quote-then-execute flow: * Discovery — `GET /suggestions` returns natural-language domain suggestions with TLD filtering; `GET /check-availability` checks a single domain. * Registration — `POST /registration-quotes` locks the price, resolved settings, and required legal agreements behind a single-use `quoteToken` (10-minute TTL). `POST /registrations` executes with that token and returns `202 Accepted` with a pollable resource: `GET /registrations/{registrationId}` or `GET /operations/{operationId}`. * Domain management — `GET /domain-names/{domain-name}` retrieves domain details; `PUT /domain-names/{domain-name}/nameservers` replaces nameservers. * DNS records — `GET`/`POST /zones/{zone}/dns-records` list and create records; `DELETE /zones/{zone}/dns-records/{recordId}` deletes one. Authentication uses OAuth 2.0 with per-operation scopes (`domains.domain:read`, `domains.domain:create`, `domains.nameserver:update`, `domains.dns:update`). Mutating requests require an `Idempotency-Key` header, so retries are safe and never create duplicate registrations. Resellers act on behalf of customers with the `X-Shopper-Id` header. ## Who is affected v3 is additive and available to all developers with API access — no action is needed. Existing v1 and v2 integrations are unchanged, and both versions remain available. v3.0 covers domain search, registration, and DNS management; renewals, transfers, contact and privacy management, and bulk operations will arrive in additive v3 minor versions. ## Links * [Domains v3 API reference](https://developer.godaddy.com/docs/references/rest/domains/v3) — endpoint documentation # August 17, 2026: The Domains API now supports batch domain availability checking via POST /v3/domains/check-availability (https://developer.godaddy.com/en/docs/api-users/changelog/domains-batch-availability-check) *** ## title: "August 17, 2026: The Domains API now supports batch domain availability checking via POST /v3/domains/check-availability" August 17, 2026 API Domains New We've added `POST /v3/domains/check-availability` to the Domains API, so you can check the availability and indicative pricing of up to 25 domains in a single request instead of making one call per domain. ## What changed A new endpoint is available: * `POST /v3/domains/check-availability` — accepts a JSON body with a `domains` array (1–25 names) and returns one [`Availability`](https://developer.godaddy.com/docs/references/rest/domains/v3/discovery#check-availability-of-a-single-domain) result per domain in request order inside `{ "items": [...] }`. Domains that cannot be checked carry an `error` object on that item rather than failing the whole request. One optional request field gives you control over the check behavior: * `optimizeFor` — `SPEED` (default) uses cached zone data for a fast response; `ACCURACY` performs a live registry check for authoritative availability at higher latency. Availability results are best-effort and indicative. The authoritative availability check always runs at quote time (`POST /v3/domains/registration-quotes`). For single-domain checks without a request body, the existing `GET /v3/domains/check-availability` endpoint is unchanged. ## Who is affected Any developer building domain search or catalog experiences on the Domains API. The `domains.domain:read` OAuth scope is required — no new scope is needed if you already call the GET endpoint. Existing integrations using `GET /v3/domains/check-availability` are unaffected. ## Links * [Domains API reference](https://developer.godaddy.com/docs/references/rest/domains/v3/discovery#check-availability-of-one-or-more-specific-domains) — `POST /v3/domains/check-availability` request and response schema * [Registration quotes](https://developer.godaddy.com/docs/references/rest/domains/v3/registration-quotes) — authoritative availability is confirmed at quote time # August 17, 2026: The Domains API now supports listing all domains in an account via GET /v3/domains/domain-names (https://developer.godaddy.com/en/docs/api-users/changelog/domains-list-domain-names) *** ## title: "August 17, 2026: The Domains API now supports listing all domains in an account via GET /v3/domains/domain-names" August 17, 2026 API Domains New We've added `GET /v3/domains/domain-names` to the Domains API, so you can retrieve a paginated list of all domain names owned by the authenticated account, with filtering to narrow results by lifecycle status. ## What changed A new endpoint is available: * `GET /v3/domains/domain-names` — returns a cursor-paginated collection of domains with their status, nameservers, expiry date, auto-renew, privacy, and transfer lock settings. Four optional query parameters control the results: * `statuses` — comma-separated list of one or more exact lifecycle statuses (e.g. `?statuses=ACTIVE,EXPIRED`). Accepted values: `ACTIVE`, `EXPIRED`, `PENDING_REGISTRATION`, `PENDING_TRANSFER`, and others defined in `DomainStatus`. Use this when you need to filter on specific known status values. * `lifecycleGroups` — comma-separated list of coarse lifecycle phases: `PENDING`, `REGISTERED`, `PENDING_TERMINAL`, or `TERMINAL`. Use this when you want stable filtering that continues to work as new statuses are added. `statuses` and `lifecycleGroups` are mutually exclusive; supplying both returns `400`. * `updatedAfter` — RFC 3339 timestamp; returns only domains last updated after this time. * `expiresBefore` — RFC 3339 timestamp; returns only domains expiring before this time. * `pageSize` — number of results per page, 1–200, defaults to 100. Pagination is cursor-based via `pageToken`; offset-based paging is not supported. ## Who is affected Any developer building portfolio management, renewal automation, or reporting tools on the Domains API. The `domains.domain:read` OAuth scope is required — the same scope used by `GET /v3/domains/domain-names/{domain-name}`. No existing endpoints are affected. ## Links * [Domains API reference](https://developer.godaddy.com/docs/references/rest/domains/v3/domains#list-registered-domains) — `GET /v3/domains/domain-names` request parameters and response schema * [DomainStatus values](https://developer.godaddy.com/docs/references/rest/domains/v3/domains?s-highlight=statuses\&path=statuses%00__0%7Cstatuses%5B%5D%00%23%2Fx-ext%2Fb594312#parameters.query.statuses) — full list of accepted `statuses` values * [Lifecycle groups](https://developer.godaddy.com/docs/references/rest/domains/v3/domains?s-highlight=lifecycleGroups\&path=lifecycleGroups%00__0%7ClifecycleGroups%5B%5D%00%23%2Fx-ext%2F847c074#parameters.query.lifecyclegroups) — accepted `lifecycleGroups` values # August 17, 2026: Domain availability and suggestion results now include `firstTermPrice` and `recommended` pricing fields (https://developer.godaddy.com/en/docs/api-users/changelog/domains-pricing-firsttermprice-recommended) *** ## title: "August 17, 2026: Domain availability and suggestion results now include `firstTermPrice` and `recommended` pricing fields" August 17, 2026 API Domains Changed We've added two optional fields to the `TermPrice` entries returned by `POST /v3/domains/check-availability`, `GET /v3/domains/check-availability`, and `GET /v3/domains/suggestions`, so you can surface promotional pricing and highlight the best-value term to customers without additional logic. `firstTermPrice` is the discounted price for only the first term unit within a multi-year period — present when a first-term promotion applies to that period and typically omitted when `period` is 1 (where it equals `price`). `recommended` is a boolean flag that, when `true`, marks the best-value term based on active discounts or promotions; at most one entry in the `prices` array carries this flag, and it is absent rather than `false` when no recommendation applies. Both fields are optional and additive. Existing integrations that do not read them are unaffected and require no changes. ## Links * [Domains API reference](https://developer.godaddy.com/docs/references/rest/domains/v3/discovery?s-highlight=firstTermPrice\&path=response%00%23%2Fcomponents%2Fschemas%2FAvailability%7Cprices%5B%5D%00%23%2Fx-ext%2F50f74db#response.200.applicationjson.response) — updated `TermPrice` schema # August 17, 2026: The Domains API now supports replacing individual DNS records via PUT /v3/domains/zones/{zone}/dns-records/{recordId} (https://developer.godaddy.com/en/docs/api-users/changelog/domains-replace-dns-record) *** ## title: "August 17, 2026: The Domains API now supports replacing individual DNS records via PUT /v3/domains/zones//dns-records/" August 17, 2026 API Domains New We've added `PUT /v3/domains/zones/{zone}/dns-records/{recordId}` to the Domains API, so you can fully replace a specific DNS record in a zone by its stable `recordId` without affecting other records. ## What changed A new endpoint is available: * `PUT /v3/domains/zones/{zone}/dns-records/{recordId}` — fully replaces an existing DNS resource record. All writable fields must be supplied in the request body: `name`, `type`, `data`, and `ttl`. Partial updates are not supported; omitting a writable field replaces it with its default. Changes are applied synchronously and the updated `DNSRecord` is returned in the response. The `DNSRecord` request body supports `A`, `AAAA`, `CAA`, `CNAME`, `MX`, `SRV`, and `TXT` record types. Type-specific fields — `priority` (MX, SRV), `weight`, `port`, `service`, `protocol` (SRV), `flag`, `tag` (CAA) — are required or optional depending on the record type. TTL must be between 600 and 86400 seconds. GoDaddy-managed `SOA` and `NS` records are read-only. Attempting to replace them returns `409 Conflict`. ## Who is affected Any developer managing DNS records programmatically via the Domains API. The `domains.dns:update` OAuth scope is required. No existing endpoints are affected. ## Links * [Domains API reference](https://developer.godaddy.com/docs/references/rest/domains/v3/records#replace-a-dns-record) — `PUT /v3/domains/zones/{zone}/dns-records/{recordId}` request and response schema # Changelog (https://developer.godaddy.com/en/docs/api-users/changelog) *** title: Changelog description: What's new in the GoDaddy Developer Portal — new endpoints, behavior changes, and deprecations. keywords: release notes, API updates, new endpoints, behavior changes, deprecations, version history, Domains Commerce Auctions releases ---------------------------------------------------------------------------------------------------------------------------------------- Track updates to the GoDaddy Developer Portal, newest first. # Agent skill for gddy (https://developer.godaddy.com/en/docs/api-users/cli/agent-skill) *** title: Agent skill for gddy description: Install the gddy agent skill so Claude Code or another AI coding agent can drive the GoDaddy CLI for you. keywords: npx skills add godaddy/cli, claude plugin marketplace add, Claude Code Cursor Codex Windsurf opencode, gddy --dry-run, AI coding agent CLI, skills installer, gddy auth status check agentNotes: permissions: \["Any account"] scopes: \["Depends on invoked command — the skill drives the gddy CLI, which inherits REST endpoint scopes"] rateLimit: "N/A (installation only) — see /docs/api-users/rate-limits for the CLI's underlying call limits." idempotent: true destructive: false failureRecovery: "Installation is safe to repeat. Re-run the install command to update or reinstall. Removing the skill does not affect the gddy CLI itself or its stored credentials." related: guides: * title: "Set up the CLI" href: "/docs/api-users/cli/set-up" * title: "CLI reference" href: "/docs/api-users/cli/reference" * title: "GoDaddy MCP server" href: "/docs/api-users/mcp" * title: "Authenticate" href: "/docs/api-users/auth" concepts: * title: "About the GoDaddy CLI" href: "/docs/api-users/cli" *** ## Overview The `gddy` agent skill helps an AI coding agent install and use the [`gddy` CLI](https://developer.godaddy.com/docs/api-users/cli/set-up) on your behalf. Installing the skill is a one-time setup. After it's in place, you can ask your agent to find a domain, check pricing, register it, or update DNS records in plain language, and it runs the actual `gddy` commands using your own authenticated session. After you install the skill, you can ask your agent things like: * "Set up `gddy` for me." (installs the CLI; you're prompted to log in automatically the first time a command needs it) * "Find available domains for a coffee subscription startup." * "Is `example.com` available, and what would it cost to register?" * "Add a CNAME record for `www` on `example.com` pointing to `example.github.io`." * "List the DNS records on `example.com`." Your agent will run the equivalent `gddy` commands, parse the JSON output, and summarize the result. It also knows how to use the CLI's self-documentation to stay current as `gddy` evolves (`gddy --help`, `gddy search `, `gddy tree`, and `gddy guide`). ## Safety notes The skill can purchase domains and modify DNS records if you ask it to. These guardrails apply when it does: * Domain purchase is real money and not reversible. The skill walks through the quote-then-purchase flow and confirms with you before finalizing a purchase. * `gddy dns set` and `gddy dns delete` are destructive — they replace or remove every matching record. The skill runs these with `--dry-run` first and shows you the change before applying it. * The skill acts with whatever credentials and environment your `gddy` CLI is currently authenticated against. Check with `gddy auth status` if you're unsure which account or environment your agent is operating on. This skill is not the same as the [GoDaddy MCP server](https://developer.godaddy.com/docs/api-users/mcp). The MCP server is a hosted, read-only service anyone can connect to for domain search and availability. The agent skill helps your coding agent install and run `gddy` itself, so it can do everything the CLI can do (including domain purchase and DNS management) using your own credentials. Go to [About the GoDaddy CLI](https://developer.godaddy.com/docs/api-users/cli#cli-agent-skill-mcp-server-and-rest-api) for a comparison of the CLI, the skill, and the MCP server. ## Install the skill The skill is compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills. It supports Claude Code, Cursor, Codex, Windsurf, opencode, and many other compatible AI coding agents. The following procedure installs the `gddy` agent skill. **Claude Code** * In Claude Code, run the following commands: ```bash claude plugin marketplace add godaddy/cli claude plugin install gddy@godaddy ``` **Any other AI coding agent** * In your agent's terminal, run the following command: ```bash npx skills add godaddy/cli --skill gddy --agent ``` Swap `` for whichever agent you use (`claude-code`, `cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. # About the GoDaddy CLI (https://developer.godaddy.com/en/docs/api-users/cli) *** title: About the GoDaddy CLI description: What the GoDaddy CLI covers, how it authenticates, and how it relates to the agent skill and the MCP server. keywords: gddy command, gddy domain, gddy dns, CLI vs MCP server, CLI vs REST API, agent skill comparison, terminal domain management, install gddy, domain purchase CLI related: guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Authenticate" href: "/docs/api-users/auth" * title: "MCP server" href: "/docs/api-users/mcp" *** ## Overview `gddy` is the GoDaddy CLI for domain and DNS operations. Install it once and use it from the terminal, or hand it off to an AI coding agent. ## Choose your guide ## CLI, agent skill, MCP server, and REST API | Tool | What it does | Account required? | Write access? | | --------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------- | ------------- | | `gddy` CLI | Install locally. Search, purchase, and manage domains and DNS from the terminal. | Yes | Yes | | [Agent skill for `gddy`](https://developer.godaddy.com/docs/api-users/cli/agent-skill) | Runs `gddy` on your behalf inside an AI coding agent using your authenticated session. | Yes | Yes | | [GoDaddy MCP server](https://developer.godaddy.com/docs/api-users/mcp) | Hosted, read-only domain search and availability. No install. | No | No | | [REST API](https://developer.godaddy.com/docs/references/rest) | Direct API calls — full read/write access to domains, DNS, and more. | Yes | Yes | ## Related * [Set up the CLI](https://developer.godaddy.com/docs/api-users/cli/set-up) * [CLI reference](https://developer.godaddy.com/docs/api-users/cli/reference) * [Agent skill for `gddy`](https://developer.godaddy.com/docs/api-users/cli/agent-skill) * [GoDaddy MCP server](https://developer.godaddy.com/docs/api-users/mcp) * [Payment profile](https://developer.godaddy.com/docs/api-users/payment-profile) (required for domain purchase) * [Authenticate](https://developer.godaddy.com/docs/api-users/auth) # CLI workflow reference (https://developer.godaddy.com/en/docs/api-users/cli/reference) *** title: CLI workflow reference description: "Reference for common gddy workflows: authentication, Domains, DNS, output flags, and payment methods." keywords: gddy auth login, gddy domain available, gddy domain quote, gddy domain purchase --quote-token, gddy dns set, gddy dns delete --dry-run, gddy tree, gddy guide, gddy hosting nodejs, gddy api, gddy pat add related: guides: * title: "Set up the CLI" href: "/docs/api-users/cli/set-up" * title: "Agent skill for gddy" href: "/docs/api-users/cli/agent-skill" * title: "Authenticate" href: "/docs/api-users/auth" concepts: * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview ## Other command surfaces The installed CLI also includes the following command families. They are intentionally not expanded into a second, incomplete catalog on this page; use the listed help command to inspect the version installed on your machine. | Command family | Use it for | Discover commands | | --------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `gddy api` | Browse API domains and operations, inspect schemas and parameters, call REST or GraphQL operations | `gddy api --help` | | `gddy hosting nodejs` | Create and manage Node.js hosting apps, source uploads, deployments, GitHub connections, secrets, logs, and status | `gddy hosting nodejs --help` | | CLI administration | Environments (`env`), Personal Access Tokens (`pat`), updates (`update`), feature flags (`flags`), and shell completion | `gddy --help` | | CLI discovery | Search commands and built-in guides, print the tree, or generate completions | `gddy search `, `gddy guide`, `gddy tree`, `gddy completion --help` | ## Authentication and credentials The following table lists the `gddy` commands for authentication and credential management: | Command | Description | | --------------------------------- | ------------------------------------------------------------------------------ | | `gddy auth login` | Authenticate using browser-based login | | `gddy auth status` | Show the current authentication state | | `gddy pat add --env ` | Store a Personal Access Token for non-interactive authentication (CI, scripts) | | `gddy env get` | Show the active environment | | `gddy env set ` | Set the active environment (for example, `ote` or `prod`) | ## Domains The `gddy domain` namespace covers domain availability, search, registration, and management. ### Domain search and purchase The following table lists the `gddy` commands for domain search and purchase: | Command | Description | Note | | -------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | | `gddy domain available ` | Check whether a single domain is available to register | | | `gddy domain available --check-type full` | Full registry check | Provides a slower, definitive result | | `gddy domain suggest "" --tlds com,net,io --limit 5` | Get domain name suggestions for a keyword or phrase | | | `gddy domain quote ` | Quote a domain | | | `gddy domain agreements --tld ` | Retrieve the ICANN agreements required for a registration | | | `gddy domain purchase --quote-token --agree --confirm` | Register the domain from a `gddy domain quote` token | Charges the account (use `--confirm` to proceed) | | `gddy domain contacts init` | Write a `contacts.toml` template for reuse across purchases | | `gddy domain purchase` doesn't take a domain name directly. It registers whatever `gddy domain quote ` locked in, using that command's `--quote-token` (valid for about 10 minutes). Run `gddy guide domain-purchase` for the full walkthrough. ### Domain management The following table lists the `gddy` commands for domain management: | Command | Description | | ---------------------------------- | --------------------------------------------- | | `gddy domain list` | List all domains on the authenticated account | | `gddy domain list --status ACTIVE` | Filter domains by status | | `gddy domain get ` | Get full detail for a single domain | ## DNS The following table lists the `gddy` commands for DNS management: | Command | Description | | ----------------------------------------------------------------------- | --------------------------------------- | | `gddy dns list ` | List all DNS records on a domain | | `gddy dns list --type A --name www` | Filter by record type and name | | `gddy dns add --type A --name www --data 192.0.2.10 --ttl 600` | Add a DNS record | | `gddy dns set --type A --name www --data 192.0.2.20 --ttl 600` | Replace all records for a type and name | | `gddy dns delete --type A --name www` | Delete all records for a type and name | `gddy dns add` appends records. `gddy dns set` replaces every record for the type and name combination. `gddy dns delete` removes every record for the type and name (it doesn't remove GoDaddy-managed `NS` or `SOA` records). Use `--dry-run` with destructive commands to preview changes. ## Output and flags Every command returns structured output. In an interactive terminal the default is human-readable; in pipes, CI, and scripts the default is JSON. ```json { "data": { "apiUrl": "https://api.ote-godaddy.com", "env": "ote" } } ``` **Format:** `-o, --output ` (shortcuts: `--json`, `--human`, `--toon`) The following table lists the available output shaping and execution flags: | Flag | What it does | | ------------------------------------------ | ------------------------------------------------------------- | | `--fields ` | Select output fields | | `--filter ` | Filter list items | | `--expr ` | Transform the whole result | | `--limit` / `--offset` | Paginate client-side | | `--verbose [fields]` | Add execution metadata | | `--schema` | Print a command's documented output fields without running it | | `--env ` | One-off environment override | | `--dry-run` | Preview a supported mutation | | `--credential-store ` | Choose where credentials are stored | | `--debug ` | Diagnostic logging | | `--timeout ` | For example `60s` or `5m` | ## Payment methods The following table lists the `gddy` commands for payment methods: | Command | Description | | -------------------------- | --------------------------------------------------------- | | `gddy payment-methods add` | Open the payment-methods page for the current environment | Domain forwarding, registry lock, renewals, and contact updates aren't in the CLI yet. Use the REST API for those operations. Go to [About the GoDaddy CLI](https://developer.godaddy.com/docs/api-users/cli) for what `gddy` covers. # Set up the CLI (https://developer.godaddy.com/en/docs/api-users/cli/set-up) *** title: Set up the CLI description: Install the GoDaddy CLI as `gddy` and make a first call—`gddy` handles authentication automatically when a command needs it. keywords: install.sh install.ps1, \~/.local/bin gddy, %LOCALAPPDATA% Programs gddy, GDDY\_PAT environment variable, gddy auth login, gddy pat add CI non-interactive, gddy domain suggest, gddy domain purchase --agree agentNotes: permissions: \["Any account"] scopes: \["Depends on invoked command — CLI wraps REST endpoints and inherits their scopes"] rateLimit: "Rate-limited per credential per window (per underlying REST call). Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "CLI is a wrapper — same recovery semantics as the underlying REST endpoint. Config is stored in \~/.config/gddy/ (Linux/macOS) or the platform equivalent. Delete config to reset credentials." related: guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Authenticate" href: "/docs/api-users/auth" * title: "CLI reference" href: "/docs/api-users/cli/reference" * title: "Agent skill for gddy" href: "/docs/api-users/cli/agent-skill" * title: "GoDaddy MCP server" href: "/docs/api-users/mcp" concepts: * title: "About the GoDaddy CLI" href: "/docs/api-users/cli" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview The CLI installer installs the GoDaddy CLI as `gddy`. If you prefer raw HTTP calls instead, go to the [API quickstart](https://developer.godaddy.com/docs/api-users/quickstart). You can also have an AI coding agent install and drive `gddy` for you by using the [agent skill](https://developer.godaddy.com/docs/api-users/cli/agent-skill). For read-only domain search without installing anything, go to the [MCP server](https://developer.godaddy.com/docs/api-users/mcp). Go to [About the GoDaddy CLI](https://developer.godaddy.com/docs/api-users/cli) for what `gddy` covers and how it relates to the agent skill and the MCP server. The install scripts come from the public `godaddy/cli` repository. You don't need GitHub authentication to install or update the CLI. ## Install or update the CLI Run the installer for your shell. Re-running the same command updates `gddy` to the latest release. The following procedure installs or updates the CLI. **macOS / Linux** The script downloads the `gddy` binary, verifies its checksum, and installs it to `~/.local/bin`. It doesn't modify your `PATH`. 1. Run the following command: ```bash curl -fsSL https://github.com/godaddy/cli/releases/latest/download/install.sh | bash ``` 2. (*Optional*) If `~/.local/bin` is not already in your path, add it yourself: ```bash export PATH="$HOME/.local/bin:$PATH" ``` Add the same line to your shell profile (`~/.zshrc` or `~/.bashrc`) to persist it across new terminals. This also works from Git Bash, MSYS2, or Cygwin on Windows. **Windows PowerShell** The script downloads the `gddy.exe` binary, verifies its checksum, installs it to `%LOCALAPPDATA%\Programs\gddy`, and adds that directory to your user `PATH` (open a new terminal to pick it up). * Run the following command: ```powershell irm https://github.com/godaddy/cli/releases/latest/download/install.ps1 | iex ``` If PowerShell blocks the command with an execution-policy error (common on corporate-managed machines that default to `Restricted`), run `Set-ExecutionPolicy -Scope Process Bypass` first and try again, or download `install.ps1` and inspect it before running it directly. ## Verify the install Verify the install by checking the version and help message. If your shell can't find `gddy`, the install directory isn't on your `PATH`. The following procedure verifies the installation was successful. 1. Open a new terminal if the installer changed your `PATH`, then run: ```bash gddy --version gddy --help ``` 2. (*Optional*) Confirm the binary exists (if your shell can't find `gddy`): **macOS / Linux** `~/.local/bin/gddy` **Windows PowerShell** `%LOCALAPPDATA%\Programs\gddy\gddy.exe` ## Authenticate You don't need to log in ahead of time. Any command that needs authentication opens a browser for OAuth login automatically the first time you run it. The following procedure logs in early, which is useful if you want to confirm your session before running commands or switch accounts. 1. Run the following command: ```bash gddy auth login ``` 2. Confirm the CLI has an active session: ```bash gddy auth status ``` CI pipelines, SSH sessions, and other non-interactive environments can't complete the browser flow, so authentication has to happen ahead of time there. Generate a [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth/how-to) and store it for `gddy` to use instead: ```bash echo 'gd_pat_...' | gddy pat add --env prod "CI token" ``` Or skip local storage and supply it per-run with the `GDDY_PAT` (or `GDDY_PAT_`) environment variable. The CLI checks for a PAT before falling back to OAuth. Run `gddy guide auth` for the full walkthrough. ## Add a payment method Domain purchase requires a billing method on your GoDaddy account. If you haven't logged in yet, `gddy` prompts you to before opening the payment-methods page. The following procedure adds a payment method. * Open the payment-methods page for your environment: ```bash gddy payment-methods add ``` Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile) for information on account URLs, verification steps, and common billing errors. ## Make a first call The following procedure makes a first call to the Domains API to get available domain suggestions for "coffee shop". If you haven't logged in yet, `gddy` prompts you to the first time one of these commands needs it. 1. Ask the Domains API for available domain suggestions for "coffee shop": ```bash gddy domain suggest "coffee shop" --tlds com --limit 5 ``` 2. Check a suggestion directly: ```bash gddy domain available ``` 3. After you've found an available domain, get a price quote before purchasing: ```bash gddy domain quote ``` 4. Complete the purchase using the quote token from the previous step: ```bash gddy domain purchase --quote-token --agree --confirm ``` `gddy domain purchase` registers the domain and charges the payment method you added earlier. The quote token from step 3 is only valid for about 10 minutes, and `--confirm` is required to finalize the charge. Run `gddy guide domain-purchase` for the full walkthrough, including how to supply registrant contact details. Go to [CLI workflow reference](https://developer.godaddy.com/docs/api-users/cli/reference) for command details on domain management, DNS, Platform Apps, and payment methods. Run `gddy tree` for the exact complete command list in your installed version. # Commerce core concepts (https://developer.godaddy.com/en/docs/api-users/commerce/concepts) *** title: Commerce core concepts description: The entities, relationships, and access patterns behind the Commerce API. keywords: storeId, channelId, SKU, SKUGroup, lineItem, customerId, DRAFT OPEN CLOSED, order status values, subgraph endpoint, entity model related: guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" * title: "Manage catalog items" href: "/docs/api-users/commerce/manage-catalog" * title: "Process an order" href: "/docs/api-users/commerce/manage-orders-and-customers" * title: "Configure taxes" href: "/docs/api-users/commerce/configure-taxes" concepts: * title: "About the Commerce API" href: "/docs/api-users/commerce" * title: "How GoDaddy APIs work" href: "/docs/api-users/concepts/how-godaddy-apis-work" apis: * title: "Commerce API scopes" href: "/docs/references/rest/commerce-scopes" *** ## Overview The Commerce API spans a hierarchy of scoped entities, two transport patterns, and a scope model designed around the operation lifecycle rather than just read and write. This page explains the concepts you need before writing your first integration. ## Store Commerce revolves around one store. Everything belongs to a store. This includes: * Catalog * Orders * Taxes * Customers * Channels Every Commerce API call either targets a store directly or operates on a resource that belongs to one. Every call that reaches a store resource requires a `storeId` (a UUID that identifies the store). Your `storeId` is generated automatically when you create a GoDaddy Payments account. Sign in to your GoDaddy account and go to [About the Commerce API](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to retrieve your `storeId`. ## Entity model The following diagram shows how Commerce entities relate to each other: The following table describes the Commerce entities: | Entity | Description | | ----------- | ----------------------------------------------------------------------------------- | | Store | The root container. All other entities belong to a store. | | Catalog | SKUs and SKU groups that represent the products a store sells. | | Tax | Tax rules and rates applied to orders at checkout. | | Channel | The surface a customer buys from: an online store, a POS terminal, or a mobile app. | | Customer | A person associated with one or more orders. | | Order | A customer purchase. References both the customer and the catalog items bought. | | Transaction | A payment record associated with an order. | ## SKUs and SKU groups The catalog domain models products as SKUs and SKU groups. There's no `Product` type in the Catalog GraphQL schema. A SKU group is a collection of related SKUs (for example, a t-shirt available in multiple sizes). Each SKU represents one specific, purchasable variant. Creating a product in the Merchant Control Panel creates a SKU group with one or more child SKUs. When working with the Catalog subgraph, you typically create a SKU group first, then create individual SKUs within it. Go to [Manage catalog items](https://developer.godaddy.com/docs/api-users/commerce/manage-catalog) for the full workflow. ## Order lifecycle Orders progress through a defined lifecycle. The scope model mirrors each stage. The following table lists the stages and the scopes required: | Stage | Scope required | | ---------------------------- | ------------------------- | | Read or query orders | `commerce.order:read` | | Create a draft order | `commerce.order:create` | | Update order fields | `commerce.order:update` | | Complete (finalize) an order | `commerce.order:complete` | | Cancel an order | `commerce.order:cancel` | An order that's created as a draft must be explicitly completed. Cancelling stops the order. ## REST and GraphQL subgraphs Commerce uses two transport patterns depending on the complexity of the data. Categories with simple, predictable shapes (Store, Channel, Customer, Transaction) use REST. Categories with rich, nested relationships (Catalog, Orders, and Tax) expose a GraphQL subgraph, which lets you fetch related data in a single round trip and select exactly the fields you need. GraphQL subgraphs also require an `x-store-id` header (in addition to or instead of the path `{storeId}`, depending on the subgraph). Go to the [REST vs GraphQL subgraph](https://developer.godaddy.com/docs/api-users/commerce#rest-vs-graphql-subgraph) table on About the Commerce API for exact endpoints, path parameters, and header rules per subgraph. ## Scope model Commerce scopes follow the pattern `commerce.{resource}:{action}`. Request the least privilege your integration needs. Each how-to page lists the scopes required for each operation. Go to [Commerce API scopes](https://developer.godaddy.com/docs/references/rest/commerce-scopes) for the complete scope-to-endpoint mapping. ### Order scopes The Order resource has the most granular scope model, with a separate scope for each lifecycle transition: | Scope | What it grants | | ------------------------- | --------------------------- | | `commerce.order:read` | Query orders and line items | | `commerce.order:create` | Create draft orders | | `commerce.order:update` | Update order fields | | `commerce.order:complete` | Mark an order complete | | `commerce.order:cancel` | Cancel an order | This design lets you grant an integration exactly the access it needs. A reporting tool might only need `commerce.order:read`; an order-management app needs `read` and `complete`. ### Catalog scope naming Catalog scopes are named `commerce.product:*` for historical reasons, even though the GraphQL schema uses SKU and SKU group terminology. Request `commerce.product:read` to query catalog data — not a `sku` or `catalog` variant. ## Cursor-based pagination The GraphQL subgraphs (Catalog, Order, Tax) use cursor-based pagination on connection types. Paginated queries return a connection object with a `nodes` or `edges` array and a `pageInfo` object. | Argument | Description | | -------- | ------------------------------------------------------ | | `first` | Return the first N results after the cursor | | `after` | Cursor from the previous page's `pageInfo.endCursor` | | `last` | Return the last N results before the cursor | | `before` | Cursor from the previous page's `pageInfo.startCursor` | Connection types also expose `totalCount` so you can display progress or calculate how many pages remain. REST endpoints use offset-based or token-based pagination depending on the resource. Go to [Paginate results](https://developer.godaddy.com/docs/api-users/pagination) for the cross-cutting pagination reference. # About the Commerce API (https://developer.godaddy.com/en/docs/api-users/commerce) *** title: About the Commerce API description: Build integrations to manage stores, catalogs, orders, customers, and fulfillment with GoDaddy Commerce. keywords: storeId, GraphQL subgraph, REST endpoints, ecommerce API, merchant store integration, shop management, product inventory, order management API related: concepts: * title: "Commerce core concepts" href: "/docs/api-users/commerce/concepts" guides: * title: "Authenticate" href: "/docs/api-users/auth" * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" *** ## Overview Use the Commerce API to manage stores, catalogs, orders, customers, and taxes. The following table lists the items you need to use the Commerce API on your own store: | Item | Description | Note | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GoDaddy Payments account | A separate account from your standard GoDaddy account that creates your commerce store and the `storeId` you'll pass to every Commerce API call. | Go to [GoDaddy Payments](https://www.godaddy.com/payments) for an overview of what's included and [Get started with GoDaddy Payments](https://www.godaddy.com/help/get-started-with-godaddy-payments-40721) to create your account and activate your store. | | Personal Access Token (PAT) | A token you use to authenticate your API calls. | Go to [Authenticate](https://developer.godaddy.com/docs/api-users/auth) to create a PAT with the scopes your integration needs. | | Store ID | A unique identifier for your commerce store. | Sign in and go to the [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) section to see your store IDs. | ## GoDaddy Payments GoDaddy Payments is a separate account from your standard GoDaddy account. Creating a GoDaddy Payments account creates a GoDaddy business entity and a default store simultaneously. The `storeId` is generated automatically as part of that process. There's no API to create a GoDaddy Payments account or a store. You must set up a GoDaddy Payments account through the UI. Go to [GoDaddy Payments](https://www.godaddy.com/payments) for an overview of what's included. ## Your stores Your stores include a `storeId` that you'll pass to every Commerce API call. You must sign in to see your store IDs. When you sign in, information about your stores, including your `storeId`s, displays in this section. ## How the API is structured The store is the root resource. Your catalog, taxes, and channels all belong to a specific store, and most endpoints take a `{storeId}` path parameter. For the data model, scope model, and deeper access patterns, go to [Commerce core concepts](https://developer.godaddy.com/docs/api-users/commerce/concepts). ### REST vs GraphQL subgraph Three categories expose a single GraphQL endpoint that accepts queries and mutations. Use schema introspection to discover available types and operations. The following table shows the different categories and the endpoints they expose: | Category | Endpoint | `storeId` requirement | | -------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Catalog | `POST /v2/commerce/stores/{storeId}/catalog-subgraph` | Send the same store ID in the path `{storeId}` and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header. | | Order | `POST /v1/commerce/order-subgraph` | Required `x-store-id` header selects the store; there's no `{storeId}` path parameter. Mutations that take an input object also require `context.storeId`; `id`-only mutations (e.g. `cancelOrder`) rely on the header. | | Tax | `POST /v2/commerce/stores/{storeId}/tax-subgraph` | Path parameter and `x-store-id` header (must match). | The remaining categories (Channel, Customer, Store, and Transaction) use standard REST endpoints. Use: * REST for straightforward reads and writes on a single resource. It's the shortest path and needs no query. * GraphQL subgraph on catalog, orders, and tax when you need related data in one round trip or want to select exactly the fields you use. The shapes are richer and vary more, so fetching precisely is worth it. Most REST endpoints use v1; the exception is Transaction, which uses v2 (`/v2/commerce/stores/{storeId}/transactions`). GraphQL versions are visible in the endpoint paths above. ## API categories The following table shows the different categories, the tasks they support, and their transport: | Category | Task | Transport | Guide | | ----------- | --------------------------- | --------- | ------------------------------------------------------------------------------------- | | Store | Retrieve your store ID | REST | [Your stores](#your-stores) | | Channel | List sales channels | REST | [List sales channels](https://developer.godaddy.com/docs/api-users/commerce/set-up-a-store/channel) | | Catalog | Create and manage SKUs | GraphQL | [Manage catalog items](https://developer.godaddy.com/docs/api-users/commerce/manage-catalog) | | Order | Create and track orders | GraphQL | [Process an order](https://developer.godaddy.com/docs/api-users/commerce/manage-orders-and-customers) | | Customer | Create and manage customers | REST | [Manage a customer](https://developer.godaddy.com/docs/api-users/commerce/manage-orders-and-customers/customer) | | Transaction | View payment transactions | REST | [View transactions](https://developer.godaddy.com/docs/api-users/commerce/manage-orders-and-customers/transaction) | | Tax | Configure tax rates | GraphQL | [Configure taxes](https://developer.godaddy.com/docs/api-users/commerce/configure-taxes) | ## Platform conventions Commerce uses the same conventions as every GoDaddy API, so you learn them once: * **Authentication** — Scoped access tokens; request the least privilege you need ([About Authentication](https://developer.godaddy.com/docs/api-users/auth)). * **Errors** — One machine-readable envelope; match on the stable `code`, not the message ([Handle errors](https://developer.godaddy.com/docs/api-users/errors)). * **Rate limits** — Per-credential limits; read the headers rather than hardcoding numbers ([Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits)). * **Pagination** — Consistent list models; follow the shared pagination pattern ([Paginate results](https://developer.godaddy.com/docs/api-users/pagination)). * **Idempotency** — Per-namespace retry rules; check each how-to's Agent Notes before you retry ([Building reliable integrations](https://developer.godaddy.com/docs/api-users/concepts/building-reliable-integrations)). # Building reliable integrations (https://developer.godaddy.com/en/docs/api-users/concepts/building-reliable-integrations) *** title: Building reliable integrations description: Error handling, rate limiting, idempotency, and retry patterns for the GoDaddy Domains API — the operational considerations that separate working code from production-ready code. keywords: exponential backoff, Idempotency-Key, jitter, circuit breaker, at-least-once delivery, 503, webhook retry related: guides: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" * title: "Troubleshoot authentication" href: "/docs/api-users/troubleshoot/authentication" concepts: * title: "How GoDaddy APIs work" href: "/docs/api-users/concepts/how-godaddy-apis-work" * title: "Domains core concepts" href: "/docs/api-users/domains/concepts" *** ## Overview This page covers the operational patterns for building an integration that holds up in production — how to handle errors correctly, manage rate limits, avoid duplicate charges through idempotency, and implement retry logic that doesn't make failures worse. The patterns here apply to the GoDaddy Domains API specifically but reflect general principles for working with any REST API. ## Error handling The GoDaddy API returns a consistent JSON error envelope on every failure: ```json { "code": "DOMAIN_NOT_AVAILABLE", "message": "The domain you requested is not available.", "fields": [ { "code": "REQUIRED", "message": "is required", "path": "contactRegistrant.email", "pathRelated": "" } ] } ``` The `code` field is the key identifier. HTTP status codes alone are not sufficient — two `422` responses can require completely different handling depending on their `code`. Always read `code` before branching on a failure. ### Status code guide The following table describes the different status codes. | Status | What it means in practice | | -------------------------- | ---------------------------------------------------------------------------------------------- | | `200`, `201`, `202`, `204` | Success. `202 Accepted` means the operation is async — poll for completion. | | `400` | Your request is malformed. Check `fields[]` for which field failed validation. | | `401` | Token is missing, expired, or revoked. Regenerate and retry. | | `403` | Token is valid but lacks the required scope, or the account isn't eligible. | | `404` | The resource doesn't exist, or the account can't see it. Don't retry without verifying state. | | `409` | Conflict — something about the current state prevents the operation. | | `422` | Request structure is valid but violates a business rule. Check `code` to determine the reason. | | `429` | Rate limit exceeded. Wait for `Retry-After` seconds. | | `5xx` | Server error. Safe to retry with exponential backoff. | ### What to retry and what not to The key distinction is safe vs. unsafe operations: | Retry safety | Operations | Explanation | | -------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | Safe to retry unconditionally | `GET` | Read-only. No side effects (a timeout can always be retried). | | Safe to retry with idempotency | `PUT`, `PATCH` on domain settings (lock state, auto-renew, nameservers) | Idempotent (replaying with the same body produces the same result). | | Unsafe to retry without checking state first | `POST` for registration, renewal, or transfer | These charge the account. A network timeout doesn't mean the operation failed. Always `GET` the resource before retrying. | ## Idempotency Idempotency means that making the same request multiple times produces the same result as making it once. For read operations and most updates, this is automatic. For registrations, it requires explicit action. ### The `Idempotency-Key` header The registration endpoint (`POST /v3/domains/registrations`) requires an `Idempotency-Key` header. Generate a UUID per request and include it on every registration call: ```bash curl -X POST "https://api.godaddy.com/v3/domains/registrations" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ ... }' ``` If you send the same `Idempotency-Key` on a retry, the server returns the original response without creating a second order. This is the safe way to retry a registration after a network timeout. ### Checking state before retrying (transfer and renewal) Transfer and renewal endpoints do not support `Idempotency-Key`. For those operations, check state before retrying any money-moving operation: 1. A request times out or returns a `5xx`. 2. Before retrying: call `GET /v1/domains/{domain}` (or the relevant read endpoint). 3. If the operation succeeded (domain is present, `renewAuto` changed, status is `PENDING_TRANSFER`), do not retry. 4. If the operation didn't happen, retry the original request. This pattern avoids double-charges on endpoints where idempotency keys aren't available. ## Rate limiting The API enforces per-credential rate limits (see [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for current values). When the limit is exceeded, the API returns: ``` HTTP/1.1 429 Too Many Requests Retry-After: 30 RateLimit-Limit: 600 RateLimit-Remaining: 0 RateLimit-Reset: 1399 ``` ### Handling 429 in code The only correct response to a `429` is to wait. The `Retry-After` header gives the exact number of seconds. ```js async function callWithRetry(url, options, maxRetries = 3) { for (let attempt = 0; attempt < maxRetries; attempt++) { const res = await fetch(url, options); if (res.status === 429) { const retryAfter = parseInt(res.headers.get("Retry-After") ?? "10", 10); await new Promise((r) => setTimeout(r, retryAfter * 1000)); continue; } return res; } throw new Error("Max retries exceeded"); } ``` ### Staying within limits The rate limit is generous for interactive use cases but can be consumed quickly by bulk operations. For batch jobs: * Spread requests over time — don't send a burst of requests in the first second and then wait for the window to reset. * Use the list endpoints with maximum `limit` values to reduce the number of calls needed. * Cache read results where the underlying data changes slowly (for example, domain lock state rarely changes so there's no need to poll it every minute). ## Async operations Some operations complete asynchronously. The API returns `202 Accepted` immediately with an operation object, and you poll until the operation reaches a terminal state. Nameserver replacement is the primary async operation in the Domains v3 API. The response includes a `Location` header pointing to the operation URL. Poll that URL until `status` is `COMPLETE` or `FAILED`. For domain registration, the operation completes synchronously in most cases, but the domain may briefly appear in `EXECUTING` status — particularly for first-time purchases on new accounts. Poll `GET /v1/domains/{domain}` until `status` is `ACTIVE`. ## Exponential backoff For retryable errors (`5xx`, `429` after the wait period), use exponential backoff with jitter rather than fixed-interval retries. Fixed-interval retries from many clients simultaneously create retry storms that make server problems worse. A simple backoff pattern: ```python import time, random def retry_with_backoff(fn, max_attempts=4, base_delay=1.0): for attempt in range(max_attempts): try: return fn() except RetryableError as e: if attempt == max_attempts - 1: raise delay = base_delay * (2 ** attempt) + random.uniform(0, 1) time.sleep(delay) ``` The delays would be approximately: 1s, 2s, 4s — with up to 1 second of random jitter added to each. This spreads retry load across time and avoids synchronized retry waves. ## Secrets management PATs are long-lived credentials that grant real access to real accounts. Treat them like passwords: * Never hardcode tokens in source code or commit them to version control. * Store tokens in environment variables or a secrets manager (AWS Secrets Manager, HashiCorp Vault, etc.). * Use separate tokens for separate environments — a production token should never appear in a development codebase. * Rotate tokens on a regular schedule and immediately on suspected compromise. * Scope tokens to the minimum permissions required for the integration. Go to [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) for token generation steps, or [Authenticate](https://developer.godaddy.com/docs/api-users/auth) for the scope reference. # How GoDaddy APIs work (https://developer.godaddy.com/en/docs/api-users/concepts/how-godaddy-apis-work) *** title: How GoDaddy APIs work description: The architecture, authentication model, environments, and request conventions shared across all GoDaddy REST APIs. keywords: OTE, api.godaddy.com, api.ote-godaddy.com, sandbox, v1 v2 v3, sso-key vs PAT, JSON REST, Bearer token, scopes related: guides: * title: "Authenticate" href: "/docs/api-users/auth" * title: "Make your first call" href: "/docs/api-users/quickstart" * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" concepts: * title: "Domains core concepts" href: "/docs/api-users/domains/concepts" * title: "Building reliable integrations" href: "/docs/api-users/concepts/building-reliable-integrations" *** ## Overview This page explains the architecture and design principles shared across GoDaddy REST APIs — how authentication works, how environments are separated, and what to expect from API behavior. Read this before you build to ensure you have a full understanding of how GoDaddy APIs are structured. ## API architecture GoDaddy APIs are REST APIs that accept JSON request bodies and return JSON responses. All requests go to a single base URL (`api.godaddy.com` for production), and all API calls require an `Authorization` header carrying a Bearer token. Every API call follows the same pattern: 1. Include `Authorization: Bearer ` in the request header. 2. The gateway validates the token and checks its scopes. 3. A valid request is routed to the correct API version and resource handler. 4. The handler returns a JSON response with a standard HTTP status code. There is no API key rotation scheme, no HMAC signing, and no session management. Every request is independently authenticated with the Bearer token. ## Authentication model GoDaddy uses Personal Access Tokens (PATs) for API authentication. A PAT is a long-lived credential tied to a GoDaddy account with a configurable set of capability scopes. ### Why scopes matter Scopes determine what a token can do, not just who it belongs to. Scopes are additive: a single token can carry multiple scopes, and a token is limited to exactly what its scopes allow — even if the underlying account has broader access. The scope model exists so that integrations can be given the minimum permissions they need. A read-only analytics pipeline doesn't need write scopes. A DNS automation tool doesn't need purchase scopes. Scopes follow the pattern `api.resource:operation`. For example, `domains.domain:read` grants read access to domain resources, and `commerce.order:complete` grants the ability to finalize an order. Go to [Domains API concepts](https://developer.godaddy.com/docs/api-users/domains/concepts) or [Commerce core concepts](https://developer.godaddy.com/docs/api-users/commerce/concepts) for the scope tables for each API. Go to [Authenticate](https://developer.godaddy.com/docs/api-users/auth) for the full scope reference, or [How to Authenticate](https://developer.godaddy.com/docs/api-users/auth/how-to) for token creation steps. ### Legacy credentials The older `sso-key` credential format (`sso-key :`) is still supported for v1 API endpoints but is scheduled for deprecation in 2026. New integrations should use PATs exclusively. PATs are required for all v3 endpoints. ## Environments GoDaddy provides a single production environment for API development. Some API calls require a funded payment method, can incur costs, and create real domain records. Scope your calls carefully. Actions taken in production are real, billable, and often irreversible. ## Request and response format All API requests and responses use JSON. A few conventions apply across the entire API surface: **Content-Type**: Always send `Content-Type: application/json` on requests with a body. **Accept**: Send `Accept: application/json` on read requests. The API defaults to JSON but specifying it is good practice. **Monetary values**: Prices are expressed in currency micro-units — multiply by 10⁻⁶ to get the currency value. A `price` of `11990000` in `USD` is `$11.99`. **Timestamps**: All timestamps are ISO 8601 in UTC (for example, `2026-03-15T00:00:00.000Z`). **Pagination**: v1 list endpoints use `limit` and `marker` for cursor-based pagination. v3 list endpoints use `page` and `pageSize`. Go to [Pagination](https://developer.godaddy.com/docs/api-users/pagination) for examples. ## Rate limits The API enforces per-credential rate limits. Exceeding the limit returns `429 Too Many Requests` with a `Retry-After` header indicating how many seconds to wait. Rate limits apply per credential. If you have multiple integrations using the same PAT, their request rates are pooled. Use separate PATs for independent workloads if you expect them to approach the limit independently. Go to [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for current limits and handling guidance. ## Error structure All errors return a consistent JSON envelope regardless of the HTTP status code: ```json { "code": "RESOURCE_NOT_FOUND", "message": "The requested resource could not be found.", "fields": [] } ``` The `code` field is the machine-readable identifier to branch on. The HTTP status code alone is not sufficient — two `422` responses with different `code` values require different handling. Go to [Handle errors](https://developer.godaddy.com/docs/api-users/errors) for the full error reference, status code guide, and retry semantics. # Domains core concepts (https://developer.godaddy.com/en/docs/api-users/domains/concepts) *** title: Domains core concepts description: The concepts behind domain registration, DNS, WHOIS, and the domain lifecycle — what the terms mean and why they matter when building with the GoDaddy Domains API. keywords: TLD, nameserver, A record, CNAME, MX record, registrar, EPP, transfer lock, ICANN, Redemption period, privacy protection related: guides: * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" * title: "Manage renewals" href: "/docs/api-users/domains/manage/renewals" * title: "Update contacts" href: "/docs/api-users/domains/manage/update-contacts" concepts: * title: "How GoDaddy APIs work" href: "/docs/api-users/concepts/how-godaddy-apis-work" * title: "Building reliable integrations" href: "/docs/api-users/concepts/building-reliable-integrations" *** ## Overview This page explains the concepts behind domain registration and management — what registrars, registries, DNS, and the domain lifecycle mean at a technical level. Understanding these concepts makes the API's behavior more predictable and helps you build integrations that handle edge cases correctly. ## Domain registration A domain name is a human-readable address registered in a global distributed database. When you register a domain, you're leasing the right to use that name for a fixed period (typically 1–10 years) from the registry \[the organization that manages a top-level domain (TLD)]. ### Registrars and registries Two distinct organizations are involved in every domain registration: | Organization | Role | Example | | ------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | **Registry** | Manages a TLD. Maintains the authoritative database of all registered domains under that TLD. Sets policy. | Verisign (`.com`, `.net`), Public Interest Registry (`.org`) | | **Registrar** | An accredited middleman. Takes registration requests from customers and submits them to the registry. | GoDaddy, Namecheap, Cloudflare Registrar | GoDaddy is an ICANN-accredited registrar. When you register a domain through the GoDaddy API, GoDaddy submits the registration to the appropriate registry on your behalf. The registry is the source of truth. A domain doesn't exist until the registry acknowledges it. ### What you own When you register a domain, you don't own it in the traditional sense. You hold the right to use it for the registration period. The registry can reclaim domains that violate its policies (for example, trademark disputes decided by ICANN's UDRP process). Registration creates a record in the registry's WHOIS database associating the domain with a registrant contact. The registrant contact is the legal owner for the duration of the registration. ## The domain lifecycle Domains pass through defined states from registration to expiration and beyond. | Status | Meaning | | -------------------- | -------------------------------------------------------------------------------------------------------------- | | `ACTIVE` | Registration is current. Domain resolves normally. | | `EXPIRED` | Expiration date has passed but the domain is in the grace period. Renewal at standard price is still possible. | | `PENDING_TRANSFER` | An inbound transfer is in progress. Registry is processing the move from another registrar. | | `CANCELLED_TRANSFER` | A transfer was rejected or cancelled. The domain remains at the current registrar. | ### Grace periods After expiration, GoDaddy provides a recovery window before the domain is permanently released. The exact timing varies by TLD, but the general pattern for gTLDs is: * **0–12 days after expiration**: Standard renewal pricing applies. The domain is still in your account. * **12–42 days after expiration**: Redemption period. The domain can be recovered but with additional fees. It's no longer visible in your account. * **After redemption period**: The domain is released back to the registry and becomes available for registration by anyone. ccTLDs (country-code TLDs like `.uk`, `.de`, `.ca`) have significantly different timelines — some expire immediately with no grace period. Always verify the TLD's expiration policy before building automated renewal logic. ## DNS and nameservers DNS (Domain Name System) translates domain names into IP addresses (and other resource records). It's a distributed hierarchical system — no single server knows everything. ### Authoritative nameservers Every domain has authoritative nameservers (the servers that hold the definitive DNS records for that domain). When a resolver looks up `example.com`, it eventually reaches `example.com`'s authoritative nameservers and gets the answer directly from them. At registration, GoDaddy assigns its own authoritative nameservers to your domain by default. While GoDaddy's nameservers are authoritative, you manage DNS records through the GoDaddy API (`/v3/domains/zones/{zone}/dns-records`). If you want to use a different DNS provider (like Cloudflare or Route 53.), you delegate authority by replacing the nameservers with that provider's servers (`PUT /v3/domains/domain-names/{domain-name}/nameservers`). After delegation, GoDaddy's API can no longer manage DNS records for the domain and the other provider's tools apply. ### DNS record types The following table lists the different DNS record types. | Type | Purpose | Example value | | ------- | ------------------------------------------------------------------- | --------------------------------------- | | `A` | Maps a hostname to an IPv4 address | `192.0.2.1` | | `AAAA` | Maps a hostname to an IPv6 address | `2001:db8::1` | | `CNAME` | Alias (maps a hostname to another hostname) | `www → example.com` | | `MX` | Mail exchange (routes email for the domain) | `mail.example.com` (priority 10) | | `TXT` | Arbitrary text (used for verification, SPF, DKIM) | `"v=spf1 include:_spf.google.com ~all"` | | `NS` | Nameserver delegation (authoritative servers for a zone) | `ns1.domaincontrol.com` | | `CAA` | Certificate Authority Authorization (which CAs may issue SSL certs) | `0 issue "letsencrypt.org"` | | `SRV` | Service record (protocol-specific host and port) | `_http._tcp 0 5 80 www.example.com` | ### DNS propagation When you change a DNS record, the new value doesn't appear instantly everywhere. DNS changes propagate through a cache hierarchy. Each record has a TTL (time-to-live) value that controls how long resolvers cache it before checking for updates. With GoDaddy's authoritative DNS: * Changes applied through the v3 API take effect synchronously on GoDaddy's nameservers. * Cached copies elsewhere on the internet expire at the rate set by the record's TTL (minimum 600 seconds, maximum 86400 seconds on GoDaddy's v3 API). * Resolvers that haven't cached the old value will see the new one immediately. Propagation delay means there's a window after a DNS change where different users see different values depending on which resolver they use. For this reason, DNS changes for critical infrastructure (mail routing, SSL validation) should be planned and staged and not made under pressure. ## WHOIS and contact privacy WHOIS is a protocol for querying the registry's public contact database. It exposes the registrant name, email, phone, and mailing address for every registered domain unless privacy protection is enabled. ### Contact roles Every domain registration requires a registrant contact. Some registrations can require up to four contact roles. The following table lists the contact roles and their purposes: | Role | Purpose | | -------------- | ----------------------------------------------------------------------------- | | **Registrant** | Legal owner of the domain. Required. | | **Admin** | Administrative contact. Defaults to registrant if omitted. | | **Billing** | Billing contact for renewal charges. Defaults to registrant if omitted. | | **Tech** | Technical contact for DNS-related matters. Defaults to registrant if omitted. | ICANN requires registrant contact information to be accurate. Providing false information can result in domain suspension. Use WHOIS privacy if you want to mask your contact details from the public database. Privacy services replace the real contact information with the privacy service's placeholder data in the WHOIS record. ## Domain locking Registry lock (the `clientTransferProhibited` status flag) is a security feature that prevents other registrars from initiating a transfer out of GoDaddy without your explicit action. While locked, the registry will reject transfer requests from competing registrars. Lock is enabled by default at registration. It has no effect on DNS resolution, email delivery, SSL certificates, or any service hosted on the domain. It should only be disabled for the duration of an outbound transfer or a registrant change on TLDs that require it, and re-enabled immediately after. Go to [Lock a domain](https://developer.godaddy.com/docs/api-users/domains/manage/lock) for the API operations to read and toggle the lock state. ## ICANN registrant contact change approval Changing the registrant's email, first name, last name, or organization while WHOIS privacy is disabled triggers the ICANN Contact Change Approval flow. ICANN sends the previous registrant an email asking them to approve the update. The domain stays in a pending state until the old registrant approves the change, or the request auto-expires after 60 days. GoDaddy enables WHOIS privacy on all registrations at no additional cost. Most accounts will not encounter this flow unless privacy was explicitly disabled. Check the `exposeWhoIs` field on the domain object to confirm privacy status. ### What triggers the flow The approval flow activates when **all** of the following conditions are met: * WHOIS privacy is disabled on the domain (`exposeWhoIs: true` in the v1 Domain object) * The `contactRegistrant` update changes at least one of: `nameFirst`, `nameLast`, `email`, or `organization` Changes to `contactAdmin`, `contactBilling`, `contactTech`, or non-identifying fields (phone, address) do not trigger the flow. Go to [Update contacts](https://developer.godaddy.com/docs/api-users/domains/manage/update-contacts#icann-registrant-contact-change-approval) to check or cancel a pending approval through the API. # About the Domains API (https://developer.godaddy.com/en/docs/api-users/domains) *** title: About the Domains API description: How the Domains API is structured, what its version namespaces cover, and how the core resources relate to each other. keywords: DomainDetail, quoteToken, registration-quotes endpoint, customerId, sso-key deprecation, domain API reference, async polling, Action object related: concepts: * title: "Domains core concepts" href: "/docs/api-users/domains/concepts" * title: "How GoDaddy APIs work" href: "/docs/api-users/concepts/how-godaddy-apis-work" guides: * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" *** ## Overview The Domains API covers the full domain registration and management lifecycle: searching availability, registering domains, managing DNS records, updating WHOIS contacts, controlling registry lock, renewing registrations, configuring forwarding, and managing transfers. Operations are distributed across three version namespaces — v3 is the preferred namespace for new integrations, with v1 and v2 covering capabilities not yet migrated. Go to [Domain management concepts](https://developer.godaddy.com/docs/api-users/domains/concepts) for background on registrars, registries, the domain lifecycle, DNS, and WHOIS. ## How the API is structured ### Version namespaces Operations are split across three namespaces that have accumulated over years of product development. Use v3 where available; fall back to v1 or v2 where v3 doesn't cover the operation yet. | Version | Base path | Auth | Primary use | | ------- | ---------------------------------------- | -------------- | ---------------------------------------------------- | | v3 | `/v3/domains/...` | PAT only | Availability, registration, DNS records, nameservers | | v2 | `/v2/customers/{customerId}/domains/...` | PAT or sso-key | Forwarding, transfers, async operations | | v1 | `/v1/domains/...` | PAT or sso-key | List domains, renewals, contacts, lock | v3 endpoints require a Personal Access Token (PAT). The older `sso-key` credential is still accepted on v1 and v2 endpoints but is scheduled for deprecation in 2026. New integrations should use PATs exclusively. v2 endpoints require a `customerId` (your GoDaddy shopper ID) as a path parameter. v1 and v3 endpoints identify the caller from the bearer token directly. ### Registration: quote-execute with async polling v3 uses a two-step registration flow that separates pricing from execution — the price you agree to is the price charged. The `quoteToken` returned by the quote endpoint is valid for 10 minutes. Registration is not reversible and charges the account's payment method. Use the `Idempotency-Key` request header on `POST /v3/domains/registrations` to prevent duplicate charges if a request times out or returns an ambiguous error. If the operation status is `EXECUTING`, poll — do not resubmit. ### Async operations Registration is asynchronous — the initial response returns a registration ID, and you poll for completion. Certain v2 operations (transfers, redemption) also return `202 Accepted` with an `Action` body rather than completing synchronously. Poll `GET /v2/customers/{customerId}/domains/actions/{actionId}` until the action reaches a terminal state. | Status | Meaning | | ----------- | ---------------------------------- | | `CONFIRMED` | Accepted, processing | | `EXECUTING` | In progress | | `COMPLETED` | Succeeded | | `FAILED` | Failed — check `error` for details | | `CANCELLED` | Cancelled | Most v1 and v3 write operations complete synchronously and return `204 No Content`. ## Core resources ### Domain The Domain is the central resource. It carries: * Registry metadata: domain name, status (`ACTIVE`, `EXPIRED`, `PENDING_TRANSFER`), expiration timestamp * The four WHOIS contact roles: registrant, admin, billing, tech * Authoritative nameservers * Lock and privacy flags (`locked`, `privacy`) * Renewal state: `renewAuto` flag and `expires` timestamp The schema is named `DomainDetail` in v1 and `DomainDetailV2` in v2. v2 extends v1 with async operation tracking and more consistent status values — for single-domain detail, prefer v2. ### DNS records DNS records are managed under the v3 zone endpoint: `GET`, `POST`, and `DELETE` against `/v3/domains/zones/{zone}/dns-records`. GoDaddy's authoritative nameservers support A, AAAA, CNAME, MX, TXT, SRV, NS, and CAA record types. Changes take effect synchronously on GoDaddy's nameservers. External resolvers cache values for up to the record's TTL (600–86,400 seconds on GoDaddy's authoritative DNS). If you replace the nameservers with those of another DNS provider, the GoDaddy DNS API can no longer manage records for the domain — DNS management moves to the new provider. ### Action (v2 async tracker) Long-running v2 operations return `202 Accepted` with an `Action` object instead of completing synchronously. Poll `GET /v2/customers/{customerId}/domains/actions/{actionId}` until terminal state. The `Action` carries the operation type, current status, and error details on failure. ## Resource relationships ## Operations by task | Task | Version | Guide | | ------------------------- | ------- | ----------------------------------------------------------------- | | Check availability | v3 | [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) | | Get suggestions | v3 | [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) | | Register a domain | v3 | [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) | | List registered domains | v1 | [Registered domains](https://developer.godaddy.com/docs/api-users/domains/manage/list) | | Manage DNS records | v3 | [Manage DNS records](https://developer.godaddy.com/docs/api-users/domains/manage/dns) | | Replace nameservers | v3 | [Manage DNS records](https://developer.godaddy.com/docs/api-users/domains/manage/dns) | | Update WHOIS contacts | v1 | [Update contacts](https://developer.godaddy.com/docs/api-users/domains/manage/update-contacts) | | Toggle auto-renew / renew | v1 | [Manage renewals](https://developer.godaddy.com/docs/api-users/domains/manage/renewals) | | Toggle registry lock | v1 | [Lock a domain](https://developer.godaddy.com/docs/api-users/domains/manage/lock) | | Configure forwarding | v2 | [Forward a domain](https://developer.godaddy.com/docs/api-users/domains/manage/forwarding) | | Transfer a domain in | v2 | [Browse the Domains API](https://developer.godaddy.com/docs/api-users/domains/manage) | ## OAuth scopes Request only the scopes your integration needs. Most write operations require a separate scope in addition to `domains.domain:read`. | Scope | What it grants | | ---------------------------- | ------------------------------------------------- | | `domains.domain:read` | Read domains, DNS records, availability checks | | `domains.domain:create` | Register new domains | | `domains.domain:update` | Update settings, contacts, lock state, auto-renew | | `domains.dns:update` | Create and delete DNS records | | `domains.nameserver:update` | Replace authoritative nameservers | | `domains.registration:write` | Transfer domains in | # About Domains pricing (https://developer.godaddy.com/en/docs/api-users/domains/pricing) *** title: About Domains pricing description: v3 API domain registrations use a discount pricing model. Indicative prices come from check-availability; the locked price is set by registration-quotes. keywords: .com price, domain cost, TLD pricing table, minor currency units, first-term price, auto-renewal rate, discounted rate, registration sale price agentNotes: permissions: \["Any account. Registration requires a billing method on file."] scopes: \["domains.domain:read"] rateLimit: "Standard per-credential limits apply; see Rate limits." idempotent: true destructive: false failureRecovery: "Prices from check-availability are indicative. Always confirm with POST /v3/domains/registration-quotes — the quoteToken locks the exact price charged." related: guides: * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Search for domains" href: "/docs/api-users/domains/search" apis: * title: "v3 Registration Quotes" href: "/docs/references/rest/domains/v3/registration-quotes" * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" *** ## Overview The v3 Domains API uses a discount pricing model for top-level domain (TLD) registrations. Registrations and auto-renewals are charged at member-level rates with no membership fee, no API access fee, and no limit on the number of domains you can register at these prices. Discounted rates apply only to purchases made through the v3 API. Purchases through v1 or v2, or through the GoDaddy retail site, are charged at standard rates. Any account with a billing method on file qualifies. Discounted rates apply from your first registration on the v3 API, with no volume thresholds, so you can secure a domain for anything you build, no matter the scale. This page explains how the pricing model works. For step-by-step procedures, go to [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) to check prices before committing and [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) to lock a price and execute a purchase. ## How pricing works v3 pricing has two stages: indicative and locked. Indicative pricing is returned by `GET /v3/domains/check-availability` and `GET /v3/domains/suggestions`. It reflects the likely price for a registration and is suitable for displaying to users before they commit. It's not a price guarantee. Rates can change between when you search and when you purchase. Locked pricing is set when you call `POST /v3/domains/registration-quotes`. The API returns a `quoteToken` that pins the exact price. The price in the token is the price charged at registration. The token expires after a short window. If it expires before you execute, request a new quote. Go to [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) for the full check-availability procedure, or [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) for the complete quote-execute flow. ## TLD coverage Discounted rates apply to the top TLDs. The following table illustrates the discounted rates in USD: | TLD | Registration (1 yr) | Auto-renewal (1 yr) | Standard renewal | | ------- | ------------------- | ------------------- | ---------------- | | .com | $10.49 | $14.99 | $22.99 | | .org | $7.59 | $15.99 | $23.99 | | .net | $11.99 | $16.99 | $24.99 | | .info | $3.00 | $29.99 | $41.99 | | .biz | $6.69 | $25.99 | $35.99 | | .cc | $3.49 | $11.99 | $15.99 | | .co | $9.99 | $42.99 | $59.99 | | .us | $4.69 | $11.99 | $19.99 | | .ca | $8.49 | $13.99 | $17.99 | | .au | $6.49 | $11.99 | $14.99 | | .com.au | $6.49 | $11.99 | $14.99 | | .uk | $5.99 | $9.99 | $12.99 | | .co.uk | $5.99 | $9.99 | $12.99 | | .io | $30.00 | $69.99 | $89.99 | | .tv | $28.99 | $35.99 | $49.99 | | .app | $9.49 | $19.99 | $27.99 | | .club | $1.19 | $20.99 | $29.99 | | .xyz | $1.19 | $16.99 | $23.99 | | .vip | $3.99 | $14.99 | $23.99 | | .ai | $169.98 (2 yr) | $239.98 (2 yr) | $319.98 | .ai requires a 2-year minimum term. Registration and auto-renewal discounts are only available in 2-year increments. The prices shown are per 2-year period, not per year. Premium domains are excluded from discounted pricing. API responses express prices in minor currency units. A value of `1049` means $10.49. Divide by 100 for the display price. ## Renewal pricing Auto-renew is on by default and charges the discounted renewal price shown in your registration quote. If you renew manually (either through a renewal API call or the GoDaddy account UI), the renewal is charged at the standard rate. To retain the discounted rate, keep auto-renew enabled. You can manage auto-renew per domain in [domain settings](https://developer.godaddy.com/docs/api-users/domains/manage). To lock pricing for multiple years, purchase a multi-year term upfront. Year 1 is charged at the registration sale price. Subsequent years are charged at the discounted renewal price. ## Refunds GoDaddy’s standard [Refund Policy](https://www.godaddy.com/legal/agreements/refund-policy) applies to API purchases. The quote-then-execute flow means nothing is charged until the registration request is executed using a valid `quoteToken`. The price in the `quoteToken` is the price charged. Go to [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) for the full registration flow. ## Terms Use of the Domains API and domain purchases are subject to GoDaddy’s [API Terms of Use](https://www.godaddy.com/legal/agreements/godaddy-api-terms-of-use) and [API Domain Purchase Agreement](https://www.godaddy.com/legal/agreements/api-domain-purchase-agreement). # Troubleshoot authentication (https://developer.godaddy.com/en/docs/api-users/troubleshoot/authentication) *** title: Troubleshoot authentication description: Common authentication errors when calling GoDaddy APIs, with causes and resolutions. keywords: 401 UNAUTHORIZED, 403 ACCOUNT\_NOT\_ELIGIBLE, 422 NO\_PAYMENT\_PROFILE, sso-key format, Bearer token expired revoked, scope mismatch 403, domains.domain:read required write, token stops working agentNotes: scopes: \["Any — this page covers cross-cutting auth issues"] rateLimit: "N/A (diagnostic reference)" failureRecovery: "Diagnostic page. On 401, check token format and expiration. On 403, distinguish scope vs eligibility via the code field." faqItems: * question: "Why do I get 401 Unauthorized from the GoDaddy API?" answer: "The Authorization header is missing, malformed, or the token has expired or been revoked. Verify the format is 'Authorization: Bearer ', check the token hasn't expired, and confirm it hasn't been revoked on the Personal Access Token page." * question: "Why do I get 403 Forbidden despite having a valid token?" answer: "The token doesn't include the scope required for the operation. Generate a new token with the required scopes. The domains.domain:read scope is required even for write operations that need to verify state." * question: "Why do I get 403 ACCOUNT\_NOT\_ELIGIBLE?" answer: "The account doesn't meet eligibility requirements — typically a missing payment profile or domain ownership requirement. Add a payment method or verify you hold at least one domain." * question: "Why do I get 422 NO\_PAYMENT\_PROFILE on purchase calls?" answer: "The operation requires a funded billing method (registration, renewal, transfer) but no payment method is on file. Add a payment method to your account." * question: "Why did my token stop working after previously working?" answer: "The token has expired (PATs have configurable expiration) or was revoked. Check the expiration date, generate a new token if needed, and update your secrets manager." related: guides: * title: "Authenticate" href: "/docs/api-users/auth" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" * title: "Troubleshoot your first call" href: "/docs/api-users/troubleshoot/first-call" concepts: * title: "Error handling" href: "/docs/api-users/errors" *** ## Overview This page covers the most common authentication and authorization errors you'll encounter when calling GoDaddy APIs. Each section describes the symptom, cause, and resolution. ## 401 Unauthorized **Symptom:** API returns `401` with `code: "UNAUTHORIZED"`. **Cause:** The `Authorization` header is missing, malformed, or the token has expired or been revoked. **Resolution:** * Verify the header format is `Authorization: Bearer ` (no extra whitespace or quotes around the token value). * Check the token hasn't expired — PATs have a configurable expiration. Generate a new one if needed. * Confirm the token hasn't been revoked on the [Personal Access Token](https://developer.godaddy.com/personal-access-token) page. * If using `sso-key`, verify the format is `sso-key :` with no extra spaces. ## 403 Forbidden — missing scope **Symptom:** API returns `403` with a code indicating insufficient permissions, despite a valid token. **Cause:** The token is valid but doesn't include the scope required for the operation. **Resolution:** * Check the `code` field in the error response — it distinguishes between scope and eligibility issues. * Generate a new token with the required scopes. Go to [Authentication — PAT scopes](https://developer.godaddy.com/docs/api-users/auth#pat-scopes) for the full list. * The `domains.domain:read` scope is required even for write operations that need to verify state. ## 403 Forbidden — account eligibility **Symptom:** API returns `403` with a code like `ACCOUNT_NOT_ELIGIBLE` despite having the correct scope. **Cause:** The account doesn't meet the eligibility requirements for the operation — typically a missing payment profile or domain ownership requirement. **Resolution:** * For billing-related eligibility: add a payment method. Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). * For domain management eligibility: the account must hold at least one domain or be on a plan that grants management access. * Check the `code` field — don't rely on HTTP status alone to distinguish scope from eligibility issues. ## 422 with `NO_PAYMENT_PROFILE` **Symptom:** API returns `422` with `code: "NO_PAYMENT_PROFILE"` on quote or purchase calls. **Cause:** The operation requires a funded billing method (registration, renewal, transfer) but the account has no payment method on file. **Resolution:** Add a payment method. Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). ## Token stops working after working previously **Symptom:** A token that was working returns `401` without any code changes. **Cause:** The token expired (PATs have a configurable expiration) or was revoked. **Resolution:** * Check the token's expiration date on the [Personal Access Token](https://developer.godaddy.com/personal-access-token) page. * If expired or revoked, generate a new token. * Update your secrets manager or environment variable with the new value. # Troubleshoot the CLI (https://developer.godaddy.com/en/docs/api-users/troubleshoot/cli) *** title: Troubleshoot the CLI description: Common errors when installing or using the GoDaddy CLI (gddy), with causes and resolutions. keywords: command not found gddy, PATH \~/.local/bin, %LOCALAPPDATA% Programs gddy, OAuth redirect localhost, Gatekeeper macOS blocked binary, Set-ExecutionPolicy PowerShell, gddy auth status, install.sh permission denied agentNotes: scopes: \["N/A — CLI handles auth internally"] rateLimit: "N/A (diagnostic reference)" failureRecovery: "Diagnostic page. For PATH issues, open a new terminal. For auth issues, run 'gddy auth login'. For permission errors, check OS security settings. CLI targets one environment at a time — verify with 'gddy auth status'." faqItems: * question: "Why does 'command not found: gddy' appear after installation?" answer: "Your PATH doesn't include the directory where the CLI was installed. In a terminal window, verify the binary exists at \~/.local/bin/gddy (or %LOCALAPPDATA%\Programs\gddy on Windows), and add the bin directory to PATH if needed." * question: "Why does 'gddy auth login' open a browser but nothing happens?" answer: "The browser can't complete the OAuth redirect back to the CLI's local listener. Ensure you're not in a headless environment, try copying the URL manually, check for proxy interference with localhost, or try a different browser." * question: "Why does 'gddy domain suggest' return an authentication error?" answer: "Authentication hasn't been configured or the saved token has expired. Run 'gddy auth status' to check, then 'gddy auth login' to re-authenticate if needed." * question: "Why does the CLI installer fail with a permission error?" answer: "The script can't write to the target directory, or macOS Gatekeeper is blocking the binary. The installer defaults to \~/.local/bin (macOS/Linux) or %LOCALAPPDATA%\Programs\gddy (Windows), both user-writable, and falls back to sudo automatically on macOS/Linux only if that directory isn't writable. On macOS, allow in Security & Privacy settings if Gatekeeper blocks the binary. On Windows, no elevation should be needed unless you passed a system-owned --prefix." * question: "Why do CLI commands return different results than curl?" answer: "The CLI might be using different credentials than your curl commands. Check with 'gddy auth status' and re-authenticate if needed." related: guides: * title: "Set up the CLI" href: "/docs/api-users/cli/set-up" * title: "CLI reference" href: "/docs/api-users/cli/reference" * title: "Troubleshoot authentication" href: "/docs/api-users/troubleshoot/authentication" * title: "Make your first call" href: "/docs/api-users/quickstart" *** ## Overview This page covers errors you may encounter when installing, authenticating, or using the `gddy` CLI. If you're setting up for the first time, go to [Set up the CLI](https://developer.godaddy.com/docs/api-users/cli/set-up) for the installation guide. If a command itself is throwing an error, check the [CLI reference](https://developer.godaddy.com/docs/api-users/cli/reference) to confirm you're using the right flags. ## `command not found: gddy` **Symptom:** Running `gddy` returns "command not found" or "not recognized" after installation. **Cause:** Your PATH does not include the directory where the CLI was installed. **Resolution:** * **Windows:** `install.ps1` adds the install directory to your user `PATH` automatically, but only new terminal sessions pick up the change — open a new terminal and try again. * **macOS/Linux:** `install.sh` does not modify your `PATH`. Add the bin directory manually, then add the same line to your shell profile (e.g. `~/.zshrc` or `~/.bashrc`) to persist it: ```bash export PATH="$HOME/.local/bin:$PATH" ``` * Verify the binary exists: `ls ~/.local/bin/gddy` (macOS/Linux) or check `%LOCALAPPDATA%\Programs\gddy\` (Windows). * Re-run the installer if the binary doesn't exist. ## `gddy auth login` opens a browser but nothing happens **Symptom:** The CLI opens a browser tab for OAuth login, but the redirect fails or hangs. **Cause:** The browser can't complete the OAuth redirect back to the CLI's local listener. **Resolution:** * Make sure you're not in a headless/SSH environment without browser access. * If the browser opened but the page failed to load, copy the URL from the terminal output and paste it manually. * If behind a corporate proxy, the redirect URL (`localhost`) may be intercepted — check with your network team. * Try a different browser if the default one has strict security extensions blocking localhost redirects. ## `gddy domain suggest` returns an authentication error **Symptom:** Running domain commands returns an auth-related error. **Cause:** Authentication hasn't been configured, or the saved token has expired. **Resolution:** * Run `gddy auth status` to check whether you're authenticated and which environment you're targeting. * If expired or not authenticated, run `gddy auth login` to re-authenticate. * If targeting the wrong environment, use `gddy auth login --env prod` (or `--env ote`) to specify. ## Installer fails with a permission error **Symptom:** The install script exits with "Permission denied" or similar. **Cause:** The script can't write to the target directory, or macOS Gatekeeper is blocking the binary. **Resolution:** * The installer defaults to `~/.local/bin` (macOS/Linux) or `%LOCALAPPDATA%\Programs\gddy` (Windows) — both are user-writable, so this shouldn't come up on a default install. * On macOS: if you see "cannot be opened because the developer cannot be verified," go to System Preferences → Security & Privacy → General and click "Allow Anyway." * On Linux: if you passed a `--prefix` pointing at a directory you don't own (e.g. `/usr/local/bin`), the installer falls back to `sudo` automatically. * On Windows PowerShell: if the execution policy blocks running the remote script via `iex`, run `Set-ExecutionPolicy -Scope Process Bypass` for the session, or download `install.ps1` and inspect it before running. ## CLI commands work but return different results than curl **Symptom:** The CLI returns different data or errors compared to the same operation via curl. **Cause:** The CLI might be using different credentials than your curl commands. **Resolution:** * Check your current environment: `gddy auth status` * If targeting the wrong environment, re-authenticate against the correct one. * Compare the base URL: CLI uses the environment from its auth config, while curl hits whatever URL you specify directly. # Troubleshoot DNS (https://developer.godaddy.com/en/docs/api-users/troubleshoot/dns) *** title: Troubleshoot DNS description: Common errors when managing DNS records with the GoDaddy Domains API, with causes and resolutions. keywords: DNS propagation TTL, dig @ns1.domaincontrol.com, domains.dns:update, domains.nameserver:update, CNAME apex 422, recordId Location header, PUT nameservers endpoint, NS SOA not modifiable, 429 Retry-After agentNotes: scopes: \["domains.domain:read", "domains.dns:update", "domains.nameserver:update"] idempotent: false destructive: true failureRecovery: "Read operations are safe to retry. DNS deletes are irreversible — re-read the zone after failures to verify state. If nameservers were replaced incorrectly, issue a corrective PUT immediately." faqItems: * question: "Why aren't my DNS changes showing up?" answer: "DNS propagation is not instantaneous. GoDaddy's authoritative nameservers apply changes within minutes, but external resolvers cache records for up to the previous TTL duration. Wait for the TTL to expire before assuming propagation has failed. Use a tool like dig @8.8.8.8 to bypass local cache." * question: "Why do I get 400 when adding a DNS record?" answer: "The request body failed validation. Common causes: invalid record type, malformed data value (e.g. an A record with a hostname instead of an IP address), unsupported name format, or a TTL below the minimum (600 seconds). Check the fields array in the error response for the specific field and reason." * question: "Why do I get 403 Forbidden on a DNS request?" answer: "The token doesn't include the required scope. Read operations need domains.domain:read, write operations need domains.dns:update, and nameserver replacement needs domains.nameserver:update. Generate a new token with the correct scopes." * question: "Why do I get 404 on a DNS record operation?" answer: "Either the recordId doesn't exist, the domain doesn't exist in your account, or the domain name in the zone path parameter is wrong. Save the recordId from the Location header when you create a record — don't construct it manually. Verify the domain is visible via GET /v1/domains." * question: "Why can't I delete NS or SOA records?" answer: "GoDaddy manages NS and SOA records as part of its hosted DNS infrastructure. These records cannot be deleted or overwritten through the DNS records API. To change nameservers, use the nameservers endpoint (PUT /v3/domains/zones//nameservers) instead." * question: "Why does adding a CNAME return 422?" answer: "You can't add a CNAME at the zone apex (@ or the root domain). Use A/AAAA records at the apex instead. For SRV records, the service and protocol fields must be underscore-prefixed (e.g. \_http and \_tcp)." * question: "Why am I getting 429 rate limit errors?" answer: "The API enforces a per-credential, windowed rate limit. Check the Retry-After response header and wait that many seconds before retrying. For bulk operations, add a delay between requests or batch reads and writes. Go to /docs/api-users/rate-limits for current values." * question: "Why does my DNS record add keep returning a duplicate record error?" answer: "The POST /v3/domains/zones//dns-records endpoint appends records. If you already have a record with the same type, name, and data, the API may reject the duplicate depending on the record type. Read the current records first, then delete the existing one before adding the updated version." * question: "How long does DNS propagation take after a record change?" answer: "GoDaddy's authoritative nameservers apply changes within minutes. External resolvers (Google, Cloudflare, ISPs) cache the old values for up to the previous TTL duration. If the old TTL was 3600 seconds (1 hour), expect up to 1 hour for global propagation. Lowering the TTL before a change speeds up subsequent propagation." related: guides: * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" * title: "Troubleshoot your first API call" href: "/docs/api-users/troubleshoot/first-call" * title: "Troubleshoot authentication" href: "/docs/api-users/troubleshoot/authentication" apis: * title: "Domains v3 — DNS records" href: "/docs/references/rest/domains/v3/records" concepts: * title: "Error handling" href: "/docs/api-users/errors" *** ## Overview This page covers errors you're likely to encounter when managing DNS records through the GoDaddy Domains API. For the full DNS management guide, go to [Manage DNS records](https://developer.godaddy.com/docs/api-users/domains/manage/dns). ## DNS changes not visible after update **Symptom:** You added or updated a DNS record and the change isn't reflected when you query the domain. **Cause:** DNS propagation is not instantaneous. There are two distinct timelines: * **Authoritative nameservers** (GoDaddy): changes apply within minutes. * **External resolvers** (Google 8.8.8.8, Cloudflare 1.1.1.1, ISPs): resolvers cache the old value for up to the previous TTL duration. **Resolution:** * Query the authoritative nameserver directly to confirm the change was applied: `dig @ns1.domaincontrol.com your-domain.com A` * If the authoritative server shows the new value, the change is live — you're waiting for resolver caches to expire. * If the authoritative server still shows the old value, verify the API call succeeded by reading the record: `GET /v3/domains/zones/{domain}/dns-records` * To reduce future propagation time, lower the TTL to 600 seconds before making a planned change, then restore it afterward. ## `400` when adding a DNS record **Symptom:** `POST /v3/domains/zones/{domain}/dns-records` returns `400` with a `fields` array. **Cause:** The request body failed field-level validation. Common causes: * **Invalid `type`**: Only supported record types are accepted (`A`, `AAAA`, `CNAME`, `MX`, `NS`, `TXT`, `SRV`, `CAA`). * **Malformed `data`**: An `A` record must have an IPv4 address, not a hostname. A `CNAME` must be a fully qualified domain name ending with `.`. * **`ttl` below minimum**: The minimum TTL is 600 seconds. * **Invalid `name` format**: Use `@` for the apex record, not the domain name itself. **Resolution:** * Inspect each item in the `fields` array — `path` identifies the field, `message` describes the constraint. * Verify the `data` format against the record type. For example: `"data": "192.0.2.1"` for an `A` record, `"data": "mail.example.com."` for an `MX` record. * Set `ttl` to at least `600`. ## `NS` or `SOA` records can't be modified **Symptom:** Attempting to delete or replace `NS` or `SOA` records returns an error or has no effect. **Cause:** GoDaddy manages `NS` and `SOA` records as part of its hosted DNS infrastructure. These records cannot be deleted or overwritten through the DNS records endpoint. **Resolution:** * To change nameservers, use the dedicated nameservers endpoint: `PUT /v3/domains/zones/{domain}/nameservers` with an array of new nameserver hostnames. * `SOA` records are system-managed and cannot be changed directly. Changes to `NS` records propagate the `SOA` automatically. * If you need to delegate DNS to an external provider (Route 53, Cloudflare), replace the nameservers entirely using the nameservers endpoint, then manage all records there. ## Duplicate record error on `POST` **Symptom:** `POST /v3/domains/zones/{domain}/dns-records` returns an error indicating a conflicting or duplicate record already exists. **Cause:** The `POST` endpoint appends records. If a record with the same type, name, and data already exists, or if adding the record would violate DNS constraints (for example, a `CNAME` at the apex, or conflicting `CNAME` and `A` records), the API rejects the request. **Resolution:** 1. Read the current zone: `GET /v3/domains/zones/{domain}/dns-records?type={TYPE}&name={NAME}` 2. Delete the conflicting record: `DELETE /v3/domains/zones/{domain}/dns-records/{recordId}` 3. Add the updated record: `POST /v3/domains/zones/{domain}/dns-records` To replace all records of a given type and name in one operation, use `PUT /v3/domains/zones/{domain}/dns-records/{type}/{name}`. ## `403 Forbidden` — insufficient scope **Symptom:** API returns `403` despite a valid token. **Cause:** The token doesn't include the scope required for the operation. **Resolution:** * Read operations require `domains.domain:read`. * Write operations (create, delete records) require `domains.dns:update`. * Nameserver replacement requires `domains.nameserver:update`. * Generate a new token with the correct scopes. Go to [Authenticate](https://developer.godaddy.com/docs/api-users/auth#pat-scopes) for the full scope list. ## `404 Not Found` — record or domain not found **Symptom:** API returns `404` on a read, delete, or nameserver operation. **Cause:** The `recordId` doesn't exist, the domain doesn't exist, or the domain isn't owned by the authenticated account. **Resolution:** * Verify the `zone` path parameter matches the domain name exactly (for example, `example.com`, not `www.example.com`). * For deletes: save the `recordId` from the `Location` header at create time. Don't construct `recordId` values manually. * Confirm the domain is visible via `GET /v1/domains` — if not found there, it isn't accessible with the current credential. ## `422 Unprocessable` — business rule violation **Symptom:** API returns `422` after accepting the request structure. **Cause:** The request is structurally valid but violates a DNS rule — the most common case is a `CNAME` at the zone apex. **Resolution:** * Do not create a `CNAME` record with `name: "@"` (the apex). Use `A`/`AAAA` records at the apex instead. * For `SRV` records, verify the `service` and `protocol` fields are underscore-prefixed (for example, `_http` and `_tcp`). ## `429 Too Many Requests` — rate limit exceeded **Symptom:** API returns `429`. **Cause:** The request rate exceeded the per-credential limit for the current window. **Resolution:** * Check the `Retry-After` response header and wait that many seconds before retrying. * For bulk operations, add a delay between requests or batch reads and writes. * Go to [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for the full rate limit reference. # Troubleshoot domain registration (https://developer.godaddy.com/en/docs/api-users/troubleshoot/domain-registration) *** title: Troubleshoot domain registration description: Common errors when registering a domain with the GoDaddy Domains API, with causes and resolutions. keywords: EXECUTING COMPLETED FAILED registrationId, QUOTE\_EXPIRED quoteToken, Idempotency-Key duplicate charge, ACCOUNT\_NOT\_ELIGIBLE, punycode A-label IDN, contact field validation 422, GET /v3/domains/registrations, async registration polling agentNotes: scopes: \["domains.domain:read", "domains.domain:create"] idempotent: false failureRecovery: "Registration charges the account. Do not resubmit while status is EXECUTING — use the Idempotency-Key header to prevent duplicate charges. If QUOTE\_EXPIRED, re-quote and re-register." faqItems: * question: "Why does domain registration return EXECUTING instead of completing immediately?" answer: "Registration is asynchronous. EXECUTING means the operation is in progress. Poll GET /v3/domains/registrations/ until status is COMPLETED or FAILED. Do not resubmit — use the Idempotency-Key header to prevent duplicate charges if your client retries." * question: "Why does my registration return 422 QUOTE\_EXPIRED?" answer: "The quoteToken from the registration-quotes endpoint has expired. Quote tokens are short-lived. Re-call POST /v3/domains/registration-quotes to get a fresh token, then submit the registration again with the new token." * question: "Why is my registration returning 422 with a fields array?" answer: "The request body failed field-level validation. Common causes: missing or invalid registrant contact (email, phone, address), domain name format error, or TLD-specific requirements not met. Check each object in the fields array — the path and message identify which field failed and why." * question: "Why does my registration return 422 NO\_PAYMENT\_PROFILE?" answer: "The account has no payment method on file. Registration charges the billing method — it cannot proceed without one. Add a payment method at account.godaddy.com/payment-methods or go to Set up a payment profile in the docs." * question: "How do I prevent duplicate charges if my registration client retries?" answer: "Include an Idempotency-Key header with a stable, unique value (a UUID per registration attempt). If the server already processed a request with that key, it returns the original response without charging again." * question: "Why is my registration returning 403 ACCOUNT\_NOT\_ELIGIBLE?" answer: "Write operations that cost money require a billing method on the account. Go to account.godaddy.com/payment-methods to add a payment method. The account may also be ineligible for specific TLD registrations." * question: "Why did my domain registration return 422 saying the domain is not available?" answer: "The domain was registered by someone else between your availability check and the registration attempt, or it's in a status that prevents registration (e.g. redemption period). Call GET /v3/domains/check-availability immediately before registering — don't cache availability results. Use the suggestions endpoint to find alternatives if the domain is taken." related: guides: * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" * title: "Troubleshoot authentication" href: "/docs/api-users/troubleshoot/authentication" apis: * title: "v3 Registrations" href: "/docs/references/rest/domains/v3/registrations" * title: "v3 Registration Quotes" href: "/docs/references/rest/domains/v3/registration-quotes" concepts: * title: "Error handling" href: "/docs/api-users/errors" *** ## Overview This page covers errors you're likely to encounter when registering a domain through the GoDaddy Domains API. Registration is asynchronous and charges the account — read the [full registration guide](https://developer.godaddy.com/docs/api-users/domains/register) before troubleshooting. ## Registration stays in `EXECUTING` status **Symptom:** `POST /v3/domains/registrations` returns `202 Accepted` and the status field shows `EXECUTING`. The status never changes to `COMPLETED`. **Cause:** Registration is asynchronous. `EXECUTING` is the normal initial state — the operation is in progress on GoDaddy's side. It is not an error. **Resolution:** * Poll `GET /v3/domains/registrations/{registrationId}` every few seconds until `status` reaches `COMPLETED` or `FAILED`. * Do not resubmit the registration while `status` is `EXECUTING`. Resubmitting can result in duplicate charges. * If `status` is `FAILED`, inspect the `error` field for the specific failure reason. * Use the `Idempotency-Key` header on the original request — if your client retries due to a network error, the server returns the original response without charging again. ## `422` with `QUOTE_EXPIRED` **Symptom:** `POST /v3/domains/registrations` returns `422` with `code: "QUOTE_EXPIRED"`. **Cause:** The `quoteToken` from `POST /v3/domains/registration-quotes` has expired. Quote tokens are short-lived and must be used promptly. **Resolution:** 1. Call `POST /v3/domains/registration-quotes` again with the same domain and contact details to get a fresh `quoteToken`. 2. Resubmit `POST /v3/domains/registrations` with the new `quoteToken`. 3. If you're seeing this frequently, reduce the time between quoting and registering — keep it under a minute in production flows. ## `422` with a `fields` validation error **Symptom:** `POST /v3/domains/registrations` returns `422` with a `fields` array listing specific field errors. **Cause:** The request body failed field-level validation. Common causes: * Missing or invalid registrant contact: `email`, `phone`, `addressMailing`, or `nameFirst`/`nameLast` not provided or malformed. * Domain name format error: unsupported characters, missing TLD, or invalid punycode. * TLD-specific requirements not met: some TLDs require additional contact fields or eligibility verification. **Resolution:** * Inspect each object in the `fields` array — the `path` field identifies which request property failed and `message` explains why. * Verify all required registrant contact fields are present. Go to [Register a domain — contacts](https://developer.godaddy.com/docs/api-users/domains/register#registrant-contact) for the required schema. * For IDN (internationalized) domains, the domain name must be in punycode A-label form. ## `403` with `ACCOUNT_NOT_ELIGIBLE` **Symptom:** `POST /v3/domains/registrations` or `POST /v3/domains/registration-quotes` returns `403` with `code: "ACCOUNT_NOT_ELIGIBLE"`. **Cause:** The account lacks a funded billing method, or is not eligible to register the specific TLD. **Resolution:** * Add a payment method at [account.godaddy.com/payment-methods](https://account.godaddy.com/payment-methods). Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). * Some TLDs (country-code TLDs, restricted TLDs) require additional account eligibility. Check the TLD-specific agreements returned by `GET /v3/domains/agreements?tlds={tld}`. ## Duplicate charge on retry **Symptom:** A network failure caused the client to retry the registration, and the account was charged twice. **Cause:** The first request succeeded server-side but the response was lost in transit. The retry created a second registration. **Resolution:** * Always include an `Idempotency-Key` header with a UUID that's stable for the lifetime of a single registration intent. * If a request returns a network error (not a `4xx` or `5xx`), retry with the same `Idempotency-Key`. The server returns the original response without charging again. * If a duplicate charge already occurred, contact GoDaddy support with the `registrationId` values. ## Domain not available **Symptom:** `POST /v3/domains/registrations` returns `422` with a code indicating the domain isn't available. **Cause:** The domain was registered or reserved by someone else between your availability check and the registration attempt, or the domain is in a status that prevents registration (for example, redemption period). **Resolution:** * Call `GET /v3/domains/check-availability` immediately before registering — don't cache availability results. * If the exact domain is unavailable, use the suggestions endpoint to find alternatives. * Go to [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) for the availability check workflow. ## `422` with `NO_PAYMENT_PROFILE` **Symptom:** API returns `422` with `code: "NO_PAYMENT_PROFILE"`. **Cause:** The account has no payment method on file. Registration charges the billing method and cannot proceed without one. **Resolution:** * Add a payment method. Go to [Set up a payment profile](https://developer.godaddy.com/docs/api-users/payment-profile). * Once a payment method is on file, retry the registration with a fresh `quoteToken`. # Troubleshoot your first API call (https://developer.godaddy.com/en/docs/api-users/troubleshoot/first-call) *** title: Troubleshoot your first API call description: Common errors when making your first call to the GoDaddy Domains API, with causes and resolutions. keywords: Could not resolve host api.godaddy.com, echo GODADDY\_PAT, HTTPS\_PROXY curl proxy, curl --max-time timeout, definitive field optimizeFor ACCURACY, domains.domain:read 403, first API call 401, punycode domain encoding agentNotes: scopes: \["domains.domain:read"] failureRecovery: "Diagnostic page. All operations mentioned are read-only and safe to retry. On 401, verify token. On 403, check scopes. On timeout, check network." faqItems: * question: "Why does curl say 'Could not resolve host' for api.godaddy.com?" answer: "DNS can't resolve the API hostname. Verify internet connectivity, check corporate proxy settings (--proxy flag or HTTPS\_PROXY), or disconnect VPN to rule out DNS filtering." * question: "Why do I get 401 Unauthorized on my first API call?" answer: "The Authorization header is missing or the token value is wrong. Confirm your env var is set (echo $GODADDY\_PAT), verify the format is 'Bearer ' with no extra quotes, and ensure you exported it in the same shell session." * question: "Why does the availability check return 403 Forbidden?" answer: "Your token doesn't have the domains.domain:read scope. Generate a new PAT with at least the domains.domain:read scope." * question: "Why is the JSON response empty or unexpected?" answer: "The domain parameter is likely malformed — missing the TLD, containing invalid characters, or using unsupported encoding. Use a fully-qualified domain name like 'your-idea.com' and ensure no invisible characters are present." * question: "Why does the availability check say a domain is unavailable when it appears unregistered?" answer: "The domain may be reserved, premium, or in a registry hold state. Check the 'definitive' field — if false, retry with optimizeFor=ACCURACY for a live registry check. Some TLDs reserve common words." * question: "Why is the API connection timing out?" answer: "Network issues, firewall blocking HTTPS to external hosts, or API degraded performance. Test connectivity with 'curl -I [https://api.godaddy.com](https://api.godaddy.com)', ensure port 443 is open, and add --max-time 30 to your curl commands." related: guides: * title: "Make your first call" href: "/docs/api-users/quickstart" * title: "Troubleshoot authentication" href: "/docs/api-users/troubleshoot/authentication" * title: "Search domain availability" href: "/docs/api-users/domains/search" concepts: * title: "Error handling" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview This page covers errors you're likely to encounter during your first API calls. If you're getting started, go to the [quickstart](https://developer.godaddy.com/docs/api-users/quickstart) for the happy path first. ## `curl: (6) Could not resolve host` **Symptom:** curl reports it can't resolve `api.godaddy.com`. **Cause:** DNS can't resolve the API hostname. Typically a network or proxy issue. **Resolution:** * Verify internet connectivity (`curl https://google.com`). * If behind a corporate proxy, configure curl to use it with the `--proxy` flag or `HTTPS_PROXY` environment variable. * If on a VPN, try disconnecting temporarily to rule out DNS filtering. ## 401 Unauthorized on first call **Symptom:** Your first API call returns `401`. **Cause:** The `Authorization` header is missing or the token value is wrong. **Resolution:** * Confirm the environment variable is set: `echo $GODADDY_PAT` should print the token value. * Verify the header format is `Bearer ` — no extra quotes, no `"Bearer "` with a trailing space. * Make sure you exported the variable in the same shell session where you're running curl. * Go to [Troubleshoot authentication](https://developer.godaddy.com/docs/api-users/troubleshoot/authentication) for deeper auth issues. ## 403 Forbidden on availability check **Symptom:** `GET /v3/domains/check-availability` returns `403`. **Cause:** The token doesn't have the `domains.domain:read` scope. **Resolution:** Generate a new PAT with at least the `domains.domain:read` scope. Go to [Authentication — PAT scopes](https://developer.godaddy.com/docs/api-users/auth#pat-scopes). ## Empty or unexpected JSON response **Symptom:** The response is empty, missing fields, or returns an unexpected structure. **Cause:** The domain parameter is malformed — missing the TLD, contains invalid characters, or uses an unsupported encoding. **Resolution:** * Use a fully-qualified domain name including the TLD: `your-idea.com`, not `your-idea`. * IDN (internationalized) domains must use punycode A-label form. * Check for invisible characters copied from other sources (zero-width spaces, smart quotes). ## `available: false` for a domain you expected to be available **Symptom:** The availability check returns `false` for a domain that appears unregistered. **Cause:** The domain may be reserved, premium, or in a registry hold state that makes it unavailable through standard registration. **Resolution:** * The `definitive` field indicates whether the result came from a live registry check. If `false`, try again with `optimizeFor=ACCURACY` for a live check. * Some TLDs reserve common words or short names. Try alternative TLDs. * Premium domains may be available but at higher pricing — check the aftermarket. ## Connection timeout or slow responses **Symptom:** curl hangs or times out connecting to the API. **Cause:** Network issues, firewall blocking HTTPS to external hosts, or the API is experiencing degraded performance. **Resolution:** * Test basic connectivity: `curl -I https://api.godaddy.com` * Check your firewall allows outbound HTTPS (port 443) to `api.godaddy.com`. * Add a timeout to your curl commands: `curl --max-time 30 ...` # Commerce API scopes (https://developer.godaddy.com/en/docs/references/rest/commerce-scopes) *** title: Commerce API scopes description: PAT scopes for the GoDaddy Commerce APIs, and the endpoints each scope unlocks. full: true ---------- Commerce APIs use PAT scopes to authorize requests. Scopes follow the pattern `commerce.:`. ## Permission values The `:` suffix on a scope maps to the HTTP methods it unlocks: | Permission | Use for | HTTP methods | | ---------- | -------------------------------------------------- | ------------------------- | | `read` | Read-only access | `GET` | | `write` | Create and update combined | `POST`, `PATCH`, `PUT` | | `create` | Create only (when separate from update) | `POST` | | `update` | Update only (when separate from create) | `PATCH`, `PUT` | | `delete` | Delete access | `DELETE` | | `execute` | Other operations (usually with an operation field) | varies | | `cancel` | Cancel a resource | `POST` (GraphQL mutation) | | `complete` | Complete a resource | `POST` (GraphQL mutation) | | `archive` | Archive a resource | `POST` (GraphQL mutation) | ## Store | Scope | Grants | Endpoints | | --------------------- | ---------------------- | -------------------------------------------------------------------------------------------- | | `commerce.store:read` | Read store information | `GET /v1/commerce/stores/{storeId}``GET /v1/commerce/stores/{storeId}/attributes/{attrName}` | ## Channel | Scope | Grants | Endpoints | | ----------------------- | ------------------- | ------------------------------------------------------------------ | | `commerce.channel:read` | Read sales channels | `GET /v1/commerce/channels``GET /v1/commerce/channels/{channelId}` | `GET /v1/commerce/channels/{channelId}` checks access on that specific channel. A PAT that can list channels for a store may still receive `401` on get-by-id. List channels and filter instead: ```bash curl -s "https://api.godaddy.com/v1/commerce/channels?registeredStores.storeId=${STORE_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" \ | jq '.items[] | select(.channelId == "")' ``` ## Customer | Scope | Grants | Endpoints | | -------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------- | | `commerce.customer:read` | Read customers | `GET /v1/commerce/stores/{storeId}/customers``GET /v1/commerce/stores/{storeId}/customers/{customerId}` | | `commerce.customer:create` | Create customers | `POST /v1/commerce/stores/{storeId}/customers` | | `commerce.customer:update` | Update customer information | `PATCH /v1/commerce/stores/{storeId}/customers/{customerId}` | ## Product (Catalog GraphQL) | Scope | Grants | Endpoint | | ------------------------ | -------------------------- | ----------------------------------------------------- | | `commerce.product:read` | Read products | `POST /v2/commerce/stores/{storeId}/catalog-subgraph` | | `commerce.product:write` | Create and update products | `POST /v2/commerce/stores/{storeId}/catalog-subgraph` | ## Order (Order GraphQL) | Scope | Grants | Endpoint | | ------------------------- | --------------- | ---------------------------------- | | `commerce.order:read` | Read orders | `POST /v1/commerce/order-subgraph` | | `commerce.order:create` | Create orders | `POST /v1/commerce/order-subgraph` | | `commerce.order:update` | Update orders | `POST /v1/commerce/order-subgraph` | | `commerce.order:cancel` | Cancel orders | `POST /v1/commerce/order-subgraph` | | `commerce.order:complete` | Complete orders | `POST /v1/commerce/order-subgraph` | ## Tax (Tax GraphQL) | Scope | Grants | Endpoint | | --------------------- | ---------------------- | ------------------------------------------------- | | `commerce.tax:read` | Read taxes and rates | `POST /v2/commerce/stores/{storeId}/tax-subgraph` | | `commerce.tax:create` | Create taxes and rates | `POST /v2/commerce/stores/{storeId}/tax-subgraph` | | `commerce.tax:write` | Update taxes and rates | `POST /v2/commerce/stores/{storeId}/tax-subgraph` | | `commerce.tax:delete` | Delete taxes and rates | `POST /v2/commerce/stores/{storeId}/tax-subgraph` | ## Transaction | Scope | Grants | Endpoints | | --------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------- | | `commerce.transaction:read` | Read transactions | `GET /v2/commerce/stores/{storeId}/transactions``GET /v2/commerce/stores/{storeId}/transactions/{transactionId}` | # REST API Reference (https://developer.godaddy.com/en/docs/references/rest) *** title: REST API Reference description: Complete REST API documentation with interactive examples full: true ---------- ## Domain Lifecycle ### Domains & DNS Manage domain registrations, DNS records, privacy settings, and transfers. Operations span version namespaces: **v1** is the original REST API; **v2** added async processing (action queues, notifications, and status polling) in 2019; **v3** is the newest API with a quote-execute registration model. Machine-readable OpenAPI specs: [domains-v1.json](https://developer.godaddy.com/openapi/domains-v1.json) and [domains-v2.json](https://developer.godaddy.com/openapi/domains-v2.json). *** ## Domain Marketplace & Aftermarket ### Aftermarket API Auction-related actions exclusive to allowlisted reseller partners (list, bid on, and manage aftermarket domain listings. Auth: sso-key). ### Auctions API Domain auction operations — retrieve active auctions, place bids, and manage auction state. Auth: sso-key. *** ## Domain Monetization ### Parking API Domain parking configuration — enable, disable, and manage monetized parked-page settings for domains. Auth: sso-key. *** ## Customer & Identity ### Agreements API Retrieve the legal agreements required for domain registration, transfers, and privacy changes. The `agreementKeys` returned here must be passed in the `consent` object when purchasing a domain. Auth: sso-key. ### Shoppers API Manage shopper accounts, subaccounts, and authentication used by resellers acting on behalf of customers. *** ## Security & Risk ### Abuse API Report and manage domain abuse cases. Auth: sso-key. ### Certificates API Manage SSL/TLS certificate orders, validation, reissuance, and domain verification. Auth: sso-key. *** ## Platform & Integration ### ANS API Agent Name Service (ANS) is a decentralized naming layer for registering, resolving, and managing ANS handles and identities. Auth: PAT. ### Node.js Hosting API Deploy and operate Node.js apps on GoDaddy's hosting platform. Manage apps, source uploads, deployments, secrets, and logs. *** ## Reference Data ### Countries API Country reference data — states and provinces, dialing codes, and country codes for use in contact and address fields. Auth: sso-key. # How to configure your taxes (https://developer.godaddy.com/en/docs/api-users/commerce/configure-taxes) *** title: How to configure your taxes description: Create and manage tax rates through the Tax GraphQL subgraph — the store-scoped endpoint for all tax configuration operations. keywords: taxRateId, createTaxRate, activateTaxRate, ACTIVE INACTIVE tax status, inclusive exclusive tax, tax jurisdiction, VAT GST, commerce.tax scope agentNotes: permissions: \[] scopes: \["commerce.tax:read", "commerce.tax:create", "commerce.tax:write", "commerce.tax:delete"] idempotent: false destructive: false failureRecovery: "Query operations are safe to retry. For mutations, check the current rate state with the rates query before retrying to avoid duplicate creates." related: apis: * title: "Tax GraphQL reference" href: "/docs/references/rest/taxes" guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" * title: "Manage catalog items" href: "/docs/api-users/commerce/manage-catalog" * title: "Process an order" href: "/docs/api-users/commerce/manage-orders-and-customers" concepts: * title: "About the Commerce API" href: "/docs/api-users/commerce" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" * title: "Paginate results" href: "/docs/api-users/pagination" *** ## Overview Tax rates define what percentage is applied to purchases in your store. All Tax operations (reads, creates, status changes, and deletes) are GraphQL queries and mutations sent to `POST /v2/commerce/stores/{storeId}/tax-subgraph`. Send `x-store-id` on every request — that header is what the Tax subgraph authorizes against. If the header is missing, GraphQL returns `AUTHENTICATION_ERROR` (`Failed to authorize`) with HTTP 200. If the path `{storeId}` and header disagree, the header wins. The Tax subgraph also supports Classifications, Jurisdictions, and Overrides for more advanced tax configurations. This article covers the core rate operations. Go to the [Tax GraphQL reference](https://developer.godaddy.com/docs/references/rest/taxes) for the full schema. ## Prerequisites The following prerequisites are required before you can configure taxes: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the scopes for the operations you need (`commerce.tax:read` for queries; `commerce.tax:create`, `:write`, or `:delete` for the corresponding mutations) * your `storeId` Go to [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to find your store ID. ## List tax rates `rates(first, after, ...)` returns a paginated collection of rates. Results use edge-based cursor pagination. Go to [Paginate results](https://developer.godaddy.com/docs/api-users/pagination) for cursor-based pagination guidance. Optional `orderBy` takes **exactly one** of `id`, `name`, `createdAt`, or `updatedAt` with `ASC` or `DESC` — not `"desc"`, and not two keys in one object. The following procedure retrieves the first page of tax rates. 1. Query the first 10 tax rates: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{"query": "query GetRates($first: Int) { rates(first: $first) { edges { node { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } } } pageInfo { hasNextPage endCursor } } }", "variables": {"first": 10}}' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `query GetRates($first: Int) { rates(first: $first) { edges { node { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } } } pageInfo { hasNextPage endCursor } } }`, variables: { first: 10 }, }), } ); const data = await res.json(); console.log(data.data.rates); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "query GetRates($first: Int) { rates(first: $first) { edges { node { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } } } pageInfo { hasNextPage endCursor } } }", "variables": {"first": 10}, }, ) res.raise_for_status() print(res.json()["data"]["rates"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": `query GetRates($first: Int) { rates(first: $first) { edges { node { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } } } pageInfo { hasNextPage endCursor } } }`, "variables": map[string]any{"first": 10}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the paginated response: ```json { "data": { "rates": { "edges": [ { "node": { "id": "", "name": "", "label": "", "status": "", "value": { "__typename": "RatePercentage", "percentage": "" } } } ], "pageInfo": { "hasNextPage": false, "endCursor": "" } } } } ``` ## Get a tax rate `rate(id: ID!)` retrieves a single tax rate by its ID. The following procedure reads a single tax rate by ID. * Retrieve a tax rate by its `id`: ```bash tab="curl" RATE_ID="" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d "{\"query\": \"query GetRate(\$id: ID!) { rate(id: \$id) { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } createdAt } }\", \"variables\": {\"id\": \"${RATE_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const rateId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `query GetRate($id: ID!) { rate(id: $id) { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } createdAt } }`, variables: { id: rateId }, }), } ); const data = await res.json(); console.log(data.data.rate); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] rate_id = "" res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "query GetRate($id: ID!) { rate(id: $id) { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } createdAt } }", "variables": {"id": rate_id}, }, ) res.raise_for_status() print(res.json()["data"]["rate"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") rateId := "" payload := map[string]any{ "query": `query GetRate($id: ID!) { rate(id: $id) { id name label status value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } } createdAt } }`, "variables": map[string]any{"id": rateId}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` ## Create a tax rate `createRate(input: MutationCreateRateInput!)` creates a new rate. `label` and `value` are required. `name` is generated from the label when omitted. `status` defaults to `ACTIVE`. `value` is a `RateValueInput`: set `percentage` (string, out of 100) or `amount` (`{ value, currencyCode }`), not both. For `amount.value`, send integer minor units (`850`, not `8.5`). Optional input fields from the schema: `calculationMethod` (`ADDITIVE` or `INCLUSIVE`; defaults to `ADDITIVE`), `description`, `jurisdictionId`, `metafields`, and `references`. You can omit `metafields` and `references` entirely. If you send `metafields`, the array must be nonempty — `[]` is rejected. Don't send `createdAt` or `updatedAt` — those fields exist only for Tax v1 to v2 migration. For metafields, prefer `type: "string"` (lowercase). When you **read** a rate, `value` is a union. Select it with inline fragments (`... on RatePercentage` / `... on RateAmount`) — there is no `value { rate }` field. The following procedure creates a new tax rate. 1. Create a tax rate with a label and value: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation CreateRate($input: MutationCreateRateInput!) { createRate(input: $input) { id name label status createdAt } }", "variables": { "input": { "label": "", "name": "", "value": { "percentage": "8.5" } } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation CreateRate($input: MutationCreateRateInput!) { createRate(input: $input) { id name label status createdAt } }`, variables: { input: { label: "", name: "", value: { percentage: "8.5" }, }, }, }), } ); const data = await res.json(); console.log(data.data.createRate); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation CreateRate($input: MutationCreateRateInput!) { createRate(input: $input) { id name label status createdAt } }", "variables": { "input": { "label": "", "name": "", "value": {"percentage": "8.5"}, } }, }, ) res.raise_for_status() print(res.json()["data"]["createRate"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": `mutation CreateRate($input: MutationCreateRateInput!) { createRate(input: $input) { id name label status createdAt } }`, "variables": map[string]any{ "input": map[string]any{ "label": "", "name": "", "value": map[string]any{"percentage": "8.5"}, }, }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Save the `id` from the response (you'll need it to activate or modify the rate): ```json { "data": { "createRate": { "id": "", "name": "", "label": "", "status": "ACTIVE", "createdAt": "" } } } ``` ## Activate a tax rate `activateRate(id: ID!)` sets a rate's status to `ACTIVE`. Requires `commerce.tax:write`. The following procedure activates an existing tax rate. 1. Activate a rate by its `id`: ```bash tab="curl" RATE_ID="" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d "{\"query\": \"mutation ActivateRate(\$id: ID!) { activateRate(id: \$id) { id label status activatedAt } }\", \"variables\": {\"id\": \"${RATE_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const rateId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation ActivateRate($id: ID!) { activateRate(id: $id) { id label status activatedAt } }`, variables: { id: rateId }, }), } ); const data = await res.json(); console.log(data.data.activateRate); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] rate_id = "" res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation ActivateRate($id: ID!) { activateRate(id: $id) { id label status activatedAt } }", "variables": {"id": rate_id}, }, ) res.raise_for_status() print(res.json()["data"]["activateRate"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") rateId := "" payload := map[string]any{ "query": `mutation ActivateRate($id: ID!) { activateRate(id: $id) { id label status activatedAt } }`, "variables": map[string]any{"id": rateId}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Confirm the rate status updated to `ACTIVE`: ```json { "data": { "activateRate": { "id": "", "label": "", "status": "ACTIVE", "activatedAt": "" } } } ``` ## Deactivate a tax rate `deactivateRate(id: ID!)` sets a rate's status to `INACTIVE`. Requires `commerce.tax:write`. Deactivated rates no longer apply to purchases. The following procedure deactivates an active tax rate. 1. Deactivate a rate by its `id`: ```bash tab="curl" RATE_ID="" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d "{\"query\": \"mutation DeactivateRate(\$id: ID!) { deactivateRate(id: \$id) { id label status } }\", \"variables\": {\"id\": \"${RATE_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const rateId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation DeactivateRate($id: ID!) { deactivateRate(id: $id) { id label status } }`, variables: { id: rateId }, }), } ); const data = await res.json(); console.log(data.data.deactivateRate); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] rate_id = "" res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation DeactivateRate($id: ID!) { deactivateRate(id: $id) { id label status } }", "variables": {"id": rate_id}, }, ) res.raise_for_status() print(res.json()["data"]["deactivateRate"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") rateId := "" payload := map[string]any{ "query": `mutation DeactivateRate($id: ID!) { deactivateRate(id: $id) { id label status } }`, "variables": map[string]any{"id": rateId}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Confirm the rate status updated to `INACTIVE`: ```json { "data": { "deactivateRate": { "id": "", "label": "", "status": "INACTIVE" } } } ``` ## Delete a tax rate `deleteRate(id: ID!)` permanently removes a tax rate. Requires `commerce.tax:delete`. This action can't be undone. Use `deactivateRate` instead if you might need the rate again. The following procedure deletes a tax rate. 1. Delete a rate by its `id`: ```bash tab="curl" RATE_ID="" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d "{\"query\": \"mutation DeleteRate(\$id: ID!) { deleteRate(id: \$id) { id label } }\", \"variables\": {\"id\": \"${RATE_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const rateId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/tax-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation DeleteRate($id: ID!) { deleteRate(id: $id) { id label } }`, variables: { id: rateId }, }), } ); const data = await res.json(); console.log(data); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] rate_id = "" res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/tax-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation DeleteRate($id: ID!) { deleteRate(id: $id) { id label } }", "variables": {"id": rate_id}, }, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") rateId := "" payload := map[string]any{ "query": `mutation DeleteRate($id: ID!) { deleteRate(id: $id) { id label } }`, "variables": map[string]any{"id": rateId}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/tax-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. `deleteRate` returns the deleted `Rate` object. Selecting no subfields is a GraphQL validation error (`Field "deleteRate" of type "Rate" must have a selection of subfields`). ```json { "data": { "deleteRate": { "id": "", "label": "" } } } ``` ## Common errors | Status | Most likely cause | Note | | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | | `200` with `errors[].extensions.code: AUTHENTICATION_ERROR` | `x-store-id` is missing or is not a store this token can access. | Authorization uses the header, not the path `{storeId}`. | | `400` | GraphQL selection or variables are invalid. | `deleteRate` must select fields on `Rate`. `Rate.value` is a union — use `... on RatePercentage` / `... on RateAmount`. | | `401` | PAT is missing or expired. Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | | `403` | Token doesn't include the required scope for the operation. | | | `404` | Tax rate ID doesn't exist or isn't accessible with the provided token. | | | `429` | Rate limit exceeded. | Honor the `Retry-After` header before retrying. | # How to manage catalog items (https://developer.godaddy.com/en/docs/api-users/commerce/manage-catalog) *** title: How to manage catalog items description: Create and manage SKUs and SKU groups through the Catalog GraphQL subgraph — the store-scoped endpoint for catalog operations. keywords: SKU ID, skuGroupId, createSKU, createSKUGroup, product variant, product listing, commerce.product scope, catalog GraphQL, inventory management agentNotes: permissions: \[] scopes: \["commerce.product:read", "commerce.product:write"] rateLimit: "Read RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset on each catalog-subgraph response. On 429, wait RateLimit-Reset or Retry-After." idempotent: false destructive: false failureRecovery: "Query operations are safe to retry. For mutations, check the current state before retrying to avoid duplicate creates." related: apis: * title: "Catalog GraphQL reference" href: "/docs/references/rest/catalog" guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" * title: "Process an order" href: "/docs/api-users/commerce/manage-orders-and-customers" * title: "About the Commerce API" href: "/docs/api-users/commerce" concepts: * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" * title: "Paginate results" href: "/docs/api-users/pagination" *** ## Overview The Catalog subgraph manages SKUs and SKU groups (there's no `Product` type). A SKU is a single purchasable variant. A SKU group is a collection of related SKUs (for example, a shirt available in multiple sizes). All catalog operations go through one GraphQL endpoint: `POST /v2/commerce/stores/{storeId}/catalog-subgraph`. Send the same store ID in the `{storeId}` path and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header — the path does not override it. Examples use `https://api.godaddy.com`. Use a [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth) issued for the API host you call. Catalog scopes use `commerce.product:*` naming for historical reasons. Request `commerce.product:read` to query data and `commerce.product:write` for mutations. Read `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` on every catalog-subgraph response. On HTTP `429`, wait for `RateLimit-Reset` or `Retry-After`. See [Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits). The following article describes how to manage catalog items. Go to [Catalog GraphQL reference](https://developer.godaddy.com/docs/references/rest/catalog) for more information about the Catalog subgraph. ## Prerequisites The following prerequisites are required before you can manage catalog items: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with `commerce.product:read` (queries) or `commerce.product:write` (mutations) * your `storeId` Sign in to your GoDaddy account and go to [About the Commerce API](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to retrieve your `storeId`. ## List SKU groups `skuGroups` returns a paginated list of SKU groups for your store. Use `first` and `after` to page through results. The following procedure retrieves the first page of SKU groups. 1. Query SKU groups for your store: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{"query": "{ skuGroups(first: 10) { edges { node { id label type status } } pageInfo { hasNextPage endCursor } } }"}' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `{ skuGroups(first: 10) { edges { node { id label type status } } pageInfo { hasNextPage endCursor } } }`, }), } ); const { data } = await res.json(); console.log(data.skuGroups.edges.map((edge) => edge.node)); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={"query": "{ skuGroups(first: 10) { edges { node { id label type status } } pageInfo { hasNextPage endCursor } } }"}, ) res.raise_for_status() print([edge["node"] for edge in res.json()["data"]["skuGroups"]["edges"]]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": "{ skuGroups(first: 10) { edges { node { id label type status } } pageInfo { hasNextPage endCursor } } }", } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the response including SKU group IDs and the pagination cursor: ```json { "data": { "skuGroups": { "edges": [ { "node": { "id": "", "label": "", "type": "", "status": "" } } ], "pageInfo": { "hasNextPage": true, "endCursor": "" } } } } ``` To fetch the next page, pass the `endCursor` value as the `after` argument: `skuGroups(first: 10, after: "")`. ## Get a SKU group `skuGroup(id)` retrieves a single SKU group and its associated SKUs. * Retrieve a SKU group by its `id`: ```bash tab="curl" SKU_GROUP_ID="" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "query GetSkuGroup($id: String!) { skuGroup(id: $id) { id label type status skus { edges { node { id label code status } } } } }", "variables": { "id": "" } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const skuGroupId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `query GetSkuGroup($id: String!) { skuGroup(id: $id) { id label type status skus { edges { node { id label code status } } } } }`, variables: { id: skuGroupId }, }), } ); const { data } = await res.json(); console.log(data.skuGroup); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] sku_group_id = "" res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "query GetSkuGroup($id: String!) { skuGroup(id: $id) { id label type status skus { edges { node { id label code status } } } } }", "variables": {"id": sku_group_id}, }, ) res.raise_for_status() print(res.json()["data"]["skuGroup"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") skuGroupId := "" payload := map[string]any{ "query": "query GetSkuGroup($id: String!) { skuGroup(id: $id) { id label type status skus { edges { node { id label code status } } } } }", "variables": map[string]any{"id": skuGroupId}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` ## Create a SKU group `createSkuGroup` creates a new SKU group. The `label` and `type` fields are required. Live accepts `PHYSICAL`, `DIGITAL`, and `PRODUCT` for `type`. Metafield `type` must be lowercase (`string`, not `STRING`). The following procedure creates a SKU group. 1. Send the create mutation: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation CreateSkuGroup($input: MutationCreateSkuGroupInput!) { createSkuGroup(input: $input) { id label type status } }", "variables": { "input": { "label": "", "type": "STANDARD" } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation CreateSkuGroup($input: MutationCreateSkuGroupInput!) { createSkuGroup(input: $input) { id label type status } }`, variables: { input: { label: "", type: "STANDARD", }, }, }), } ); const { data } = await res.json(); console.log(data.createSkuGroup); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation CreateSkuGroup($input: MutationCreateSkuGroupInput!) { createSkuGroup(input: $input) { id label type status } }", "variables": {"input": {"label": "", "type": "STANDARD"}}, }, ) res.raise_for_status() print(res.json()["data"]["createSkuGroup"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": "mutation CreateSkuGroup($input: MutationCreateSkuGroupInput!) { createSkuGroup(input: $input) { id label type status } }", "variables": map[string]any{ "input": map[string]any{ "label": "", "type": "STANDARD", }, }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the response including the new SKU group ID: ```json { "data": { "createSkuGroup": { "id": "", "label": "", "type": "STANDARD", "status": "" } } } ``` ## Create a SKU `createSku` creates a new SKU. The `label` field is required. Pass `skuGroupId` to attach it to a product (SKU group) in the same call, or use `addSkusToSkuGroup` afterwards. You can also create SKUs inline on `createSkuGroup` via `skus`. When you set `prices` or `unitCost`, for `SimpleMoneyInput.value` send `1999` for $19.99 USD, not `19.99`. Metafield `type` must be lowercase (`string`, not `STRING`). `createSku.label` is the variant label. The Commerce products UI uses the **SKU group** `label` as the product title. Changing a SKU label does not rename the product — use `updateSkuGroup` for that. To change an existing SKU price, use `updateSkuPrice`; `createSkuPrice` fails if the SKU already has a price. The following procedure creates a SKU. 1. Send the create mutation: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation CreateSku($input: CreateSKUInput!) { createSku(input: $input) { id label code status } }", "variables": { "input": { "label": "", "code": "" } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation CreateSku($input: CreateSKUInput!) { createSku(input: $input) { id label code status } }`, variables: { input: { label: "", code: "", }, }, }), } ); const { data } = await res.json(); console.log(data.createSku); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation CreateSku($input: CreateSKUInput!) { createSku(input: $input) { id label code status } }", "variables": {"input": {"label": "", "code": ""}}, }, ) res.raise_for_status() print(res.json()["data"]["createSku"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": "mutation CreateSku($input: CreateSKUInput!) { createSku(input: $input) { id label code status } }", "variables": map[string]any{ "input": map[string]any{ "label": "", "code": "", }, }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the response including the new SKU ID: ```json { "data": { "createSku": { "id": "", "label": "", "code": "", "status": "" } } } ``` ## Update a SKU `updateSku` updates one or more fields on an existing SKU. All input fields are optional. Only include the fields you want to change. The following procedure updates the label of a SKU. 1. Send the update mutation: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation UpdateSku($id: String!, $input: MutationUpdateSkuInput!) { updateSku(id: $id, input: $input) { id label code status } }", "variables": { "id": "", "input": { "label": "" } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation UpdateSku($id: String!, $input: MutationUpdateSkuInput!) { updateSku(id: $id, input: $input) { id label code status } }`, variables: { id: "", input: { label: "", }, }, }), } ); const { data } = await res.json(); console.log(data.updateSku); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation UpdateSku($id: String!, $input: MutationUpdateSkuInput!) { updateSku(id: $id, input: $input) { id label code status } }", "variables": {"id": "", "input": {"label": ""}}, }, ) res.raise_for_status() print(res.json()["data"]["updateSku"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": "mutation UpdateSku($id: String!, $input: MutationUpdateSkuInput!) { updateSku(id: $id, input: $input) { id label code status } }", "variables": map[string]any{ "id": "", "input": map[string]any{"label": ""}, }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the response confirming the updated fields: ```json { "data": { "updateSku": { "id": "", "label": "", "code": "", "status": "" } } } ``` ## Archive a SKU `archiveSku` marks a SKU as archived (there's no delete mutation). Archived SKUs are excluded from active queries unless you filter by `status: ARCHIVED`. * Archive a SKU by its `id`: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: ${STORE_ID}" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation ArchiveSku($id: String!) { archiveSku(id: $id) { id status } }", "variables": { "id": "" } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/catalog-subgraph`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "x-store-id": storeId, "Content-Type": "application/json", }, body: JSON.stringify({ query: `mutation ArchiveSku($id: String!) { archiveSku(id: $id) { id status } }`, variables: { id: "" }, }), } ); const { data } = await res.json(); console.log(data.archiveSku); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/catalog-subgraph", headers={ "Authorization": f"Bearer {token}", "x-store-id": store_id, "Content-Type": "application/json", }, json={ "query": "mutation ArchiveSku($id: String!) { archiveSku(id: $id) { id status } }", "variables": {"id": ""}, }, ) res.raise_for_status() print(res.json()["data"]["archiveSku"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "query": "mutation ArchiveSku($id: String!) { archiveSku(id: $id) { id status } }", "variables": map[string]any{"id": ""}, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/catalog-subgraph", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("x-store-id", storeId) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` ## Common errors | Status | Most likely cause | | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | `x-store-id` header is missing, or the GraphQL selection is invalid (for example selecting `id` on the `Option` union without `... on ListOption`). A path `{storeId}` that doesn't match the header is not a 400 — the subgraph still uses `x-store-id`. | | `401` | PAT is missing or expired. Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include `commerce.product:read` or `commerce.product:write`. | | `404` | SKU or SKU group ID doesn't exist or isn't accessible with the provided token. | | `429` | Rate limit exceeded (`RateLimit-Remaining: 0`). Wait `RateLimit-Reset` seconds, or `Retry-After` if present. Do not assume 60 req/min. | GraphQL requests may return HTTP `200` even when there are errors. Always check the `errors` array in the response body. Schema validation errors (unknown fields, missing variables) return HTTP `400`, but runtime errors (invalid UUIDs, business rule violations) return HTTP `200` with an `errors` array alongside `data`. ## GraphQL behavior notes ### Non-existent IDs return null When you query an entity by ID (for example `skuGroup(id: "...")` or `sku(id: "...")`), a non-existent or inaccessible ID returns `null` with no error. This is standard GraphQL behavior, not a failure. ```json { "data": { "skuGroup": null } } ``` Code examples in the API reference use placeholder UUIDs like `ID_VALUE` or `497f6eca-6276-4993-bfeb-53cbbbba6f08`. These are documentation placeholders — replace them with real IDs from your store. Querying a placeholder UUID returns `null`. ### References are read via parent objects There is no top-level `reference(id: ...)` query. References follow a HATEOAS pattern — you read them through the parent object they're attached to: ```graphql # Read references on a SKU group query { skuGroup(id: "your-sku-group-id") { references { edges { node { id type value } } } } } ``` To manage references, use mutations like `addReferencesToSkuGroup`, `removeReferencesFromSkuGroup`, `addReferencesToSku`, etc. # How to manage a customer (https://developer.godaddy.com/en/docs/api-users/commerce/manage-orders-and-customers/customer) *** title: How to manage a customer description: Create, read, update customer profiles within a store. keywords: customerId, createCustomer, updateCustomer, customer profile, email field, phone field, commerce.customer scope, customer record agentNotes: permissions: \[] scopes: \["commerce.customer:read", "commerce.customer:create", "commerce.customer:update"] idempotent: false destructive: false failureRecovery: "GET operations are safe to retry. For POST and PATCH, verify the current customer state before retrying to avoid duplicate creates or conflicting updates." related: apis: * title: "Customer API reference" href: "/docs/references/rest/customers/customer" guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" * title: "Process an order" href: "/docs/api-users/commerce/manage-orders-and-customers" concepts: * title: "About the Commerce API" href: "/docs/api-users/commerce" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Customers are profiles associated with one or more orders in a store. The Customer API is a REST API. All operations use standard HTTP methods against store-scoped endpoints under `v1`. The following article provides examples of how to use the Customer API to manage customers in your store. ## Prerequisites The following prerequisites are required before you can manage customers: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the scopes for the operations you need (`commerce.customer:read` for reads; `commerce.customer:create` or `:update` for writes) * your `storeId` Go to [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to find your store ID. ## List customers `GET /v1/commerce/stores/{storeId}/customers` retrieves all customers for a store. Deleted customers are excluded by default. The following procedure lists customers in your store. 1. Retrieve a list of customers: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}/customers" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}/customers`, { headers: { Authorization: `Bearer ${token}` } } ); const customers = await res.json(); console.log(customers); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.get( f"https://api.godaddy.com/v1/commerce/stores/{store_id}/customers", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s/customers", storeId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() // The response is an object: { customers: [...], links: [...] }. var response map[string]any json.NewDecoder(res.Body).Decode(&response) fmt.Println(response["customers"]) } ``` 2. Review the response: ```json { "customers": [ { "customerId": "", "firstName": "", "lastName": "", "emails": [{ "email": "", "default": true }], "phones": [{ "phone": "", "default": true }], "createdAt": "", "updatedAt": "" } ], "links": [ { "rel": "self", "href": "https://api.godaddy.com/v1/commerce/stores//customers?page=1", "method": "GET" } ] } ``` Each customer is identified by `customerId`. Contact details (`emails`, `phones`) are arrays, not scalar fields — access them as `customer.emails[0].email`, not `customer.email`. The `links` array contains HATEOAS pagination cursors. Pass `totalRequired=true` to include `totalItems` and `totalPages` in the response. The returned `links` echo the current request (e.g. the `self` link above reflects the page you fetched). To page forward, prefer the `pageToken` from the previous response over incrementing the `page` param. ## Create a customer `POST /v1/commerce/stores/{storeId}/customers` creates a new customer or de-duplicates an existing one using channel data. If the supplied channel data matches an existing customer, the existing record is updated rather than a new one created. The request body has two top-level fields: a required `source` (the application creating the customer, e.g. `COMMERCE`) and a nested `customer` object holding the profile. Creation is **asynchronous** — a successful call returns `202 Accepted` with a `links` array rather than the created record. Send emails and phones as the `emails` and `phones` arrays, each with an `email` / `phone` sub-field. A top-level scalar `email` or `phone` is accepted with a `202` but **silently discarded** — the customer is created with no contact info. Always confirm with a follow-up GET. The following procedure creates a customer profile. 1. Create a customer with their contact details: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}/customers" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "source": "COMMERCE", "customer": { "firstName": "", "lastName": "", "emails": [{ "email": "", "default": true }], "phones": [{ "phone": "", "default": true }] } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}/customers`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }, body: JSON.stringify({ source: "COMMERCE", customer: { firstName: "", lastName: "", emails: [{ email: "", default: true }], phones: [{ phone: "", default: true }], }, }), } ); // 202 Accepted: parse the customerId out of the rel:"customer" link. const { links } = await res.json(); const customerHref = links.find((l) => l.rel === "customer")?.href; const customerId = customerHref?.split("/").pop(); console.log(customerId); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.post( f"https://api.godaddy.com/v1/commerce/stores/{store_id}/customers", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", }, json={ "source": "COMMERCE", "customer": { "firstName": "", "lastName": "", "emails": [{"email": "", "default": True}], "phones": [{"phone": "", "default": True}], }, }, ) res.raise_for_status() # 202 Accepted print(res.json()["links"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") payload := map[string]any{ "source": "COMMERCE", "customer": map[string]any{ "firstName": "", "lastName": "", "emails": []map[string]any{{"email": "", "default": true}}, "phones": []map[string]any{{"phone": "", "default": true}}, }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s/customers", storeId) req, _ := http.NewRequest("POST", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result["links"]) // 202 Accepted } ``` 2. The call returns `202 Accepted` with a `links` array — not the customer record. Read the `customerId` from the `href` of the link whose `rel` is `"customer"`: ```json { "links": [ { "rel": "customer", "href": "https://api.godaddy.com/v1/commerce/stores//customers/", "method": "GET" }, { "rel": "request", "href": "https://api.godaddy.com/v1/commerce/stores//customer-requests/", "method": "GET" } ] } ``` The `customerId` is the last path segment of the `rel: "customer"` href. GET that href to confirm the customer (and its contact details) persisted. The `rel: "request"` link tracks the async action and may not be accessible to PAT callers. ## Get a customer `GET /v1/commerce/stores/{storeId}/customers/{customerId}` retrieves a single customer by ID. The following procedure reads a single customer by ID. 1. Retrieve a single customer by its `customerId`: ```bash tab="curl" CUSTOMER_ID="" curl -s "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}/customers/${CUSTOMER_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const customerId = ""; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}/customers/${customerId}`, { headers: { Authorization: `Bearer ${token}` } } ); const customer = await res.json(); console.log(customer); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] customer_id = "" res = requests.get( f"https://api.godaddy.com/v1/commerce/stores/{store_id}/customers/{customer_id}", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") customerId := "" url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s/customers/%s", storeId, customerId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var customer map[string]any json.NewDecoder(res.Body).Decode(&customer) fmt.Println(customer) } ``` 2. Review the response. The customer is returned wrapped in a `customer` object, alongside `links`. Use this GET to confirm that the `emails`/`phones` arrays and the latest `updatedAt` persisted after a create or update: ```json { "customer": { "customerId": "", "firstName": "", "lastName": "", "emails": [{ "email": "", "default": true }], "phones": [{ "phone": "", "default": true }], "createdAt": "", "updatedAt": "" }, "links": [] } ``` ## Update a customer `PATCH /v1/commerce/stores/{storeId}/customers/{customerId}` updates a customer. The body is a nested `customer` object containing the fields you want to change plus the current `updatedAt` value for optimistic concurrency. Like create, the update is **asynchronous** and returns `202 Accepted`. Include the `updatedAt` you received from your most recent GET. If it is missing the API returns `422`; if it is **stale** the API returns `202` but silently drops the update. After patching, re-GET the customer to confirm the change landed, and retry with the fresh `updatedAt` if it did not. The following procedure updates the email address for a customer. 1. GET the customer first (see [Get a customer](#get-a-customer)) and note its current `updatedAt`. 2. Send the update as a nested `customer` object: ```bash tab="curl" CUSTOMER_ID="" curl -s -X PATCH "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}/customers/${CUSTOMER_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "customer": { "emails": [{ "email": "", "default": true }], "updatedAt": "" } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const customerId = ""; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}/customers/${customerId}`, { method: "PATCH", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }, body: JSON.stringify({ customer: { emails: [{ email: "", default: true }], updatedAt: "", }, }), } ); console.log(res.status); // 202 Accepted ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] customer_id = "" res = requests.patch( f"https://api.godaddy.com/v1/commerce/stores/{store_id}/customers/{customer_id}", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", }, json={ "customer": { "emails": [{"email": "", "default": True}], "updatedAt": "", } }, ) res.raise_for_status() # 202 Accepted ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") customerId := "" payload := map[string]any{ "customer": map[string]any{ "emails": []map[string]any{{"email": "", "default": true}}, "updatedAt": "", }, } body, _ := json.Marshal(payload) url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s/customers/%s", storeId, customerId) req, _ := http.NewRequest("PATCH", url, bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() fmt.Println(res.Status) // 202 Accepted } ``` ## Common errors | Status | Most likely cause | Note | | ------ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | `400` | Malformed JSON in the request body. | | | `401` | PAT is missing or expired. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include the required scope (`commerce.customer:read`, `:create`, or `:update`). | | | `404` | Store ID or customer ID doesn't exist or isn't accessible with the provided token. | | | `422` | Body failed schema validation — e.g. a missing `updatedAt` on update, or a wrong contact sub-field name. | Response is a `ValidationError` with a `fields` array pinpointing each bad path. | | `429` | Rate limit exceeded. | Honor the `Retry-After` header before retrying. | ## Associate a customer with an order There is no dedicated "associate customer" endpoint. You link a customer to an order by setting both `customerId` and `billing` on the order via the Order subgraph GraphQL API (`addDraftOrder` or `updateOrder` mutations). ### What is billing The `billing` field is a nested object on the order that holds the buyer's contact information. It is not a separate API — you set it as part of the `addDraftOrder` or `updateOrder` mutation input. The fields are: | Field | Type | Required | Description | | ------------- | ------ | -------- | ------------------- | | `firstName` | String | Yes | Buyer first name | | `lastName` | String | Yes | Buyer last name | | `email` | String | Yes | Buyer email address | | `phone` | String | No | Buyer phone number | | `companyName` | String | No | Company name | | `address` | Object | No | Billing address | The `billing` object drives the customer-service integration. When an order with `billing` transitions to `OPEN`, the system uses that data to increment the customer's `orderCount` and establish the order–customer relationship internally. Setting only `customerId` creates a reference on the order but does not trigger the customer-service integration. The `billing` object (with at least `firstName`, `lastName`, and `email`) is what drives `orderCount` updates. Always provide both fields together. ### Behavior by combination | What you provide | `customerId` on order | `orderCount` increments | | ------------------------ | --------------------- | --------------------------- | | `customerId` only | Set | No | | `customerId` + `billing` | Set | Yes | | `billing` only | Not set | Yes (customer auto-created) | When you provide only `customerId`, the order stores the reference but the customer service does not learn about the order. The customer's `orderCount` stays at 0. When you provide both `customerId` and `billing`, the customer's `orderCount` increments when the order transitions to `OPEN`. When you provide only `billing`, the system auto-creates a customer record from the billing info with `orderCount` set to 1. However, the order's `customerId` field is not backfilled — the auto-created customer's `orderCount` reflects the relationship, but querying the order returns `customerId: null`. There is no way to discover the link from the order side. ### Recommended flow The following procedure creates a customer and associates it with a new order. 1. Create the customer via REST ([see above](#create-a-customer)) and note the `customerId`. 2. Create a draft order with both `customerId` and `billing`: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: $STORE_ID" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id customerId billing { firstName lastName email } } }", "variables": { "input": { "context": { "storeId": "", "channelId": "" }, "customerId": "", "billing": { "firstName": "", "lastName": "", "email": "", "phone": "" } } } }' ``` 3. Add line items with the `addLineItemBySkuId` mutation, then transition the order with `openOrder`. The customer's `orderCount` increments when the order reaches `OPEN`. To attach a customer to an existing order that has not yet been opened, use `updateOrder` with the same two fields while the order is still in `DRAFT`. The `orderCount` increment only fires during the `DRAFT` → `OPEN` transition — adding billing to an already-open order does not retroactively trigger it. ```bash tab="curl" curl -s "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "x-store-id: $STORE_ID" \ -H "Content-Type: application/json" \ -d '{ "query": "mutation($input: UpdateOrderInput!) { updateOrder(input: $input) { id customerId billing { firstName lastName email } } }", "variables": { "input": { "id": "", "customerId": "", "billing": { "firstName": "", "lastName": "", "email": "", "phone": "" }, "context": { "storeId": "", "channelId": "" } } } }' ``` | Field | Where to find it | | --------------- | ------------------------------------------------------------ | | `ORDER_ID` | From `addDraftOrder` or `orders` query (e.g. `Order_abc123`) | | `CUSTOMER_UUID` | From the `rel: "customer"` link in the create response | | `CHANNEL_ID` | From `order.context.channelId` on any existing order | The `context` object with both `storeId` and `channelId` is mandatory for `addDraftOrder` and `updateOrder`. Retrieve the `channelId` from the Store REST endpoint: ```bash curl -s "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" | jq '.defaultChannelId' ``` The `defaultChannelId` field is available on every store, including new stores with no orders. The value is stable — use it for all orders in the store. # How to process an order (https://developer.godaddy.com/en/docs/api-users/commerce/manage-orders-and-customers) *** title: How to process an order description: Create, manage, and complete orders through the Order GraphQL subgraph — all order lifecycle operations from draft through fulfillment. keywords: orderId, DRAFT OPEN CLOSED CANCELLED, createOrder, openOrder, addLineItem, lineItem total, commerce.order scope, order lifecycle states agentNotes: permissions: \[] scopes: \["commerce.order:read", "commerce.order:create", "commerce.order:update", "commerce.order:complete", "commerce.order:cancel"] idempotent: false destructive: false failureRecovery: "Query operations are safe to retry. For mutations, check the current order state with orderById before retrying — re-creating a draft can produce duplicate orders." related: apis: * title: "Order GraphQL reference" href: "/docs/references/rest/orders" guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" * title: "List sales channels" href: "/docs/api-users/commerce/set-up-a-store/channel" * title: "Manage catalog items" href: "/docs/api-users/commerce/manage-catalog" * title: "Manage a customer" href: "/docs/api-users/commerce/manage-orders-and-customers/customer" concepts: * title: "About the Commerce API" href: "/docs/api-users/commerce" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" * title: "Paginate results" href: "/docs/api-users/pagination" *** ## Overview The Order subgraph manages orders through their full lifecycle: `DRAFT` to `OPEN` to `COMPLETED` (or `CANCELED`). All operations (reads, creates, and status transitions) are GraphQL queries and mutations sent to `POST /v1/commerce/order-subgraph`. This endpoint requires an `x-store-id` header to select the store; it doesn't take a `storeId` path parameter. Mutations that take an input object also include the store context as `context.storeId`; `id`-only mutations (for example, `cancelOrder`) rely on the header alone. The following article provides examples of how to use the Order subgraph to manage orders in your store. The Order subgraph has no `Idempotency-Key` header, but creates are still safe to retry when you supply your own identifiers. With `addOrderWithId`, the service enforces uniqueness on both the `id` you generate and your optional `externalId` (unique per channel), so replaying the same create is rejected instead of producing a duplicate. After a network timeout, confirm the result before resending: look the order up with `orderById`, or with `orderByExternalId` (which also requires the `channelId`). Resend only if the order didn't land. Creates where the service assigns the id (like `addDraftOrder`) don't have this safeguard, so a blind retry can create a second order. ## Prerequisites The following prerequisites are required before you can process orders: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the scopes for the operations you need (`commerce.order:read` for queries; `commerce.order:create`, `:update`, `:complete`, or `:cancel` for the corresponding mutations) * your `storeId` Go to [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to find your store ID. * your `channelId` (required to create orders) Go to [List sales channels](https://developer.godaddy.com/docs/api-users/commerce/set-up-a-store/channel) to retrieve the `channelId` for your store. ## List orders `orders(first, after)` returns a paginated list of orders. Go to [Paginate results](https://developer.godaddy.com/docs/api-users/pagination) for cursor-based pagination guidance. The following procedure retrieves the first page of orders. 1. Query the first 10 orders: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d '{"query": "{ orders(first: 10) { edges { node { id number statuses { status } totals { total { value currencyCode } } } } pageInfo { hasNextPage endCursor } } }"}' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `{ orders(first: 10) { edges { node { id number statuses { status } totals { total { value currencyCode } } } } pageInfo { hasNextPage endCursor } } }`, }), }); const data = await res.json(); console.log(data.data.orders); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "{ orders(first: 10) { edges { node { id number statuses { status } totals { total { value currencyCode } } } } pageInfo { hasNextPage endCursor } } }" }, ) res.raise_for_status() print(res.json()["data"]["orders"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") payload := map[string]any{ "query": `{ orders(first: 10) { edges { node { id number statuses { status } totals { total { value currencyCode } } } } pageInfo { hasNextPage endCursor } } }`, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the paginated response: ```json { "data": { "orders": { "edges": [ { "node": { "id": "", "number": "", "statuses": { "status": "" }, "totals": { "total": { "value": 550, "currencyCode": "USD" } } } } ], "pageInfo": { "hasNextPage": true, "endCursor": "" } } } } ``` ## Get an order `orderById(id: ID!)` retrieves a single order by its ID. The following procedure reads a single order by ID. * Retrieve an order by its `id`: ```bash tab="curl" ORDER_ID="" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d "{\"query\": \"query { orderById(id: \\\"${ORDER_ID}\\\") { id number statuses { status } totals { total { value currencyCode } } createdAt } }\"}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const orderId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `query OrderById($id: ID!) { orderById(id: $id) { id number statuses { status } totals { total { value currencyCode } } createdAt } }`, variables: { id: orderId }, }), }); const data = await res.json(); console.log(data.data.orderById); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] order_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "query OrderById($id: ID!) { orderById(id: $id) { id number statuses { status } totals { total { value currencyCode } } createdAt } }", "variables": {"id": order_id}, }, ) res.raise_for_status() print(res.json()["data"]["orderById"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") orderId := "" payload := map[string]any{ "query": `query OrderById($id: ID!) { orderById(id: $id) { id number statuses { status } totals { total { value currencyCode } } createdAt } }`, "variables": map[string]any{"id": orderId}, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` ## Create a draft order `addDraftOrder(input: AddDraftOrderInput!)` creates a new order in `DRAFT` status. The only required input is `context`, which must include both `storeId` and `channelId`. Save the returned `id`. The returned `id` is required for all subsequent order operations. The following procedure creates a draft order for a specific store and channel. 1. Create a draft order: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d '{ "query": "mutation AddDraftOrder($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id number customerId statuses { status } } }", "variables": { "input": { "context": { "storeId": "", "channelId": "" }, "customerId": "" } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const channelId = ""; const customerId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `mutation AddDraftOrder($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id number customerId statuses { status } } }`, variables: { input: { context: { storeId, channelId }, customerId, }, }, }), }); const data = await res.json(); console.log(data.data.addDraftOrder); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] channel_id = "" customer_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "mutation AddDraftOrder($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id number customerId statuses { status } } }", "variables": { "input": { "context": { "storeId": store_id, "channelId": channel_id, }, "customerId": customer_id, } }, }, ) res.raise_for_status() print(res.json()["data"]["addDraftOrder"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") channelId := "" customerId := "" payload := map[string]any{ "query": `mutation AddDraftOrder($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id number customerId statuses { status } } }`, "variables": map[string]any{ "input": map[string]any{ "context": map[string]any{ "storeId": storeId, "channelId": channelId, }, "customerId": customerId, }, }, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. To verify the customer was attached, include `customerId` in the response. Go to the [Orders API reference](https://developer.godaddy.com/docs/references/rest/orders) for all optional input fields available on order creation mutations. 3. Save the `id` from the response (you'll need it for every subsequent mutation on this order): ```json { "data": { "addDraftOrder": { "id": "", "number": "", "customerId": "", "statuses": { "status": "DRAFT" } } } } ``` ## Add a line item `addLineItemBySkuId(input: AddLineItemInput!)` adds a catalog SKU to an existing order. The `orderId` is in the format `Order_` returned from `addDraftOrder`. Both `fulfillmentMode` and `status` are required. The following procedure adds a SKU to a draft order. 1. Add a line item by SKU ID (using the `id` from step 3 above): ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d '{ "query": "mutation AddLineItem($input: AddLineItemInput!) { addLineItemBySkuId(input: $input) { id name status } }", "variables": { "input": { "orderId": "", "skuId": "", "quantity": 1, "fulfillmentMode": "NONE", "status": "UNFULFILLED" } } }' ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const orderId = ""; const skuId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `mutation AddLineItem($input: AddLineItemInput!) { addLineItemBySkuId(input: $input) { id name status } }`, variables: { input: { orderId, skuId, quantity: 1, fulfillmentMode: "NONE", status: "UNFULFILLED", }, }, }), }); const data = await res.json(); console.log(data.data.addLineItemBySkuId); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] order_id = "" sku_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "mutation AddLineItem($input: AddLineItemInput!) { addLineItemBySkuId(input: $input) { id name status } }", "variables": { "input": { "orderId": order_id, "skuId": sku_id, "quantity": 1, "fulfillmentMode": "NONE", "status": "UNFULFILLED", } }, }, ) res.raise_for_status() print(res.json()["data"]["addLineItemBySkuId"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") orderId := "" skuId := "" payload := map[string]any{ "query": `mutation AddLineItem($input: AddLineItemInput!) { addLineItemBySkuId(input: $input) { id name status } }`, "variables": map[string]any{ "input": map[string]any{ "orderId": orderId, "skuId": skuId, "quantity": 1, "fulfillmentMode": "NONE", "status": "UNFULFILLED", }, }, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the returned line item: ```json { "data": { "addLineItemBySkuId": { "id": "", "name": "", "status": "UNFULFILLED" } } } ``` ## Open an order `openOrder(id: ID!)` transitions a `DRAFT` order to `OPEN` status. The draft must have at least one line item. `cancelOrder`, `completeOrder`, and `refundOrder` apply to non-draft orders (`OPEN` / completed as documented on each mutation). Use `updateDraftOrder` for drafts (`updateOrder` is rejected on drafts). `filterOrders(status: [DRAFT])` can list drafts. `addOrder` / `addOrderWithId` use `OrderStatusInput`, which is only `OPEN`, `COMPLETED`, or `CANCELED` (not `DRAFT`). Those mutations also require a full `OrderTotalsInput` (`subTotal`, `shippingTotal`, `discountTotal`, `feeTotal`, `taxTotal`, `total`). The following procedure opens a draft order. 1. Open the draft order: ```bash tab="curl" ORDER_ID="" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d "{\"query\": \"mutation OpenOrder(\$id: ID!) { openOrder(id: \$id) { id statuses { status } } }\", \"variables\": {\"id\": \"${ORDER_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const orderId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `mutation OpenOrder($id: ID!) { openOrder(id: $id) { id statuses { status } } }`, variables: { id: orderId }, }), }); const data = await res.json(); console.log(data.data.openOrder); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] order_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "mutation OpenOrder($id: ID!) { openOrder(id: $id) { id statuses { status } } }", "variables": {"id": order_id}, }, ) res.raise_for_status() print(res.json()["data"]["openOrder"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") orderId := "" payload := map[string]any{ "query": `mutation OpenOrder($id: ID!) { openOrder(id: $id) { id statuses { status } } }`, "variables": map[string]any{"id": orderId}, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Confirm the order status updated to `OPEN`: ```json { "data": { "openOrder": { "id": "", "statuses": { "status": "OPEN" } } } } ``` ## Complete an order `completeOrder(id: ID!)` marks an `OPEN` order as `COMPLETED`. Only `OPEN` orders can be completed. The following procedure completes an open order. 1. Complete the order: ```bash tab="curl" ORDER_ID="" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d "{\"query\": \"mutation CompleteOrder(\$id: ID!) { completeOrder(id: \$id) { id statuses { status } } }\", \"variables\": {\"id\": \"${ORDER_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const orderId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `mutation CompleteOrder($id: ID!) { completeOrder(id: $id) { id statuses { status } } }`, variables: { id: orderId }, }), }); const data = await res.json(); console.log(data.data.completeOrder); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] order_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "mutation CompleteOrder($id: ID!) { completeOrder(id: $id) { id statuses { status } } }", "variables": {"id": order_id}, }, ) res.raise_for_status() print(res.json()["data"]["completeOrder"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") orderId := "" payload := map[string]any{ "query": `mutation CompleteOrder($id: ID!) { completeOrder(id: $id) { id statuses { status } } }`, "variables": map[string]any{"id": orderId}, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Confirm the order status updated to `COMPLETED`: ```json { "data": { "completeOrder": { "id": "", "statuses": { "status": "COMPLETED" } } } } ``` ## Cancel an order `cancelOrder(id: ID!)` cancels an `OPEN` order. The following procedure cancels an open order. 1. Cancel the order: ```bash tab="curl" ORDER_ID="" curl -s -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d "{\"query\": \"mutation CancelOrder(\$id: ID!) { cancelOrder(id: \$id) { id statuses { status } } }\", \"variables\": {\"id\": \"${ORDER_ID}\"}}" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const orderId = ""; const res = await fetch("https://api.godaddy.com/v1/commerce/order-subgraph", { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", "x-store-id": process.env.STORE_ID, }, body: JSON.stringify({ query: `mutation CancelOrder($id: ID!) { cancelOrder(id: $id) { id statuses { status } } }`, variables: { id: orderId }, }), }); const data = await res.json(); console.log(data.data.cancelOrder); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] order_id = "" res = requests.post( "https://api.godaddy.com/v1/commerce/order-subgraph", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", "x-store-id": os.environ["STORE_ID"], }, json={ "query": "mutation CancelOrder($id: ID!) { cancelOrder(id: $id) { id statuses { status } } }", "variables": {"id": order_id}, }, ) res.raise_for_status() print(res.json()["data"]["cancelOrder"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") orderId := "" payload := map[string]any{ "query": `mutation CancelOrder($id: ID!) { cancelOrder(id: $id) { id statuses { status } } }`, "variables": map[string]any{"id": orderId}, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/commerce/order-subgraph", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+token) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-store-id", os.Getenv("STORE_ID")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Confirm the order status updated to `CANCELED`: ```json { "data": { "cancelOrder": { "id": "", "statuses": { "status": "CANCELED" } } } } ``` ## Common errors The following table lists common errors when processing orders, the most likely cause, and additional notes: | Status | Most likely cause | Note | | ------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | Malformed GraphQL query, or missing required input field. | `Order` has `statuses { status }`, not `status`. List connections use `edges { node }`, not `nodes`. `Money` fields need `{ value currencyCode }`. | | `401` | PAT is missing or expired. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include the scope for the requested operation. | Ensure your PAT includes the required scopes for the operation. | | `404` | Order ID doesn't exist or isn't accessible with the provided token. | | | `422` | Invalid status transition. | For example, cancel/complete/refund a `DRAFT`, or `openOrder` with no line items. | | `429` | Rate limit exceeded. | Honor the `Retry-After` header before retrying. | # How to view transactions (https://developer.godaddy.com/en/docs/api-users/commerce/manage-orders-and-customers/transaction) *** title: How to view transactions description: Look up payment transaction history for a store — authorizations, captures, sales, refunds, and adjustments. keywords: transactionId, AUTHORIZATION CAPTURE SALE REFUND ADJUSTMENT, listTransactions, getTransaction, transaction type, payment record, commerce.transaction scope agentNotes: permissions: \[] scopes: \["commerce.transaction:read"] idempotent: true destructive: false failureRecovery: "Safe to retry on any error. Transaction reads are idempotent." related: apis: * title: "Transaction API reference" href: "/docs/references/rest/transactions/general-endpoints" guides: * title: "Process an order" href: "/docs/api-users/commerce/manage-orders-and-customers" * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" concepts: * title: "About the Commerce API" href: "/docs/api-users/commerce" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Transactions represent payment activity associated with orders: authorizations, captures, sales, refunds, and adjustments. The Transaction API is a read-only REST API under `v2` (this differs from the other Commerce REST endpoints which use `v1`). ## Prerequisites The following prerequisites are required before you view transactions: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the `commerce.transaction:read` scope * your `storeId` Go to [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to find your store ID. ## List transactions `GET /v2/commerce/stores/{storeId}/transactions` retrieves all transactions for a store. The following optional query parameters narrow the results: | Parameter | Type | Description | | ----------------- | -------- | ------------------------------------------------- | | `page` | integer | Page number to retrieve (default: `1`) | | `pageSize` | integer | Results per page (default: `10`) | | `totalRequired` | boolean | Include total count in the response | | `transactionIds` | string | Comma-separated transaction IDs to filter | | `updatedAtAfter` | datetime | Filter transactions updated after this timestamp | | `updatedAtBefore` | datetime | Filter transactions updated before this timestamp | | `sortBy` | string | Field to sort by (`updatedAt`) | | `sortOrder` | string | Sort direction (`ASC` or `DESC`, default: `ASC`) | The following procedure lists the most recent 20 transactions. 1. Retrieve a page of transactions: ```bash tab="curl" curl -s "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/transactions?pageSize=20&sortOrder=DESC" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const params = new URLSearchParams({ pageSize: "20", sortOrder: "DESC" }); const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/transactions?${params}`, { headers: { Authorization: `Bearer ${token}` } } ); const data = await res.json(); console.log(data); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.get( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/transactions", params={"pageSize": 20, "sortOrder": "DESC"}, headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") url := fmt.Sprintf( "https://api.godaddy.com/v2/commerce/stores/%s/transactions?pageSize=20&sortOrder=DESC", storeId, ) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result map[string]any json.NewDecoder(res.Body).Decode(&result) fmt.Println(result) } ``` 2. Review the response including the paginated list of transactions: ```json { "items": [ { "id": "", "orderId": "", "type": "", "status": "", "amount": { "value": "", "currency": "" }, "createdAt": "", "updatedAt": "" } ], "page": 1, "pageSize": 20 } ``` ## Get a transaction `GET /v2/commerce/stores/{storeId}/transactions/{transactionId}` retrieves a single transaction by ID. The following procedure reads a single transaction by ID. * Retrieve a single transaction by its `id`: ```bash tab="curl" TRANSACTION_ID="" curl -s "https://api.godaddy.com/v2/commerce/stores/${STORE_ID}/transactions/${TRANSACTION_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const transactionId = ""; const res = await fetch( `https://api.godaddy.com/v2/commerce/stores/${storeId}/transactions/${transactionId}`, { headers: { Authorization: `Bearer ${token}` } } ); const transaction = await res.json(); console.log(transaction); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] transaction_id = "" res = requests.get( f"https://api.godaddy.com/v2/commerce/stores/{store_id}/transactions/{transaction_id}", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") transactionId := "" url := fmt.Sprintf("https://api.godaddy.com/v2/commerce/stores/%s/transactions/%s", storeId, transactionId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var transaction map[string]any json.NewDecoder(res.Body).Decode(&transaction) fmt.Println(transaction) } ``` ## Common errors The following table lists common errors when viewing transactions, the most likely cause, and additional notes: | Status | Most likely cause | Note | | ------ | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | `401` | PAT is missing or expired. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include the `commerce.transaction:read` scope. | | | `404` | Store ID or transaction ID doesn't exist or isn't accessible with the provided token. | | | `429` | Rate limit exceeded. | Honor the `Retry-After` header before retrying. | # How to list sales channels (https://developer.godaddy.com/en/docs/api-users/commerce/set-up-a-store/channel) *** title: How to list sales channels description: Query the sales channels registered to a store — online, POS, mobile, and more. keywords: channelId, ONLINE POS MOBILE channel type, listChannels, getChannel, point of sale, storefront, commerce.channel scope agentNotes: permissions: \[] scopes: \["commerce.channel:read"] idempotent: true destructive: false failureRecovery: "Safe to retry on any error. Channel reads are idempotent." related: apis: * title: "Channel API reference" href: "/docs/references/rest/channels/channel" guides: * title: "Manage a store" href: "/docs/api-users/commerce/set-up-a-store" concepts: * title: "Commerce core concepts" href: "/docs/api-users/commerce/concepts" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Channels represent the surfaces customers can buy from (like an online store, a point-of-sale terminal, a mobile app, or a third-party marketplace). This page covers how to list and read sales channels for a store. ## Prerequisites The following prerequisites are required before you can list sales channels for a store: * a GoDaddy account with an active commerce store * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the `commerce.channel:read` scope * your `storeId` Go to [Your stores](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to find your store ID. ## List channels `GET /v1/commerce/channels` retrieves sales channels matching the supplied filter. Include at least one of these query parameters — `registeredStores.storeId` (filter by store) or `externalChannelId` (filter by the channel's external ID). A request with neither returns `400 INVALID_REQUEST`. The following procedure lists channels registered to a specific store using `registeredStores.storeId`: 1. Retrieve a list of channels registered to a specific store: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/commerce/channels?registeredStores.storeId=${STORE_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v1/commerce/channels?registeredStores.storeId=${storeId}`, { headers: { Authorization: `Bearer ${token}` } } ); const channels = await res.json(); console.log(channels); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.get( "https://api.godaddy.com/v1/commerce/channels", params={"registeredStores.storeId": store_id}, headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() for channel in res.json(): print(channel["id"], channel["name"], channel["type"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/channels?registeredStores.storeId=%s", storeId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var channels []map[string]any json.NewDecoder(res.Body).Decode(&channels) fmt.Println(channels) } ``` 2. Review the response array of channel objects: ```json [ { "id": "", "name": "", "type": "", "status": "", "storeId": "", "createdAt": "", "updatedAt": "" }, { "id": "", "name": "", "type": "", "status": "", "storeId": "", "createdAt": "", "updatedAt": "" } ] ``` ## Get channel by ID `GET /v1/commerce/channels/{channelId}` retrieves a specific sales channel. PAT callers with store-level `commerce.channel:read` often receive `401` on this route because the service requires a per-resource FGA relation. List channels for the store and filter instead: ```bash curl -s "https://api.godaddy.com/v1/commerce/channels?registeredStores.storeId=${STORE_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" \ | jq '.items[] | select(.channelId == "")' ``` That returns the full channel object. The get-by-id examples below are the documented route; use the list workaround when get-by-id returns `401`. The following procedure reads a single channel by ID. * Retrieve a single channel by its `id`: ```bash tab="curl" CHANNEL_ID="" curl -s "https://api.godaddy.com/v1/commerce/channels/${CHANNEL_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const channelId = ""; const res = await fetch( `https://api.godaddy.com/v1/commerce/channels/${channelId}`, { headers: { Authorization: `Bearer ${token}` } } ); const channel = await res.json(); console.log(channel); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] channel_id = "" res = requests.get( f"https://api.godaddy.com/v1/commerce/channels/{channel_id}", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") channelId := "" url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/channels/%s", channelId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var channel map[string]any json.NewDecoder(res.Body).Decode(&channel) fmt.Println(channel) } ``` ## Channel types Each channel has a `type` from the Channels API enum. Use `subType` for product-specific detail (for example, a marketplace provider or website product); `subType` is set when the channel is registered and cannot be changed. | Type | Description | | ------------- | -------------------------------------------------------------------------------------------------------------- | | `RETAIL` | Physical retail location where merchant and customer transact in person (stores, pop-ups, food trucks) | | `ONLINE` | Web or online storefront sales | | `MOBILE` | Mobile app sales surface | | `MARKETPLACE` | External marketplace (for example Amazon or eBay) | | `SOCIAL` | Social commerce (for example Facebook or Instagram) | | `DEFAULT` | Platform default channel for the store; only one `DEFAULT` channel per store (often used for default payments) | ## Common errors | Status | Most likely cause | | ------ | -------------------------------------------------------------------------------------------------- | | `400` | Neither `registeredStores.storeId` nor `externalChannelId` was supplied. At least one is required. | | `401` | PAT is missing or expired. Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include the `commerce.channel:read` scope. | | `404` | Channel ID doesn't exist or isn't accessible with the provided token. | | `429` | Rate limit exceeded. Honor the `Retry-After` header before retrying. | # How to manage a store (https://developer.godaddy.com/en/docs/api-users/commerce/set-up-a-store) *** title: How to manage a store description: Find your store ID and read store configuration — required starting points for all Commerce API calls. keywords: storeId, getStore, storeAttribute, find store ID, commerce.store scope, store context, store setup agentNotes: permissions: \[] scopes: \["commerce.store:read"] idempotent: true destructive: false failureRecovery: "Safe to retry on any error. Store reads are idempotent." related: apis: * title: "Store API reference" href: "/docs/references/rest/stores/store" guides: * title: "List sales channels" href: "/docs/api-users/commerce/set-up-a-store/channel" concepts: * title: "Commerce core concepts" href: "/docs/api-users/commerce/concepts" * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Every Commerce API call is scoped to a store. Your store ID (`storeId`) is a UUID you copy from the platform and pass in the path for every subsequent request. This page covers reading store configuration once you have a `storeId`. ## Prerequisites The following prerequisites are required before you can manage a store: * a [GoDaddy Payments](https://www.godaddy.com/payments) account with an active store Go to [Set up a GoDaddy Payments account](https://www.godaddy.com/help/get-started-with-godaddy-payments-40721) to create your account and activate your store. * a [Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth) with the `commerce.store:read` scope * your `storeId` Sign in to your GoDaddy account and go to [About the Commerce API](https://developer.godaddy.com/docs/api-users/commerce#your-stores) to retrieve your `storeId`. ## Get store by ID `GET /v1/commerce/stores/{storeId}` retrieves the configuration for a specific store. The following procedure reads the details of a store by ID. 1. Retrieve the details of a store by its `id`: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}`, { headers: { Authorization: `Bearer ${token}` } } ); const store = await res.json(); console.log(store); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] res = requests.get( f"https://api.godaddy.com/v1/commerce/stores/{store_id}", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s", storeId) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var store map[string]any json.NewDecoder(res.Body).Decode(&store) fmt.Println(store) } ``` 2. Review the response including the store ID, name, status, currency, and address: ```json { "id": "", "name": "", "status": "", "currency": "", "timezone": "", "address": { "line1": "", "city": "", "state": "", "postalCode": "", "country": "" }, "createdAt": "", "updatedAt": "" } ``` ## Get store attribute `GET /v1/commerce/stores/{storeId}/attributes/{attrName}` retrieves a single configuration attribute for a store. The following procedure reads one attribute by name. 1. Retrieve a single attribute by name: ```bash tab="curl" ATTR_NAME="" curl -s "https://api.godaddy.com/v1/commerce/stores/${STORE_ID}/attributes/${ATTR_NAME}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const token = process.env.GODADDY_PAT; const storeId = process.env.STORE_ID; const attrName = ""; const res = await fetch( `https://api.godaddy.com/v1/commerce/stores/${storeId}/attributes/${attrName}`, { headers: { Authorization: `Bearer ${token}` } } ); const attr = await res.json(); console.log(attr); ``` ```python tab="Python" import os, requests token = os.environ["GODADDY_PAT"] store_id = os.environ["STORE_ID"] attr_name = "" res = requests.get( f"https://api.godaddy.com/v1/commerce/stores/{store_id}/attributes/{attr_name}", headers={"Authorization": f"Bearer {token}"}, ) res.raise_for_status() print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { token := os.Getenv("GODADDY_PAT") storeId := os.Getenv("STORE_ID") attrName := "" url := fmt.Sprintf("https://api.godaddy.com/v1/commerce/stores/%s/attributes/%s", storeId, attrName) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+token) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var attr map[string]any json.NewDecoder(res.Body).Decode(&attr) fmt.Println(attr) } ``` 2. Review the response returning the attribute name and its current value: ```json { "name": "", "value": "" } ``` ## Common errors The following table lists common errors when reading store configuration and their most likely causes: | Status | Most likely cause | | ------ | ------------------------------------------------------------------------------------------------ | | `401` | PAT is missing or expired. Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) to generate a new token. | | `403` | Token doesn't include the `commerce.store:read` scope. | | `404` | Store ID doesn't exist or isn't accessible with the provided token. | | `429` | Rate limit exceeded. Honor the `Retry-After` header before retrying. | # How to manage DNS records (https://developer.godaddy.com/en/docs/api-users/domains/manage/dns) *** title: How to manage DNS records description: Manage DNS records and nameservers using the v3 API. Add, read, replace, and delete individual DNS records, and replace authoritative nameservers with a single PUT request. keywords: recordId, zone apex, A record, CNAME record, MX record, TXT record, SRV record, CAA record, SPF DKIM, wildcard DNS, dns-records endpoint agentNotes: permissions: \["DNS Management"] scopes: \["domains.domain:read", "domains.dns:update", "domains.nameserver:update"] idempotent: false destructive: true failureRecovery: "Read operations are safe to retry. Deletes are irreversible — confirm the recordId before calling DELETE. Re-read the zone after failures to verify state." related: apis: * title: "Domains v3 — DNS records" href: "/docs/references/rest/domains/v3/records" guides: * title: "Registered domains" href: "/docs/api-users/domains/manage/list" * title: "Forward a domain" href: "/docs/api-users/domains/manage/forwarding" * title: "Troubleshoot DNS" href: "/docs/api-users/troubleshoot/dns" concepts: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Create, read, replace, and delete DNS records for domains hosted on GoDaddy's authoritative nameservers, and replace the authoritative nameservers themselves. All operations use the v3 API. This page covers two related operations: | Operation | Description | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | **DNS records** | Create, retrieve, replace, and delete A, AAAA, CNAME, MX, TXT, SRV, NS, and CAA records on a domain hosted by GoDaddy's authoritative DNS. | | **Nameservers** | Change which authoritative nameservers the registry returns for a domain. | This page uses three OAuth scopes: `domains.domain:read` to list records, `domains.dns:update` to create, replace, and delete records, and `domains.nameserver:update` to replace nameservers. Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for more information. ## List DNS records `GET /v3/domains/zones/{zone}/dns-records` returns a paginated collection of records for the zone. Use `type` and `name` query parameters to filter results. The following procedure retrieves DNS records for a zone. * Run the following command for your preferred language: ```bash tab="curl" # All records curl -s "https://api.godaddy.com/v3/domains/zones/example.com/dns-records" \ -H "Authorization: Bearer $GODADDY_PAT" # Filter by type curl -s "https://api.godaddy.com/v3/domains/zones/example.com/dns-records?type=A" \ -H "Authorization: Bearer $GODADDY_PAT" # Filter by type and name curl -s "https://api.godaddy.com/v3/domains/zones/example.com/dns-records?type=TXT&name=_acme-challenge" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const zone = "example.com"; const url = new URL(`https://api.godaddy.com/v3/domains/zones/${zone}/dns-records`); url.searchParams.set("type", "TXT"); url.searchParams.set("name", "_acme-challenge"); const res = await fetch(url, { headers: { Authorization: `Bearer ${pat}` }, }); const records = await res.json(); console.log(records.items); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] zone = "example.com" res = requests.get( f"https://api.godaddy.com/v3/domains/zones/{zone}/dns-records", params={"type": "TXT", "name": "_acme-challenge"}, headers={"Authorization": f"Bearer {pat}"}, ) res.raise_for_status() for record in res.json()["items"]: print(record["name"], record["type"], record["data"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "net/url" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") zone := "example.com" u, _ := url.Parse(fmt.Sprintf("https://api.godaddy.com/v3/domains/zones/%s/dns-records", zone)) q := u.Query() q.Set("type", "TXT") q.Set("name", "_acme-challenge") u.RawQuery = q.Encode() req, _ := http.NewRequest("GET", u.String(), nil) req.Header.Set("Authorization", "Bearer "+pat) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var body struct { Items []map[string]any `json:"items"` } json.NewDecoder(res.Body).Decode(&body) fmt.Println(body.Items) } ``` ```bash tab="CLI" gddy dns list example.com # Filter by type and name: gddy dns list example.com --type TXT --name _acme-challenge ``` The response is a `DNSRecords` object with an `items` array of `DNSRecord` entries. Each record includes a `recordId` needed for delete operations. Go to the [DNSRecord schema](#dnsrecord-schema) for the full field reference. ### DNSRecord schema Every entry in `items[]` is a `DNSRecord` object. | Field | Required | Description | Note | | ---------- | --------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | | `recordId` | Read-only | Server-assigned stable identifier for the record. | | | `name` | Yes | Record name relative to the zone apex. | Use `@` for the apex. Wildcards (`*`) supported for A, AAAA, and CNAME. | | `type` | Yes | Record type: `A`, `AAAA`, `CNAME`, `MX`, `TXT`, `SRV`, `NS`, `CAA`, or `SOA` (SOA is read-only). | | | `data` | Yes | Record value. | Format depends on type: IP for A/AAAA, hostname for CNAME, text for TXT, etc. | | `ttl` | Yes | Time-to-live in seconds. | Minimum 600 (10 min), maximum 86400 (24 hrs). | | `priority` | MX, SRV | Priority value. | Lower value equals higher preference. | | `weight` | SRV | Relative weight among equal-priority targets. | | | `port` | SRV | Target port number. | | | `service` | SRV | Service name. | Prefixed with an underscore (for example, `_http`). | | `protocol` | SRV | Transport protocol. | Prefixed with underscore (for example, `_tcp`). | | `flag` | CAA | Restriction flags byte. | Use `0` for non-critical, `128` for critical. | | `tag` | CAA | Property tag: `issue`, `issuewild`, or `iodef`. | | ### Pagination Results are page-based. Use `page` (1-based, default `1`) and `pageSize` (1–100, default `25`) to navigate. The following procedure paginates through DNS records. * Navigate pages: ```bash curl -s "https://api.godaddy.com/v3/domains/zones/example.com/dns-records?page=2&pageSize=50" \ -H "Authorization: Bearer $GODADDY_PAT" ``` Add `totalRequired=true` to include `totalItems` and `totalPages` in the response — omitted by default to avoid count-query overhead on large zones. The response `links` array contains HATEOAS navigation links (`self`, `first`, `last`, `next`, `prev`) where applicable. ## Add a record `POST /v3/domains/zones/{zone}/dns-records` creates a single DNS record in the zone. Changes are applied synchronously — no polling required. The following procedure adds a DNS record to a zone. * Create a record: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/zones/example.com/dns-records" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "type": "TXT", "name": "_acme-challenge", "data": "verification-string", "ttl": 600 }' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const zone = "example.com"; const res = await fetch( `https://api.godaddy.com/v3/domains/zones/${zone}/dns-records`, { method: "POST", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ type: "TXT", name: "_acme-challenge", data: "verification-string", ttl: 600 }), }, ); const record = await res.json(); console.log("Created record", record.recordId); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] zone = "example.com" res = requests.post( f"https://api.godaddy.com/v3/domains/zones/{zone}/dns-records", json={"type": "TXT", "name": "_acme-challenge", "data": "verification-string", "ttl": 600}, headers={ "Authorization": f"Bearer {pat}", "Content-Type": "application/json", }, ) res.raise_for_status() print("Created record", res.json()["recordId"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") zone := "example.com" body := bytes.NewReader([]byte( `{"type":"TXT","name":"_acme-challenge","data":"verification-string","ttl":600}`)) req, _ := http.NewRequest("POST", fmt.Sprintf("https://api.godaddy.com/v3/domains/zones/%s/dns-records", zone), body) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var record struct{ RecordID string `json:"recordId"` } json.NewDecoder(res.Body).Decode(&record) fmt.Println("Created record", record.RecordID) } ``` ```bash tab="CLI" gddy dns add example.com --type TXT --name _acme-challenge --data "verification-string" --ttl 600 ``` A successful response returns `201` with the created `DNSRecord` in the body. The `Location` header contains the URL for the new record, with the `recordId` you'll need for deletes. Replaying a `POST` after a `5xx` may create a duplicate record. Save the `recordId` from the `Location` header on success so you can clean up if needed. See [Errors → Retry semantics](https://developer.godaddy.com/docs/api-users/errors#retry-semantics). ## Replace a record `PUT /v3/domains/zones/{zone}/dns-records/{recordId}` fully replaces an existing DNS record. All writable fields — `name`, `type`, `data`, and `ttl` — must be supplied. Partial updates are not supported on this endpoint. Changes are applied synchronously. Every writable field must be present in the request body — omitted fields are not preserved. Read the record first if you need to keep any existing values. The following procedure replaces a DNS record. * Replace a record: ```bash tab="curl" curl -s -X PUT "https://api.godaddy.com/v3/domains/zones/example.com/dns-records/$RECORD_ID" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "name": "@", "type": "A", "data": "192.0.2.1", "ttl": 3600 }' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const zone = "example.com"; const recordId = process.env.RECORD_ID; const res = await fetch( `https://api.godaddy.com/v3/domains/zones/${zone}/dns-records/${recordId}`, { method: "PUT", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ name: "@", type: "A", data: "192.0.2.1", ttl: 3600 }), }, ); const record = await res.json(); console.log("Replaced record", record.recordId); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] zone = "example.com" record_id = os.environ["RECORD_ID"] res = requests.put( f"https://api.godaddy.com/v3/domains/zones/{zone}/dns-records/{record_id}", json={"name": "@", "type": "A", "data": "192.0.2.1", "ttl": 3600}, headers={ "Authorization": f"Bearer {pat}", "Content-Type": "application/json", }, ) res.raise_for_status() print("Replaced record", res.json()["recordId"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") zone := "example.com" recordID := os.Getenv("RECORD_ID") body := bytes.NewReader([]byte( `{"name":"@","type":"A","data":"192.0.2.1","ttl":3600}`)) req, _ := http.NewRequest("PUT", fmt.Sprintf("https://api.godaddy.com/v3/domains/zones/%s/dns-records/%s", zone, recordID), body) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var record struct{ RecordID string `json:"recordId"` } json.NewDecoder(res.Body).Decode(&record) fmt.Println("Replaced record", record.RecordID) } ``` ```bash tab="CLI" # Replaces every record for the given type and name. Use --dry-run to preview. gddy dns set example.com --type A --name www --data 192.0.2.20 --ttl 600 ``` A successful response returns `200` with the updated `DNSRecord` in the body. GoDaddy-managed SOA and NS records cannot be replaced. Attempting to do so returns `409 Conflict`. ## Delete a record `DELETE /v3/domains/zones/{zone}/dns-records/{recordId}` permanently removes a single record from the zone. Changes are applied synchronously. The following procedure deletes a DNS record from a zone. * Delete a record: ```bash tab="curl" curl -s -X DELETE "https://api.godaddy.com/v3/domains/zones/example.com/dns-records/$RECORD_ID" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const zone = "example.com"; const recordId = process.env.RECORD_ID; const res = await fetch( `https://api.godaddy.com/v3/domains/zones/${zone}/dns-records/${recordId}`, { method: "DELETE", headers: { Authorization: `Bearer ${pat}` }, }, ); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] zone = "example.com" record_id = os.environ["RECORD_ID"] res = requests.delete( f"https://api.godaddy.com/v3/domains/zones/{zone}/dns-records/{record_id}", headers={"Authorization": f"Bearer {pat}"}, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") zone := "example.com" recordID := os.Getenv("RECORD_ID") req, _ := http.NewRequest("DELETE", fmt.Sprintf("https://api.godaddy.com/v3/domains/zones/%s/dns-records/%s", zone, recordID), nil) req.Header.Set("Authorization", "Bearer "+pat) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` ```bash tab="CLI" # Removes all records of the given type and name. Use --dry-run to preview. gddy dns delete example.com --type A --name www ``` A successful response returns `204` with no body. A `404` is returned if the `recordId` does not exist — deleting an already-deleted record is not a no-op. GoDaddy-managed SOA and NS records cannot be deleted; attempting to do so returns `409 Conflict`. ## Manage nameservers `PUT /v3/domains/domain-names/{domain-name}/nameservers` replaces the authoritative nameservers for a domain. Accepts a plain array of 2–13 nameserver hostnames. The GoDaddy CLI does not support nameserver management. Use the REST API for this operation. The following procedure replaces the authoritative nameservers for a domain. * Replace a nameserver for a domain: ```bash tab="curl" curl -s -X PUT "https://api.godaddy.com/v3/domains/domain-names/example.com/nameservers" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '["ns1.example-dns.com", "ns2.example-dns.com"]' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch( "https://api.godaddy.com/v3/domains/domain-names/example.com/nameservers", { method: "PUT", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify(["ns1.example-dns.com", "ns2.example-dns.com"]), }, ); console.log(res.status); // expect 202 ``` ```python tab="Python" import os, requests res = requests.put( "https://api.godaddy.com/v3/domains/domain-names/example.com/nameservers", json=["ns1.example-dns.com", "ns2.example-dns.com"], headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 202 ``` ```go tab="Go" package main import ( "bytes" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`["ns1.example-dns.com","ns2.example-dns.com"]`)) req, _ := http.NewRequest("PUT", "https://api.godaddy.com/v3/domains/domain-names/example.com/nameservers", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 202 } ``` A successful request returns `202 Accepted` with a `DomainOperation` in the body and a `Location` header pointing to the operation URL. Propagation to the registry is asynchronous — poll the operation until it reaches a terminal state. Switching nameservers moves authoritative DNS off GoDaddy. Records you manage via `/v3/domains/zones/{zone}/dns-records` will no longer be served — make sure the new nameservers are fully configured before cutting over. ## Common errors | Status | Most likely cause | | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | Malformed request — missing required field, invalid field type, or unknown record type. Inspect `fields[]`. | | `401` | Authentication credentials are missing or invalid. | | `403` | Caller is not authorized. Check that your token includes the required scope (`domains.dns:update` or `domains.nameserver:update`). | | `404` | Record or domain not found, or not owned by the authenticated account. | | `409` | Conflict — request cannot be completed in the current state. Attempting to delete or replace a GoDaddy-managed SOA or NS record (`dns_record_not_mutable`). | | `422` | Valid structure but violates a business rule (e.g. CNAME at apex). | | `429` | Rate limit exceeded. | Full error envelope: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## DNSRecord schema | Field | Required | Description | Note | | ---------- | --------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | | `recordId` | Read-only | Server-assigned stable identifier for the record. | | | `name` | Yes | Record name relative to the zone apex. | Use `@` for the apex. Wildcards (`*`) supported for A, AAAA, and CNAME. | | `type` | Yes | Record type: `A`, `AAAA`, `CNAME`, `MX`, `TXT`, `SRV`, `NS`, `CAA`, or `SOA` (SOA is read-only). | | | `data` | Yes | Record value. | Format depends on type (like IP for A/AAAA, hostname for CNAME, and text for TXT). | | `ttl` | Yes | Time-to-live in seconds. | Minimum 600 (10 min), maximum 86400 (24 hrs). | | `priority` | MX, SRV | Priority value. | Lower value equals higher preference. | | `weight` | SRV | Relative weight among equal-priority targets. | | | `port` | SRV | Target port number. | | | `service` | SRV | Service name. | Prefixed with an underscore (for example, `_http`). | | `protocol` | SRV | Transport protocol. | Prefixed with underscore (for example, `_tcp`). | | `flag` | CAA | Restriction flags byte. | Use `0` for non-critical, `128` for critical. | | `tag` | CAA | Property tag: `issue`, `issuewild`, or `iodef`. | | ## Reference * [v3 API reference](https://developer.godaddy.com/docs/references/rest/domains/v3) ## Next # How to forward a domain (https://developer.godaddy.com/en/docs/api-users/domains/manage/forwarding) *** title: How to forward a domain description: Create, read, update, and delete HTTP redirect rules on a domain or subdomain via the v2 forwarding API. keywords: 301 redirect, 302 redirect, REDIRECT\_PERMANENT, REDIRECT\_TEMPORARY, masked forwarding, DomainForwarding, subdomain redirect, v2 customers forwards agentNotes: permissions: \["Domain Owner"] scopes: \["domains.domain:read", "domains.domain:update"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "PUT is idempotent — replaying yields the same rule. DELETE is safe; a subsequent GET returns 404. Verify current state via GET before retrying ambiguous errors." related: apis: * title: "Domains v2 — Forwarding" href: "/docs/references/rest/domains/v2/manage-domain-settings" guides: * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" * title: "Registered domains" href: "/docs/api-users/domains/manage/list" concepts: * title: "Handle errors" href: "/docs/api-users/errors" *** ## Overview Domain forwarding creates an HTTP redirect rule for a fully-qualified domain name (FQDN) — the root domain or a subdomain. When a browser requests the FQDN, the registrar returns a redirect to the target URL. Use forwarding to redirect a root domain to `www`, point a subdomain to an external URL, or set up temporary redirects during a site migration. Forwarding operations use the v2 API at `/v2/customers/{customerId}/domains/forwards/{fqdn}`. The `customerId` path parameter is your GoDaddy shopper ID. Domain forwarding is v2-only. There is no equivalent in the v1 namespace. ## Prerequisites The following prerequisites are required before you manage forwarding rules: * A GoDaddy account with at least one registered domain * A [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth) with `domains.domain:read` and `domains.domain:update` scopes * Your GoDaddy shopper ID (`CUSTOMER_ID`) (located in your [GoDaddy account settings](https://sso.godaddy.com)) ## Read a forwarding rule Returns the `DomainForwarding` object for the FQDN. Returns `404` if no forwarding rule is configured for that FQDN. The following procedure reads a forwarding rule for an FQDN. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v2/customers/$CUSTOMER_ID/domains/forwards/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const customer = process.env.CUSTOMER_ID; const res = await fetch( `https://api.godaddy.com/v2/customers/${customer}/domains/forwards/example.com`, { headers: { Authorization: `Bearer ${pat}`, Accept: "application/json", }, }, ); if (res.status === 404) throw new Error("No forwarding rule set"); console.log(await res.json()); ``` ```python tab="Python" import os, requests customer = os.environ["CUSTOMER_ID"] res = requests.get( f"https://api.godaddy.com/v2/customers/{customer}/domains/forwards/example.com", headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Accept": "application/json", }, ) if res.status_code == 404: print("No forwarding rule set") else: print(res.json()) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { customer := os.Getenv("CUSTOMER_ID") url := fmt.Sprintf( "https://api.godaddy.com/v2/customers/%s/domains/forwards/example.com", customer) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Accept", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() if res.StatusCode == 404 { fmt.Println("No forwarding rule set") return } var rule map[string]any json.NewDecoder(res.Body).Decode(&rule) fmt.Println(rule) } ``` Response (`DomainForwarding` object): ```json { "fqdn": "example.com", "type": "REDIRECT_PERMANENT", "url": "https://www.example.com/" } ``` Returns `404` if no forwarding rule is configured for the FQDN. ## Create or replace a forwarding rule `PUT /v2/customers/{customerId}/domains/forwards/{fqdn}` creates the rule if it doesn't exist, or replaces it if it does. The call is idempotent — replaying the same request produces the same rule. The following procedure creates or replaces a forwarding rule. * Run the following command for your preferred language: ```bash tab="curl" curl -s -X PUT "https://api.godaddy.com/v2/customers/$CUSTOMER_ID/domains/forwards/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "fqdn": "example.com", "type": "REDIRECT_PERMANENT", "url": "https://www.example.com/" }' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const customer = process.env.CUSTOMER_ID; const res = await fetch( `https://api.godaddy.com/v2/customers/${customer}/domains/forwards/example.com`, { method: "PUT", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ fqdn: "example.com", type: "REDIRECT_PERMANENT", url: "https://www.example.com/", }), }, ); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests customer = os.environ["CUSTOMER_ID"] res = requests.put( f"https://api.godaddy.com/v2/customers/{customer}/domains/forwards/example.com", json={"fqdn": "example.com", "type": "REDIRECT_PERMANENT", "url": "https://www.example.com/"}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "bytes" "fmt" "net/http" "os" ) func main() { customer := os.Getenv("CUSTOMER_ID") body := bytes.NewReader([]byte( `{"fqdn":"example.com","type":"REDIRECT_PERMANENT","url":"https://www.example.com/"}`)) req, _ := http.NewRequest("PUT", fmt.Sprintf("https://api.godaddy.com/v2/customers/%s/domains/forwards/example.com", customer), body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` Returns `204 No Content` on success. ### Forward a subdomain The `fqdn` path parameter accepts any FQDN on a domain you own. The same PUT pattern applies — just change the `fqdn` path parameter and body field to the subdomain: ```bash curl -s -X PUT "https://api.godaddy.com/v2/customers/$CUSTOMER_ID/domains/forwards/shop.example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "fqdn": "shop.example.com", "type": "REDIRECT_PERMANENT", "url": "https://store.example.com/" }' ``` ## Delete a forwarding rule Removes the forwarding rule for the FQDN. Returns `204 No Content`. After deletion, browsers visiting the FQDN no longer receive a redirect. The following procedure deletes a forwarding rule. * Run the following command for your preferred language: ```bash tab="curl" curl -s -X DELETE "https://api.godaddy.com/v2/customers/$CUSTOMER_ID/domains/forwards/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const customer = process.env.CUSTOMER_ID; const res = await fetch( `https://api.godaddy.com/v2/customers/${customer}/domains/forwards/example.com`, { method: "DELETE", headers: { Authorization: `Bearer ${pat}` }, }, ); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests customer = os.environ["CUSTOMER_ID"] res = requests.delete( f"https://api.godaddy.com/v2/customers/{customer}/domains/forwards/example.com", headers={"Authorization": f"Bearer {os.environ['GODADDY_PAT']}"}, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "fmt" "net/http" "os" ) func main() { customer := os.Getenv("CUSTOMER_ID") req, _ := http.NewRequest("DELETE", fmt.Sprintf("https://api.godaddy.com/v2/customers/%s/domains/forwards/example.com", customer), nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` ## Forwarding rule fields | Field | Required | Description | | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `fqdn` | Yes | The domain or subdomain to forward (e.g. `example.com` or `shop.example.com`). Must match the `{fqdn}` path parameter. | | `type` | Yes | Redirect type — see table below. | | `url` | Yes | Destination URL (must be a valid `http://` or `https://` URL). | | `mask` | No | Masking options when `type` is `MASKED`. | ### Redirect types | Type | HTTP code | Description | | -------------------- | --------- | -------------------------------------------------------------------------------------------------------------- | | `REDIRECT_PERMANENT` | 301 | Permanent redirect. Search engines transfer link equity to the target. Use for long-term or permanent moves. | | `REDIRECT_TEMPORARY` | 302 | Temporary redirect. Search engines retain the source URL's link equity. Use for short-term redirects. | | `MASKED` | — | The browser loads the target URL but the original FQDN stays visible in the address bar. Uses an inline frame. | Masked forwarding prevents the destination URL from appearing in the browser address bar by loading it in a frame. It isn't appropriate for most use cases and can harm SEO. Prefer `REDIRECT_PERMANENT` or `REDIRECT_TEMPORARY` unless masking is specifically required. ## Common errors | Status | Most likely cause | | ------ | -------------------------------------------------------------------------------------------------------------- | | `403` | Credential lacks write access to this domain. | | `404` | Domain doesn't exist, isn't owned by the authenticated account, or no forwarding rule exists (for GET/DELETE). | | `409` | Domain status prevents the operation (e.g. domain is in a pending transfer). | | `422` | Invalid `fqdn`, invalid destination URL, or unrecognized `type` value. | Full error envelope: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## Reference * [v2 forwarding operations](https://developer.godaddy.com/docs/references/rest/domains/v2/manage-domain-settings) ## Next # Browse the Domains API (https://developer.godaddy.com/en/docs/api-users/domains/manage) *** title: Browse the Domains API description: The Domain object, related resources, and task-grouped operations. keywords: DomainDetail schema, DomainDetailV2, renewAuto, locked field, nameServers, contactRegistrant, ACTIVE EXPIRED PENDING\_TRANSFER, domain status values related: apis: * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" * title: "Domains v1 reference" href: "/docs/references/rest/domains/v1" * title: "Domains v2 reference" href: "/docs/references/rest/domains/v2" guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Authenticate" href: "/docs/api-users/auth" * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Register a domain" href: "/docs/api-users/domains/register" *** ## Overview The Domains API supports availability search, registration, DNS and contact management, registry lock, forwarding, and inbound transfers. Operations span three version namespaces. v3 is the preferred API for domain registration, v1 and v2 provide everything else (DNS, renewals, transfers, and customer actions). ## Version namespaces The following table lists the version namespaces and what they contain. | Version | Base path | What's here | | ------- | ---------------------------------------- | ----------------------------------------------------------------------------------- | | v3 | `/v3/domains/...` | Availability checks and registration (the preferred namespace for new integrations) | | v2 | `/v2/customers/{customerId}/domains/...` | v1 capabilities with async processing and operations tracking | | v1 | `/v1/domains/...` | List, DNS, contacts, lock, and renewals | ## The Domain object A domain registered or managed through this API is the central resource of the Domains namespace. It carries registry metadata, expiration and renewal state, the four WHOIS contact roles, registry lock and privacy flags, and the authoritative nameservers returned at the TLD. Almost every operation in this namespace either returns a `DomainDetail` or modifies a field on one. The schema is named `DomainDetail` in v1 and `DomainDetailV2` in v2. The two are largely overlapping; v2 extends v1 with async operation tracking — the `DomainDetailV2` schema adds status values and action references used by long-running writes like transfers and redemptions. For single-domain detail, prefer v2: it returns more consistent status values and exposes async operation tracking if you need it. The following table lists the key fields on a `DomainDetail` object. | Field | Description | | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | | `domain` | Fully-qualified domain name (for example `example.com`). | | `status` | Current registry or registrar state, like `ACTIVE`, `PENDING_TRANSFER`, or `EXPIRED`. | | `expires` | Expiration timestamp in ISO-8601 format. | | `renewAuto` | Whether auto-renew is enabled on the domain. | | `locked` | Whether the registry transfer-lock is engaged. | | `privacy` | Whether WHOIS privacy is purchased and active. | | `nameServers` | Authoritative nameservers the registry returns for the domain. | | `contactRegistrant` / `contactAdmin` / `contactBilling` / `contactTech` | The four WHOIS contact roles, each a `Contact` object. | The full schema is in the OpenAPI specs, available as machine-readable JSON at [/openapi/domains-v1.json](https://developer.godaddy.com/openapi/domains-v1.json) and [/openapi/domains-v2.json](https://developer.godaddy.com/openapi/domains-v2.json). Go to the [Domains REST reference](https://developer.godaddy.com/docs/references/rest/domains) for the complete API reference. ### Related objects Every operation in the Domains namespace returns or accepts one of the following objects in addition to `DomainDetail`. Each links to the rendered reference where its full schema and the operations it appears on are documented. | Object | Description | Reference | | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | `DNSRecord` | A single DNS record on a domain managed by GoDaddy's authoritative nameservers, supporting `A`, `AAAA`, `CNAME`, `MX`, `TXT`, `SRV`, `NS`, `SOA`, and `CAA` types. | [v1 DNS operations](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-dns) | | `Contact` | A WHOIS contact record covering name, organization, address, email, and phone. The same shape is used for the registrant, admin, billing, and tech roles on a domain. | [v2 management operations](https://developer.godaddy.com/docs/references/rest/domains/v2/manage-domain-settings) | | `Action` | An asynchronous-operation tracker returned with `202 Accepted` when the API queues a long-running write (transfers, redemption). Callers poll the action endpoint until the action's `status` reaches a terminal state. | [v2 action operations](https://developer.godaddy.com/docs/references/rest/domains/v2/domain-actions) | | `DomainAvailableResponse` | The result of a single-domain availability check, including the available flag, current price in `currency-micro-unit` format, the registration period in years, and whether the answer came from a live registry call or cache. | [v1 availability operations](https://developer.godaddy.com/docs/references/rest/domains/v1/find-domains) | | `DomainForwarding` | An HTTP forwarding rule that redirects requests for a domain to a target URL, configurable as masked or unmasked and as a permanent (`301`) or temporary (`302`) redirect. | [v2 management operations](https://developer.godaddy.com/docs/references/rest/domains/v2/manage-domain-settings) | | `DomainTransferIn` | The request shape for an inbound transfer, carrying the domain name, authcode, and required contacts. | [v2 transfer operations](https://developer.godaddy.com/docs/references/rest/domains/v2/transfer-domains) | | `Error` / `ErrorLimit` | The standard error envelope returned on `4xx` and `5xx` responses across the namespace. `ErrorLimit` extends `Error` with `retryAfterSec` for `429` rate-limited responses. | [Errors](https://developer.godaddy.com/docs/api-users/errors) | Most Domains API writes complete synchronously and return `204 No Content`. A few long-running operations — transfers, redemption — return `202 Accepted` with an `Action` body instead. Poll `GET /v2/customers/{customerId}/domains/actions/{actionId}` until `status` reaches a terminal state (`COMPLETED`, `FAILED`, or `CANCELLED`). ## Tasks ### Manage existing domains ### Acquire new domains * [Generate a Personal Access Token (PAT)](https://developer.godaddy.com/docs/api-users/auth/how-to). * [Fund your account](https://www.godaddy.com/help/add-a-payment-method-to-my-godaddy-account-20037) for write operations. * [Set up the CLI](https://developer.godaddy.com/docs/api-users/cli/set-up). * [Make your first call](https://developer.godaddy.com/docs/api-users/quickstart). # How to list registered domains (https://developer.godaddy.com/en/docs/api-users/domains/manage/list) *** title: How to list registered domains description: Retrieve the domains owned by the authenticated account, with cursor pagination, and fetch full detail for any one domain. keywords: GET /v3/domains/domain-names, GET /v1/domains, pageToken, lifecycleGroups, REGISTERED status, domain inventory, DomainCollection, list all domains agentNotes: permissions: \["DNS Management", "Domain Owner"] scopes: \["domains.domain:read"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "Read-only. Safe to retry any failure. For paginated cursors, resume from the last successful marker." related: apis: * title: "Domains v3 — Domain names" href: "/docs/references/rest/domains/v3/domains" * title: "Domains v1 — List domains" href: "/docs/references/rest/domains/v1/manage-domain-settings" * title: "Domains v2 — Get domain detail" href: "/docs/references/rest/domains/v2/manage-domain-settings" guides: * title: "Update contacts" href: "/docs/api-users/domains/manage/update-contacts" * title: "Manage renewals" href: "/docs/api-users/domains/manage/renewals" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" concepts: * title: "Pagination" href: "/docs/api-users/pagination" * title: "Authentication" href: "/docs/api-users/auth" *** ## Overview List domains registered to an account using `GET /v3/domains/domain-names` (recommended) or the legacy `GET /v1/domains`. Fetch full detail for any single domain using `GET /v2/customers/{customerId}/domains/{domain}`. v3 uses cursor-based HATEOAS pagination; v1 uses `limit` and `marker`. ## v3 — List registered domains `GET /v3/domains/domain-names` returns a paginated list of domains owned by the authenticated account. Results use cursor-based pagination via HATEOAS links in the response. The following procedure lists registered domains using the v3 API. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/domain-names" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v3/domains/domain-names", { headers: { Authorization: `Bearer ${pat}` }, }); const { items, links } = await res.json(); console.log(items.map((d) => d.domain)); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] res = requests.get( "https://api.godaddy.com/v3/domains/domain-names", headers={"Authorization": f"Bearer {pat}"}, ) res.raise_for_status() for d in res.json()["items"]: print(d["domain"], d.get("status")) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") req, _ := http.NewRequest("GET", "https://api.godaddy.com/v3/domains/domain-names", nil) req.Header.Set("Authorization", "Bearer "+pat) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var body struct { Items []struct { Domain string `json:"domain"` Status string `json:"status"` } `json:"items"` Links []struct { Rel string `json:"rel"` Href string `json:"href"` } `json:"links"` } json.NewDecoder(res.Body).Decode(&body) for _, d := range body.Items { fmt.Println(d.Domain, d.Status) } } ``` ```bash tab="CLI" gddy domain list # Filter by status: gddy domain list --status ACTIVE ``` The response is a `DomainCollection` with `items` (the current page) and `links` (pagination navigation): ```json { "items": [ { "domain": "example.com", "status": "ACTIVE", "expiresAt": "2027-01-15T00:00:00Z", "autoRenew": true, "privacy": false, "transferLock": true, "nameServers": ["ns01.domaincontrol.com", "ns02.domaincontrol.com"] } ], "links": [ { "rel": "self", "href": "/v3/domains/domain-names?pageSize=25" }, { "rel": "next", "href": "/v3/domains/domain-names?pageSize=25&pageToken=eyJkb21haW4iOiJleGFtcGxlLmNvbSJ9" } ] } ``` Follow the `rel=next` link to retrieve the next page. When `rel=next` is absent, you have reached the last page. ### Filtering by lifecycle group Use the `lifecycleGroups` query parameter to filter results by `DomainLifecycleGroup`: | Value | Includes | | ------------------ | ------------------------------------------------------------------------------------------------------ | | `PENDING` | Domains with setup in progress (for example, `PENDING_REGISTRATION`). | | `REGISTERED` | Active, operational domains (for example, `ACTIVE`, `PARKED`). | | `PENDING_TERMINAL` | Domains approaching a terminal state (for example, `PENDING_TRANSFER`, `EXPIRED`). | | `TERMINAL` | Domains that are no longer manageable (for example, `CANCELLED`, `DELETED_REDEEMABLE`, `TRANSFERRED`). | ```bash curl -s "https://api.godaddy.com/v3/domains/domain-names?lifecycleGroups=REGISTERED" \ -H "Authorization: Bearer $GODADDY_PAT" ``` Reference: [`GET /v3/domains/domain-names`](https://developer.godaddy.com/docs/references/rest/domains/v3/domains) ## v1 — List registered domains `GET /v1/domains` returns the domains owned by the authenticated account, paginated with `limit` and `marker`. `GET /v1/domains/{domain}` returns full detail for a single domain. This page assumes you have a PAT credential. See [Authentication](https://developer.godaddy.com/docs/api-users/auth) and [Quickstart](https://developer.godaddy.com/docs/api-users/quickstart) if you don't. ## Retrieve registered domains The response is an array of domain summaries. For pagination semantics and a looping example, see [Pagination](https://developer.godaddy.com/docs/api-users/pagination). The following procedure retrieves the domains registered to the authenticated account. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/domains?limit=100" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains?limit=100", { headers: { Authorization: `Bearer ${pat}`, Accept: "application/json", }, }); const domains = await res.json(); console.log(domains.map((d) => d.domain)); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] res = requests.get( "https://api.godaddy.com/v1/domains", params={"limit": 100}, headers={ "Authorization": f"Bearer {pat}", "Accept": "application/json", }, ) res.raise_for_status() for d in res.json(): print(d["domain"], d.get("status")) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) type Domain struct { Domain string `json:"domain"` Status string `json:"status"` } func main() { pat := os.Getenv("GODADDY_PAT") req, _ := http.NewRequest("GET", "https://api.godaddy.com/v1/domains?limit=100", nil) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Accept", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var domains []Domain json.NewDecoder(res.Body).Decode(&domains) for _, d := range domains { fmt.Println(d.Domain, d.Status) } } ``` ### Filtering `GET /v1/domains` accepts these query parameters in addition to `limit` and `marker`: | Parameter | Notes | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `statuses` | Comma-separated list of domain statuses (e.g. `ACTIVE`, `EXPIRED`, `PENDING_TRANSFER`). Returns only domains in one of the listed statuses. | | `statusGroups` | Coarser filter — by status group (e.g. `VISIBLE`, `EXPIRED`). | | `includes` | Comma-separated list of expansions to include (e.g. `contacts`). Adds related objects to each item without a follow-up call. | | `modifiedDate` | ISO-8601 timestamp. Returns only domains modified at or after this time. | Reference: [`GET /v1/domains`](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-domain-settings). ## Get details for a single domain The response is a `DomainDetail` object covering registration metadata, expiration, contacts, nameservers, lock state, privacy state, and auto-renew configuration. For the full schema, see the reference. The following procedure retrieves details for a single domain. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains/example.com", { headers: { Authorization: `Bearer ${pat}`, Accept: "application/json", }, }); const detail = await res.json(); console.log(detail.domain, detail.status, detail.expires); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] res = requests.get( "https://api.godaddy.com/v1/domains/example.com", headers={"Authorization": f"Bearer {pat}", "Accept": "application/json"}, ) res.raise_for_status() d = res.json() print(d["domain"], d["status"], d["expires"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") req, _ := http.NewRequest("GET", "https://api.godaddy.com/v1/domains/example.com", nil) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Accept", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var detail struct { Domain string `json:"domain"` Status string `json:"status"` Expires string `json:"expires"` } json.NewDecoder(res.Body).Decode(&detail) fmt.Println(detail.Domain, detail.Status, detail.Expires) } ``` ```bash tab="CLI" gddy domain get example.com ``` Reference: [`GET /v1/domains/{domain}`](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-domain-settings). ## v2 — single domain detail Use the v2 endpoint for single-domain detail. It returns consistent status values and gives you access to async operation tracking if you need it. The following procedure retrieves domain details for a specific customer. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v2/customers/$CUSTOMER_ID/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const customer = process.env.CUSTOMER_ID; const res = await fetch( `https://api.godaddy.com/v2/customers/${customer}/domains/example.com`, { headers: { Authorization: `Bearer ${pat}`, Accept: "application/json", }, }, ); const detail = await res.json(); console.log(detail.domain, detail.status); ``` ```python tab="Python" import os, requests customer = os.environ["CUSTOMER_ID"] res = requests.get( f"https://api.godaddy.com/v2/customers/{customer}/domains/example.com", headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Accept": "application/json", }, ) res.raise_for_status() d = res.json() print(d["domain"], d["status"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { customer := os.Getenv("CUSTOMER_ID") pat := os.Getenv("GODADDY_PAT") req, _ := http.NewRequest("GET", fmt.Sprintf("https://api.godaddy.com/v2/customers/%s/domains/example.com", customer), nil) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Accept", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var detail struct { Domain string `json:"domain"` Status string `json:"status"` } json.NewDecoder(res.Body).Decode(&detail) fmt.Println(detail.Domain, detail.Status) } ``` Reference: [`GET /v2/customers/{customerId}/domains/{domain}`](https://developer.godaddy.com/docs/references/rest/domains/v2/manage-domain-settings). v2 paths (`/v2/customers/{customerId}/domains/...`) are preferred for single-domain detail; v1 paths are appropriate for list operations and account-scoped writes. ## Common errors | Status | Most likely cause | | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | `401` | Token missing, expired, or revoked. | | `403` | Account doesn't meet requirements for this operation. See [Account requirements](https://developer.godaddy.com/docs/api-users/auth#account-requirements). | | `404` (single-domain GET) | Domain doesn't exist, or isn't owned by the authenticated account. | | `429` | Rate limit. Wait `retryAfterSec` and retry. | Full error envelope and retry guidance: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## Next # How to lock a domain (https://developer.godaddy.com/en/docs/api-users/domains/manage/lock) *** title: How to lock a domain description: Read and toggle the registry transfer-lock state on a domain you own. Unlock only when a transfer or registrant change requires it. keywords: EPP lock, clientTransferProhibited, domain theft prevention, transfer protection, registrar lock, PATCH domains, locked:true locked:false agentNotes: permissions: \["Domain Owner"] scopes: \["domains.domain:read", "domains.domain:update"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "Idempotent — locking an already-locked domain is a no-op. Prefer GET-before-PATCH to confirm current state on error retries." related: apis: * title: "Domains v1 — Update domain" href: "/docs/references/rest/domains/v1/manage-domain-settings" guides: * title: "Update contacts" href: "/docs/api-users/domains/manage/update-contacts" concepts: * title: "Handle errors" href: "/docs/api-users/errors" *** ## Overview Registry lock sets the `clientTransferProhibited` flag at the domain registry, preventing any registrar from initiating an outbound transfer without your explicit consent. Lock is enabled by default at registration and has no effect on DNS resolution, email delivery, or any service hosted on the domain. Disable it only for the duration of a transfer or registrant change, then re-enable it immediately. Lock state is a field on the `DomainDetail` object, read with `GET /v1/domains/{domain}` and toggled with `PATCH /v1/domains/{domain}`. Registry lock management isn't available in v3 yet. This page uses the v1 endpoint (`PATCH /v1/domains/{domain}`). ## Prerequisites The following prerequisites are required before you manage registry lock: * A GoDaddy account that owns the domain * A [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth) with `domains.domain:read` and `domains.domain:update` scopes ## Read lock state Returns the full `DomainDetail` object. The `locked` boolean is `true` when `clientTransferProhibited` is set at the registry. The following procedure reads the lock state for a domain. * Run the following command: ```bash curl -s "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```json { "domain": "example.com", "status": "ACTIVE", "locked": true, "renewAuto": true, "expires": "2026-03-15T00:00:00.000Z" } ``` ## Enable lock Send `{"locked": true}` to the domain update endpoint. Returns `204 No Content`. Idempotent — locking an already-locked domain is a no-op. The following procedure enables the registry transfer-lock on a domain. * Run the following command for your preferred language: ```bash tab="curl" curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"locked": true}' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains/example.com", { method: "PATCH", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ locked: true }), }); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests res = requests.patch( "https://api.godaddy.com/v1/domains/example.com", json={"locked": True}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "bytes" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`{"locked": true}`)) req, _ := http.NewRequest("PATCH", "https://api.godaddy.com/v1/domains/example.com", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` ## Disable lock Send `{"locked": false}` to release the transfer-lock. Returns `204 No Content`. The following procedure disables the registry transfer-lock on a domain. Unlock only for as long as the transfer or registrant change requires. Once the operation completes, re-enable lock with `{"locked": true}`. High-value and production-serving domains should be locked at all other times. * Run the following command for your preferred language: ```bash tab="curl" curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"locked": false}' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains/example.com", { method: "PATCH", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ locked: false }), }); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests res = requests.patch( "https://api.godaddy.com/v1/domains/example.com", json={"locked": False}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "bytes" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`{"locked": false}`)) req, _ := http.NewRequest("PATCH", "https://api.godaddy.com/v1/domains/example.com", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` ## When to unlock Two operations require the lock to be off before they can proceed: | Scenario | Detail | | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **Outbound transfer** | The receiving registrar cannot initiate the transfer until lock is disabled. | | **Registrant change on some TLDs** | A subset of ccTLDs require unlock before the registry accepts a registrant update. Check the TLD's registry policy before attempting the change. | Lock is enabled by default at registration. Leave it on at all other times — it has no effect on DNS resolution, email delivery, or any service hosted on the domain. ## Request body `PATCH /v1/domains/{domain}` accepts a `DomainUpdate` object. Only the fields you include are updated. | Field | Type | Description | | ------------- | --------- | --------------------------------------------------------------------------------------------------------------------------- | | `locked` | boolean | Whether to engage the registry transfer-lock. | | `renewAuto` | boolean | Whether auto-renew is enabled. See [Renewals](https://developer.godaddy.com/docs/api-users/domains/manage/renewals). | | `nameServers` | string\[] | Authoritative nameservers (apex). See [DNS → Manage nameservers](https://developer.godaddy.com/docs/api-users/domains/manage/dns#manage-nameservers-v2). | | `exposeWhois` | boolean | Whether contact details appear in WHOIS. Overridden by `privacy`. | ## Common errors | Status | Most likely cause | | ------ | ----------------------------------------------------------------- | | `400` | Malformed request body. | | `403` | Credential lacks write access to this domain. | | `404` | Domain doesn't exist or isn't owned by the authenticated account. | | `409` | Conflicting operation in progress (e.g. mid-transfer). | | `422` | Invalid field value. | Full error envelope: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## Reference * [v1 domain settings — domain update (`PATCH /v1/domains/{domain}`)](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-domain-settings) ## Next # How to manage renewals (https://developer.godaddy.com/en/docs/api-users/domains/manage/renewals) *** title: How to manage renewals description: Toggle auto-renew and manually renew a domain before expiration. keywords: renewAuto field, POST renew, renewal period, orderId, grace period, Redemption period, PATCH renewAuto, domain expiry, currency-micro-unit agentNotes: permissions: \["Domain Owner", "Billing"] scopes: \["domains.domain:read", "domains.domain:update"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: false destructive: false failureRecovery: "renewAuto toggle is idempotent. Manual renew is NOT — charging the account is a real-money side effect. On timeout/network error, GET the domain to verify the new expires timestamp before retrying." related: apis: * title: "Domains v1 — Renew" href: "/docs/references/rest/domains/v1/manage-domain-settings" guides: * title: "Registered domains" href: "/docs/api-users/domains/manage/list" * title: "Update contacts" href: "/docs/api-users/domains/manage/update-contacts" concepts: * title: "Handle errors" href: "/docs/api-users/errors" *** ## Overview Control when and how a domain renews using two mechanisms: auto-renew (a flag that fires before expiration) and manual renewal (a POST call that extends registration immediately and charges the account). Use auto-renew for domains you want to keep without manual intervention; use manual renewal to extend a domain ahead of an upcoming expiration. Renewal management isn't available in v3 yet. This page uses the v1 endpoints (`POST /v1/domains/{domain}/renew` and `PATCH /v1/domains/{domain}`). A domain's renewal state is controlled through two mechanisms: * **Auto-renew** — a flag on the domain that tells the registrar to renew automatically before expiration. Free to toggle. No registry interaction until the renewal actually fires. * **Manual renew** — a `POST /v1/domains/{domain}/renew` call that adds a registration period immediately. Charges the account in production. Both the `renewAuto` flag and the `expires` timestamp live on the `DomainDetail` object. ## Read renewal state Returns the full `DomainDetail` object. The `renewAuto` flag and `expires` timestamp are the two renewal-relevant fields. The following procedure reads the renewal state for a domain. * Run the following command: ```bash curl -s "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Accept: application/json" ``` ```json { "domain": "example.com", "status": "ACTIVE", "renewAuto": true, "expires": "2026-03-15T00:00:00.000Z" } ``` ## Toggle auto-renew Auto-renew is toggled through `PATCH /v1/domains/{domain}`. The following procedure toggles auto-renew on a domain. **Enable auto-renew:** * Run the following command for your preferred language: ```bash tab="curl" curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"renewAuto": true}' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains/example.com", { method: "PATCH", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ renewAuto: true }), }); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests res = requests.patch( "https://api.godaddy.com/v1/domains/example.com", json={"renewAuto": True}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "bytes" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`{"renewAuto": true}`)) req, _ := http.NewRequest("PATCH", "https://api.godaddy.com/v1/domains/example.com", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` **Disable auto-renew:** * Run the following command: ```bash curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"renewAuto": false}' ``` Both return `204 No Content`. The operation is free and idempotent — setting the flag to its current value is a no-op. Auto-renew is enabled by default at registration time. If you are managing domains on behalf of customers, consider whether you want the domain to auto-renew without explicit confirmation. ## Manually renew a domain `POST /v1/domains/{domain}/renew` appends a registration period to the current expiration date. The following procedure manually renews a domain. * Run the following command for your preferred language: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v1/domains/example.com/renew" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"period": 1}' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const res = await fetch("https://api.godaddy.com/v1/domains/example.com/renew", { method: "POST", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify({ period: 1 }), }); if (!res.ok) throw new Error(`Renewal failed: ${res.status}`); const order = await res.json(); console.log("Order:", order.orderId, "Total:", order.total / 1_000_000, order.currency); ``` ```python tab="Python" import os, requests res = requests.post( "https://api.godaddy.com/v1/domains/example.com/renew", json={"period": 1}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) res.raise_for_status() order = res.json() print("Order:", order["orderId"], "Total:", order["total"] / 1_000_000, order["currency"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`{"period": 1}`)) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v1/domains/example.com/renew", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var order struct { OrderID int `json:"orderId"` Total int `json:"total"` Currency string `json:"currency"` } json.NewDecoder(res.Body).Decode(&order) fmt.Printf("Order: %d Total: %.2f %s\n", order.OrderID, float64(order.Total)/1_000_000, order.Currency) } ``` Response: ```json { "orderId": 8675309, "itemCount": 1, "total": 11990000, "currency": "USD" } ``` `total` is in `currency-micro-unit` format — divide by 1,000,000 to get the value in `currency`. ### Request body | Field | Required | Description | | -------- | -------- | ------------------------------------------------------------------------------- | | `period` | No | Years to add (1–10). Defaults to the period specified at original registration. | `POST /v1/domains/{domain}/renew` charges the account's billing method. Verify the domain name, period, and price before sending. To check the renewal price first, call the v2 domain detail endpoint: ```bash curl -s "https://api.godaddy.com/v2/customers/{customerId}/domains/example.com" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" ``` The response includes a `renewal` object with the current price: ```json { "renewal": { "currency": "USD", "price": 11990000, "renewable": true } } ``` `price` is in `currency-micro-unit` format — divide by 1,000,000 for the currency value (for example, `11990000` = `$11.99`). ### Response: DomainPurchaseResponse | Field | Description | | ----------- | --------------------------------------------------------------------------------------- | | `orderId` | Unique identifier of the order. | | `itemCount` | Number of items in the order (typically 1). | | `total` | Total cost in `currency-micro-unit` format. Divide by 1,000,000 for the currency value. | | `currency` | ISO 4217 currency code (e.g. `USD`). | ## Expiration and grace periods After a domain expires, GoDaddy provides a recovery window before the domain is permanently released. Standard renewal pricing applies for approximately 12 days post-expiration. After that, the domain leaves your account and additional fees apply to recover it. ccTLDs and some other TLDs follow different expiration timelines. Check the full timeline before relying on these windows in your logic. Go to [Standard domain expiration timeline](https://www.godaddy.com/help/standard-domain-expiration-timeline-609) for the complete day-by-day expiration timeline. ## Common errors | Status | Most likely cause | | ------ | ---------------------------------------------------------------------------------------- | | `400` | Malformed request body or invalid `period` value. | | `403` | Credential lacks write access to this domain. | | `404` | Domain doesn't exist or isn't owned by the authenticated account. | | `409` | Domain status prevents renewal (e.g. domain is in a transfer in progress). | | `422` | Period exceeds the TLD maximum or would push total registration past the registry limit. | Full error envelope: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## Reference * [v1 domain settings — `PATCH /v1/domains/{domain}` (auto-renew toggle)](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-domain-settings) * [v1 registration and renewals — `POST /v1/domains/{domain}/renew`](https://developer.godaddy.com/docs/references/rest/domains/v1/register-and-renew-domains) ## Next # How to update contacts (https://developer.godaddy.com/en/docs/api-users/domains/manage/update-contacts) *** title: How to update contacts description: Change the registrant, admin, billing, or tech contact on a domain you own via PATCH /v1/domains//contacts. keywords: WHOIS contact update, E.164 phone format, nameFirst nameLast, DomainContacts, changeOfRegistrant, ICANN approval, registrant email change, contact object agentNotes: permissions: \["Domain Owner"] scopes: \["domains.domain:update"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "Idempotent on identical bodies. On 409 (registrant change on locked ccTLD), unlock, retry, and relock. If the ICANN approval flow was triggered (privacy off and a registrant identity field changed), the update is pending old-registrant approval — use DELETE /v2/customers//domains//changeOfRegistrant to cancel. Verify state via GET before retrying an unclear failure." related: apis: * title: "Domains v1 — Update contacts" href: "/docs/references/rest/domains/v1/manage-domain-settings" guides: * title: "Lock a domain" href: "/docs/api-users/domains/manage/lock" * title: "Registered domains" href: "/docs/api-users/domains/manage/list" concepts: * title: "Handle errors" href: "/docs/api-users/errors" * title: "Authentication" href: "/docs/api-users/auth" * title: "Domain management concepts" href: "/docs/api-users/domains/concepts" *** ## Overview Update the registrant, admin, billing, or tech contact on a domain you own using `PATCH /v1/domains/{domain}/contacts`. Each contact role can be updated independently — include only the roles you want to change in the request body. The registrant contact is the legal owner of the domain and is required; the other three roles default to the registrant if omitted. ## Prerequisites The following prerequisites are required before you update domain contacts: * A GoDaddy account that owns the domain * A [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth) with `domains.domain:update` scope * Registrant name, email, phone (E.164 format), and mailing address ## Update the registrant contact Send a `PATCH` with only `contactRegistrant` in the body. Admin, billing, and tech contacts are untouched when omitted. Returns `204 No Content`. The following procedure updates the registrant contact for a domain. A subset of ccTLDs require registry lock to be disabled before the registry accepts a registrant update. If you receive a `409`, check whether the domain is locked and disable it before retrying. Re-enable lock after the update completes. See [Registry lock](https://developer.godaddy.com/docs/api-users/domains/manage/lock). * Run the following command for your preferred language: ```bash tab="curl" curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com/contacts" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "contactRegistrant": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US" } } }' ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const body = { contactRegistrant: { nameFirst: "Jane", nameLast: "Smith", email: "jane@example.com", phone: "+1.5555550100", addressMailing: { address1: "123 Main St", city: "Tempe", state: "AZ", postalCode: "85281", country: "US", }, }, }; const res = await fetch("https://api.godaddy.com/v1/domains/example.com/contacts", { method: "PATCH", headers: { Authorization: `Bearer ${pat}`, "Content-Type": "application/json", }, body: JSON.stringify(body), }); console.log(res.status); // expect 204 ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] body = { "contactRegistrant": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US", }, } } res = requests.patch( "https://api.godaddy.com/v1/domains/example.com/contacts", json=body, headers={ "Authorization": f"Bearer {pat}", "Content-Type": "application/json", }, ) print(res.status_code) # expect 204 ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") body := map[string]any{ "contactRegistrant": map[string]any{ "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": map[string]any{ "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US", }, }, } b, _ := json.Marshal(body) req, _ := http.NewRequest("PATCH", "https://api.godaddy.com/v1/domains/example.com/contacts", bytes.NewReader(b)) req.Header.Set("Authorization", "Bearer "+pat) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() fmt.Println(res.StatusCode) // expect 204 } ``` Returns `204 No Content` on success. ## ICANN registrant contact change approval Changing identifying registrant fields while WHOIS privacy is disabled triggers the ICANN Contact Change Approval flow. Go to [ICANN registrant contact change approval](https://developer.godaddy.com/docs/api-users/domains/concepts#icann-registrant-contact-change-approval) for details on when this applies. ### Check a pending change Use the v2 GET endpoint to confirm whether an approval is pending before taking action. The following procedure checks whether a pending ICANN contact change approval is in progress. * Run the following command: ```bash curl -s "https://api.godaddy.com/v2/customers/{customerId}/domains/{domain}/changeOfRegistrant" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ### Cancel a pending change Canceling the request reverts the registrant contact to its previous values. The following procedure cancels a pending ICANN contact change approval. * Run the following command: ```bash curl -s -X DELETE \ "https://api.godaddy.com/v2/customers/{customerId}/domains/{domain}/changeOfRegistrant" \ -H "Authorization: Bearer $GODADDY_PAT" ``` Returns `204 No Content` on success. ## Update all four roles at once Include all four roles in one call. Each uses the same `Contact` shape. The following procedure updates all four contact roles in a single request. * Run the following command: ```bash curl -s -X PATCH "https://api.godaddy.com/v1/domains/example.com/contacts" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "contactRegistrant": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US" } }, "contactAdmin": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US" } }, "contactBilling": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US" } }, "contactTech": { "nameFirst": "Jane", "nameLast": "Smith", "email": "jane@example.com", "phone": "+1.5555550100", "addressMailing": { "address1": "123 Main St", "city": "Tempe", "state": "AZ", "postalCode": "85281", "country": "US" } } }' ``` ## Contact object | Field | Required | Description | | ---------------- | -------- | --------------------------------------- | | `nameFirst` | Yes | First name. | | `nameLast` | Yes | Last name. | | `email` | Yes | Email address. | | `phone` | Yes | Phone in E.164 format: `+1.5555550100`. | | `addressMailing` | Yes | Mailing address object — see below. | | `nameMiddle` | No | Middle name. | | `organization` | No | Organization name. | | `jobTitle` | No | Job title. | | `fax` | No | Fax number in E.164 format. | ### Mailing address | Field | Required | Description | | ------------ | -------- | ------------------------------------------------------------------- | | `address1` | Yes | Street address line 1. | | `address2` | No | Street address line 2. | | `city` | Yes | City. | | `state` | Yes | State or province code (for countries that use it). | | `postalCode` | Yes | Postal code. | | `country` | Yes | Two-letter ISO 3166-1 alpha-2 country code (e.g. `US`, `GB`, `DE`). | ## Request body summary `PATCH /v1/domains/{domain}/contacts` accepts a `DomainContacts` object. | Role | Required | Description | | ------------------- | -------- | ------------------------------------------------ | | `contactRegistrant` | Yes | The legal owner of the domain. | | `contactAdmin` | No | Administrative contact. Not modified if omitted. | | `contactBilling` | No | Billing contact. Not modified if omitted. | | `contactTech` | No | Technical contact. Not modified if omitted. | ## Common errors | Status | Most likely cause | | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `400` | Malformed request body or invalid contact field (bad email format, invalid country code). Inspect `fields[]` in the error response. | | `403` | Credential lacks write access to this domain. | | `404` | Domain doesn't exist or isn't owned by the authenticated account. | | `409` | Domain is locked and the TLD requires unlock for registrant changes. | | `422` | TLD-specific validation failure (e.g. missing organization for certain country-code TLDs). | Full error envelope: [Errors](https://developer.godaddy.com/docs/api-users/errors). ## Reference * [v1 domain settings — `PATCH /v1/domains/{domain}/contacts`](https://developer.godaddy.com/docs/references/rest/domains/v1/manage-domain-settings) ## Next # How to register a domain (https://developer.godaddy.com/en/docs/api-users/domains/register) *** title: How to register a domain description: Register a domain using the GoDaddy Domains API. keywords: buy domain, purchase domain, POST /v3/domains/registrations, Idempotency-Key, consent object, agreedAt, agreementTypes, QUOTE\_MISMATCH, ICANN consent agentNotes: permissions: \["Domain Registration"] scopes: \["domains.domain:read", "domains.domain:create"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: false destructive: false failureRecovery: "Registration charges the account and is not reversible. Use the Idempotency-Key header to prevent duplicate purchases. If the operation status is EXECUTING, poll — do not resubmit." related: apis: * title: "v3 Registrations" href: "/docs/references/rest/domains/v3/registrations" * title: "v3 Registration Quotes" href: "/docs/references/rest/domains/v3/registration-quotes" guides: * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" concepts: * title: "Authentication" href: "/docs/api-users/auth" * title: "Error handling" href: "/docs/api-users/errors" *** ## Overview This guide covers registering a domain programmatically using the GoDaddy Domains API. Registration charges the account's billing method and isn't reversible. Make sure you have a [payment method on file](https://developer.godaddy.com/docs/api-users/payment-profile) before registering. ICANN requires that registrant contact information be accurate. Providing false contact information can result in domain suspension. Use WHOIS privacy after registration if you want to protect your contact details. Don't enter fake data. ## Prerequisites * a GoDaddy account with a payment method on file Go to [Create account](https://sso.godaddy.com/account/create/) to create a GoDaddy account and add or update payment methods. * a [PAT](https://developer.godaddy.com/docs/api-users/auth) with `domains.domain:create` scope * a registrant contact with name, email, phone, and mailing address * a confirmed available domain * *(optional)* the [GoDaddy CLI](https://developer.godaddy.com/docs/api-users/cli/set-up) installed and configured ## Register a domain v3 separates pricing from execution. You get a price quote first, locking a `quoteToken`, then execute the registration with that token. This ensures the price you agreed to is the price charged. Always poll at least once even if the initial response appears synchronous. v3 does not accept inline payment or registrant contact overrides. The billing method and registrant contact are resolved from the account profile. If the account is missing a payment method or required contact fields, the quote returns `422` with field-level details. ### Check availability Confirm the domain is available before quoting. * Run the availability check: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=example.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const res = await fetch( "https://api.godaddy.com/v3/domains/check-availability?domain=example.com", { headers: { Authorization: `Bearer ${process.env.GODADDY_PAT}` } } ); const { available } = await res.json(); if (!available) throw new Error("Domain not available"); ``` ```python tab="Python" import os, requests res = requests.get( "https://api.godaddy.com/v3/domains/check-availability", params={"domain": "example.com"}, headers={"Authorization": f"Bearer {os.environ['GODADDY_PAT']}"}, ) data = res.json() assert data["available"], "Domain not available" ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { req, _ := http.NewRequest("GET", "https://api.godaddy.com/v3/domains/check-availability?domain=example.com", nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var data struct{ Available bool `json:"available"` } json.NewDecoder(res.Body).Decode(&data) if !data.Available { panic("not available") } fmt.Println("available") } ``` ```bash tab="CLI" gddy domain available example.com ``` Go to [Search availability](https://developer.godaddy.com/docs/api-users/domains/search) for bulk checks and suggestions. ### Get a registration quote `POST /v3/domains/registration-quotes` locks the price and returns the `requiredAgreements` list you need for the next step. The `quoteToken` guarantees the price you see is the price charged at registration. * Get a quote: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/registration-quotes" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{"domain": "example.com", "period": 1}' ``` ```js tab="Node" const res = await fetch("https://api.godaddy.com/v3/domains/registration-quotes", { method: "POST", headers: { Authorization: `Bearer ${process.env.GODADDY_PAT}`, "Content-Type": "application/json", }, body: JSON.stringify({ domain: "example.com", period: 1 }), }); const { quoteToken, expiresAt, requiredAgreements } = await res.json(); console.log("Quote locked until", expiresAt); ``` ```python tab="Python" import os, requests res = requests.post( "https://api.godaddy.com/v3/domains/registration-quotes", json={"domain": "example.com", "period": 1}, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", }, ) res.raise_for_status() quote = res.json() required_agreements = quote["requiredAgreements"] print("Quote locked until", quote["expiresAt"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { body := bytes.NewReader([]byte(`{"domain": "example.com", "period": 1}`)) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v3/domains/registration-quotes", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var quote struct { QuoteToken string `json:"quoteToken"` ExpiresAt string `json:"expiresAt"` RequiredAgreements []struct { AgreementType string `json:"agreementType"` Title string `json:"title"` URL string `json:"url"` } `json:"requiredAgreements"` } json.NewDecoder(res.Body).Decode("e) fmt.Println("Quote locked until", quote.ExpiresAt) } ``` ```bash tab="CLI" gddy domain quote example.com ``` ```json { "quoteToken": "qt_abc123...", "expiresAt": "2026-01-15T10:45:00.000Z", "requiredAgreements": [ { "agreementType": "API_DPA", "title": "API Domain Purchase Agreement", "url": "https://www.godaddy.com/agreements/showdoc?pageid=reg_sa" } ], "items": [ { "domain": "example.com", "period": 1, "price": { "currencyCode": "USD", "value": 1199 } } ] } ``` `price.value` is in minor currency units — cents for USD, so `1199` = $11.99. Divide by 100 for display. The `quoteToken` expires after a short window. If it expires before you execute, fetch a new quote. Some domains — such as aftermarket premium names — carry a one-time purchase fee in addition to the registration price. When the quote response includes a `fees` array on any item, you must pass `acknowledgedFees` in the `consent` object when you execute. The entries must match the quote's `fees` verbatim (same `type`, amount, and currency). A mismatch returns `422 QUOTE_MISMATCH`. When `fees` is non-empty, include `acknowledgedFees` in `consent`: ```json { "consent": { "agreedAt": "2026-01-15T10:30:00.000Z", "agreementTypes": ["API_DPA"], "acknowledgedFees": [ { "type": "ONE_TIME_PREMIUM_DOMAIN_PURCHASE", "fee": { "currencyCode": "USD", "value": 390000 } } ] } } ``` ### Review the required agreements The quote response includes a `requiredAgreements` list (the legal agreements you need to review before you submit the registration). Each item has a `title` for display and a `url` linking to the full legal text. The GoDaddy CLI handles agreement acceptance through the `--agree` flag on `gddy domain purchase`. Skip to [Submit the registration](#submit-the-registration) and pass `--agree` to confirm consent. 1. Display each agreement to the user: ```js tab="Node" for (const agreement of requiredAgreements) { console.log(`Review: ${agreement.title}`); console.log(`Full text: ${agreement.url}`); } ``` ```python tab="Python" for agreement in required_agreements: print(f"Review: {agreement['title']}") print(f"Full text: {agreement['url']}") ``` ```go tab="Go" for _, agreement := range quote.RequiredAgreements { fmt.Println("Review:", agreement.Title) fmt.Println("Full text:", agreement.URL) } ``` 2. After the user confirms, capture the agreement types and consent timestamp: ```js tab="Node" const agreedAt = new Date().toISOString(); const agreedTypes = requiredAgreements.map((a) => a.agreementType); ``` ```python tab="Python" from datetime import datetime, timezone agreed_at = datetime.now(timezone.utc).isoformat() agreed_types = [a["agreementType"] for a in required_agreements] ``` ```go tab="Go" agreedAt := time.Now().UTC().Format(time.RFC3339) agreedTypes := make([]string, len(quote.RequiredAgreements)) for i, a := range quote.RequiredAgreements { agreedTypes[i] = a.AgreementType } ``` Use the actual timestamp of when the user clicked accept for `agreedAt` — not the time of the API call. Synthetic timestamps violate ICANN policy. Required agreements depend on the TLD. `.ca` domains require a CIRA agreement, `.au` domains require an AURA agreement. Always use the `agreementType` values from `requiredAgreements` — don't hardcode them. ### Submit the registration Send the `quoteToken` and consent to execute the registration. Always include an `Idempotency-Key` header — if the request times out or returns `5xx`, replay with the same key and the server deduplicates. `POST /v3/domains/registrations` charges the account's billing method. Verify the domain name and the quoted price before executing. * Submit the registration request: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/registrations" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "quoteToken": "qt_abc123...", "domain": "example.com", "period": 1, "consent": { "agreedAt": "2026-01-15T10:30:00.000Z", "agreementTypes": ["API_DPA"] } }' ``` ```js tab="Node" import { randomUUID } from "node:crypto"; const res = await fetch("https://api.godaddy.com/v3/domains/registrations", { method: "POST", headers: { Authorization: `Bearer ${process.env.GODADDY_PAT}`, "Content-Type": "application/json", "Idempotency-Key": randomUUID(), }, body: JSON.stringify({ quoteToken: "qt_abc123...", domain: "example.com", period: 1, consent: { agreedAt, // timestamp captured in step 3 agreementTypes: agreedTypes, // types from requiredAgreements in step 3 }, }), }); if (!res.ok) throw new Error(`Registration failed: ${res.status}`); const { registrationId, domain } = await res.json(); console.log("Registered:", domain, "registrationId:", registrationId); ``` ```python tab="Python" import os, uuid, requests res = requests.post( "https://api.godaddy.com/v3/domains/registrations", json={ "quoteToken": "qt_abc123...", "domain": "example.com", "period": 1, "consent": { "agreedAt": agreed_at, # timestamp captured in step 3 "agreementTypes": agreed_types, # types from requiredAgreements in step 3 }, }, headers={ "Authorization": f"Bearer {os.environ['GODADDY_PAT']}", "Content-Type": "application/json", "Idempotency-Key": str(uuid.uuid4()), }, ) res.raise_for_status() data = res.json() print("Registered:", data["domain"], "registrationId:", data["registrationId"]) ``` ```go tab="Go" package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" "time" "github.com/google/uuid" ) func main() { body := map[string]any{ "quoteToken": "qt_abc123...", "domain": "example.com", "period": 1, "consent": map[string]any{ "agreedAt": agreedAt, // timestamp captured in step 3 "agreementTypes": agreedTypes, // types from requiredAgreements in step 3 }, } b, _ := json.Marshal(body) req, _ := http.NewRequest("POST", "https://api.godaddy.com/v3/domains/registrations", bytes.NewReader(b)) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) req.Header.Set("Content-Type", "application/json") req.Header.Set("Idempotency-Key", uuid.NewString()) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() if res.StatusCode != 202 { panic(fmt.Sprint("registration failed: ", res.StatusCode)) } var reg struct { RegistrationID string `json:"registrationId"` Domain string `json:"domain"` } json.NewDecoder(res.Body).Decode(®) fmt.Println("Registered:", reg.Domain, "registrationId:", reg.RegistrationID) } ``` ```bash tab="CLI" # Run without --agree first to review required agreements, then add --agree to confirm. # --confirm skips the interactive prompt. gddy domain purchase example.com --agree --confirm ``` Use the actual consent timestamp for `agreedAt`; synthetic values violate ICANN policy. Use the `agreementTypes` keys from `requiredAgreements` in the quote response; the registration returns `INVALID_AGREEMENT_KEYS` if they don't match. The `period` must match the quoted period, or you get `QUOTE_MISMATCH`. If you supplied a `profile` or `profileId` at quote time, re-supply the same value on execute or you get `QUOTE_MISMATCH`. The `Idempotency-Key` must be a unique UUID per attempt; retrying with the same key is safe after a timeout. ### Poll the operation The registration is asynchronous. Poll the returned `registrationId` URL every few seconds until the status reaches a terminal state. The GoDaddy CLI polls automatically after `gddy domain purchase` and exits when the operation reaches a terminal state. No manual polling required. * Poll for the registration status: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/registrations/{registrationId}" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" async function pollRegistration(registrationId, intervalMs = 3000) { while (true) { const res = await fetch( `https://api.godaddy.com/v3/domains/registrations/${registrationId}`, { headers: { Authorization: `Bearer ${process.env.GODADDY_PAT}` } } ); const { status, domain } = await res.json(); if (status === "COMPLETED") return domain; if (status === "FAILED") throw new Error("Registration failed"); await new Promise((r) => setTimeout(r, intervalMs)); } } ``` ```python tab="Python" import os, time, requests def poll_registration(registration_id, interval=3): while True: res = requests.get( f"https://api.godaddy.com/v3/domains/registrations/{registration_id}", headers={"Authorization": f"Bearer {os.environ['GODADDY_PAT']}"}, ) data = res.json() if data["status"] == "COMPLETED": return data["domain"] if data["status"] == "FAILED": raise RuntimeError("Registration failed") time.sleep(interval) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" "time" ) func pollRegistration(registrationID string) { for { req, _ := http.NewRequest("GET", "https://api.godaddy.com/v3/domains/registrations/"+registrationID, nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("GODADDY_PAT")) res, _ := http.DefaultClient.Do(req) var data struct { Status string `json:"status"` } json.NewDecoder(res.Body).Decode(&data) res.Body.Close() switch data.Status { case "COMPLETED": fmt.Println("Registration complete") return case "FAILED": panic("Registration failed") } time.Sleep(3 * time.Second) } } ``` | Status | Meaning | | ----------- | ------------------------------------------------------------- | | `CONFIRMED` | Accepted, processing in progress. Keep polling. | | `EXECUTING` | Actively executing. Keep polling. | | `COMPLETED` | Terminal — succeeded. `domain` and `expiresAt` are populated. | | `FAILED` | Terminal — failed. | You can also poll through `GET /v3/domains/operations/{operationId}`. Both endpoints resolve the same resource. ## Registration body fields The following table lists the fields required for the registration body. | Field | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `quoteToken` | Yes | Token from `POST /v3/domains/registration-quotes`. | | `domain` | Yes | Fully-qualified domain name to register. | | `period` | Yes | Registration period in years (must match the quoted period). | | `consent` | Yes | ICANN consent object capturing the agreement type, consenting party, and timestamp listed in the [Consent object fields](#consent-object-fields) table. | | `Idempotency-Key` header | Yes | UUID generated per request. | ## Consent object fields The following table lists the fields required for the consent object. | Field | Required | Description | Note | | ------------------ | ----------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | `agreementTypes` | Yes | Agreement type keys from the TLD's required agreements (for example, `API_DPA`). | Get these from the `requiredAgreements` field in the quote response. | | `agreedAt` | Yes | Actual ISO 8601 timestamp of when the user consented. | | | `acknowledgedFees` | When fees present | Fee entries from the quote that the user explicitly acknowledged. | Required when the quote's `fees` array is non-empty. Entries must match verbatim; a mismatch returns `422 QUOTE_MISMATCH`. | ## Common errors The following table lists common errors and recommended actions. Go to [Errors](https://developer.godaddy.com/docs/api-users/errors) for the full error envelope. | Status | Most likely cause | Recommended action | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | `400` | Malformed request body or missing required field. | Inspect `fields[]` in the error response. | | `403` | Credential lacks write access, no [payment method on file](https://developer.godaddy.com/docs/api-users/payment-profile), or account billing issue. | Check `code` to distinguish. | | `404` | TLD not supported. | | | `409` | Domain is already registered (by anyone). | | | `422 QUOTE_MISMATCH` | The `period`, `profile`/`profileId`, or `acknowledgedFees` in the execute body don't match the quote. | Re-use the same `period`, `profile`, `profileId`, and `acknowledgedFees` from the quote, or fetch a new quote. | | `422 INVALID_AGREEMENT_KEYS` | Wrong `agreementTypes` value. | Use the keys returned in `requiredAgreements` from the quote response. | | `422 MISSING_CONTACT` | No registrant contact on the account profile. | Add a registrant contact to the account profile. | | `422 MISSING_BILLING_PHONE` | Contact phone is missing or malformed. | Verify `phone.countryCode` and `phone.nationalNumber` are both set. | | `422` | Domain isn't available, missing or invalid consent, or other contact validation failure. | Inspect `fields[]` for specifics. | ## Additional information * [v3 Registrations — `POST /v3/domains/registrations`](https://developer.godaddy.com/docs/references/rest/domains/v3/registrations) * [v3 Registration Quotes — `POST /v3/domains/registration-quotes`](https://developer.godaddy.com/docs/references/rest/domains/v3/registration-quotes) * [v3 Operations — `GET /v3/domains/operations/{operationId}`](https://developer.godaddy.com/docs/references/rest/domains/v3/operations) * [v1 registration and renewals — `POST /v1/domains/purchase`](https://developer.godaddy.com/docs/references/rest/domains/v1/register-and-renew-domains) # How to search domain availability (https://developer.godaddy.com/en/docs/api-users/domains/search) *** title: How to search domain availability description: Check whether a domain is available to register, or get natural-language suggestions for alternatives. Both operations are available through the v3 API. keywords: check domain available, is domain available, domain lookup, find domain name, check-availability endpoint, AVAILABLE UNAVAILABLE, optimizeFor ACCURACY, firstTermPrice agentNotes: permissions: \["Domain Search"] scopes: \["domains.domain:read"] idempotent: true destructive: false failureRecovery: "Safe to retry on any error. Results are cached; use optimizeFor=ACCURACY for live registry checks." related: apis: * title: "Domains v3 — Discovery" href: "/docs/references/rest/domains/v3/discovery" guides: * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" concepts: * title: "Authentication" href: "/docs/api-users/auth" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview Search operations let you check whether a specific domain is available for registration, and discover alternative names based on keywords or natural-language queries. Both operations are read-only, require no payment method, and return indicative pricing alongside results. ## v3 (recommended) v3 offers two discovery operations: a single-domain availability check and a suggestions endpoint that returns available alternatives for a natural-language query. ### Check availability `GET /v3/domains/check-availability?domain={domain}` returns availability and per-term pricing for a single domain. The following procedure checks whether a domain is available to register. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=your-idea.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const url = new URL("https://api.godaddy.com/v3/domains/check-availability"); url.searchParams.set("domain", "your-idea.com"); const res = await fetch(url, { headers: { Authorization: `Bearer ${pat}` }, }); const result = await res.json(); console.log(result.available, result.prices?.[0]?.price); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] res = requests.get( "https://api.godaddy.com/v3/domains/check-availability", params={"domain": "your-idea.com"}, headers={"Authorization": f"Bearer {pat}"}, ) data = res.json() print(data["available"], data["prices"][0]["price"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") req, _ := http.NewRequest("GET", "https://api.godaddy.com/v3/domains/check-availability?domain=your-idea.com", nil) req.Header.Set("Authorization", "Bearer "+pat) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() var result struct { Available bool `json:"available"` Prices []map[string]any `json:"prices"` } json.NewDecoder(res.Body).Decode(&result) fmt.Println(result.Available, result.Prices) } ``` ```bash tab="CLI" gddy domain available your-idea.com # For a live registry check (bypasses cache): gddy domain available your-idea.com --check-type full ``` | Parameter | Required | Description | Note | | ------------- | -------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | | `domain` | Yes | Fully-qualified domain name to check. | IDN values must be in punycode A-label form. | | `optimizeFor` | No | `SPEED` (default, cached) or `ACCURACY` (live registry check, higher latency). | Availability is always re-verified at quote time regardless of this setting. | | `iscCode` | No | ISC discount code for pricing context. | When provided, prices reflect the applicable rates for this ISC. | Response includes availability and indicative per-term pricing: ```json { "domain": "your-idea.com", "available": true, "definitive": false, "inventory": "REGISTRY", "prices": [ { "term": "YEAR", "period": 1, "price": { "currencyCode": "USD", "value": 1199 }, "renewalPrice": { "currencyCode": "USD", "value": 2299 } }, { "term": "YEAR", "period": 2, "price": { "currencyCode": "USD", "value": 3098 }, "renewalPrice": { "currencyCode": "USD", "value": 4598 }, "firstTermPrice": { "currencyCode": "USD", "value": 799 } } ] } ``` `prices[]` contains one entry per available registration term. All price values are in cents. Prices from availability checks are indicative. The authoritative price is locked when you call `POST /v3/domains/registration-quotes`. Go to [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) for the full quote-execute flow. Reference: [`GET /v3/domains/check-availability`](https://developer.godaddy.com/docs/references/rest/domains/v3/discovery) ### Get suggestions `GET /v3/domains/suggestions` returns available domain name suggestions for a natural-language query or keyword set. All results are available without filtering required. The following procedure gets domain name suggestions for a query. * Run the following command for your preferred language: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/suggestions?query=sunrise+bakery&tlds=com,net,shop&pageSize=10" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```js tab="Node" const pat = process.env.GODADDY_PAT; const url = new URL("https://api.godaddy.com/v3/domains/suggestions"); url.searchParams.set("query", "sunrise bakery"); url.searchParams.set("tlds", "com,net,shop"); url.searchParams.set("pageSize", "10"); const res = await fetch(url, { headers: { Authorization: `Bearer ${pat}` }, }); const { items } = await res.json(); items.forEach((item) => console.log(item.domain, item.prices?.[0]?.price)); ``` ```python tab="Python" import os, requests pat = os.environ["GODADDY_PAT"] res = requests.get( "https://api.godaddy.com/v3/domains/suggestions", params={"query": "sunrise bakery", "tlds": "com,net,shop", "pageSize": 10}, headers={"Authorization": f"Bearer {pat}"}, ) for item in res.json()["items"]: print(item["domain"], item["prices"][0]["price"]) ``` ```go tab="Go" package main import ( "encoding/json" "fmt" "net/http" "net/url" "os" ) func main() { pat := os.Getenv("GODADDY_PAT") u, _ := url.Parse("https://api.godaddy.com/v3/domains/suggestions") q := u.Query() q.Set("query", "sunrise bakery") q.Set("tlds", "com,net,shop") q.Set("pageSize", "10") u.RawQuery = q.Encode() req, _ := http.NewRequest("GET", u.String(), nil) req.Header.Set("Authorization", "Bearer "+pat) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() var body struct { Items []struct{ Domain string `json:"domain"` } `json:"items"` } json.NewDecoder(res.Body).Decode(&body) for _, item := range body.Items { fmt.Println(item.Domain) } } ``` ```bash tab="CLI" gddy domain suggest "your idea" --tlds com --tlds app --limit 10 ``` | Parameter | Required | Description | Note | | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | | `query` | No | Natural-language query or keywords. | For example, `sunrise bakery`. | | `tlds` | No | Comma-separated TLDs to include. | For example, `com,net,shop`. | | `pageSize` | No | Number of suggestions to return. | 1–50, default `10`. | | `lengthMin` | No | Minimum second-level domain length. | | | `lengthMax` | No | Maximum second-level domain length. | | | `sources` | No | Comma-separated suggestion strategies: `EXTENSION` (vary TLD), `KEYWORD_SPIN` (rotate keywords), `CC_TLD` (country-code TLDs), `PREMIUM` (include premium-priced names). | | Response is an object with an `items` array. Each entry includes the domain name and indicative per-term pricing: ```json { "items": [ { "domain": "sunrisebakery.com", "inventory": "REGISTRY", "prices": [ { "term": "YEAR", "period": 1, "price": { "currencyCode": "USD", "value": 1199 }, "renewalPrice": { "currencyCode": "USD", "value": 2299 } }, { "term": "YEAR", "period": 2, "price": { "currencyCode": "USD", "value": 3098 }, "renewalPrice": { "currencyCode": "USD", "value": 4598 }, "firstTermPrice": { "currencyCode": "USD", "value": 799 } } ] } ] } ``` `price.value` and `renewalPrice.value` are in cents — divide by 100 for the display price. Reference: [`GET /v3/domains/suggestions`](https://developer.godaddy.com/docs/references/rest/domains/v3/discovery) ## Read the response All price objects use `{currencyCode, value}` where `value` is an integer in cents — divide by 100 for the display price. For example, `{"currencyCode": "USD", "value": 1199}` displays as `$11.99`. Each entry in `prices[]` is a registration term with these fields: | Field | Description | | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `period` | Registration length (1 = one year, 2 = two years, etc.). | | `term` | Unit of the period. Currently always `YEAR`. | | `price` | Total registration price for this term. Always present. | | `renewalPrice` | Renewal price when the domain comes up for renewal. Absent when unavailable or identical to `price`. | | `firstTermPrice` | Discounted price for the first year of a multi-year registration, when a first-year promotion applies. Typically absent when `period` is 1. When present, the first year costs `firstTermPrice`; the remaining years account for the rest of `price`. | | `recommended` | `true` when this term is the best-value option based on active discounts. Use this flag to highlight a suggested term in your UI. | ## Common errors | Status | Most likely cause | | ------ | ----------------------------------------------------------------------------------------- | | `400` | Malformed request — domain missing, not a valid FQDN, or invalid query parameter. | | `401` | Authentication credentials are missing or invalid. | | `403` | Caller is not authorized. Check that your token includes the `domains.domain:read` scope. | | `429` | Rate limit exceeded. Honor the `Retry-After` header before retrying. | | `5xx` | Upstream registry timeout. Safe to retry — availability checks are idempotent. | ## Additional information # How to build an API integration (https://developer.godaddy.com/en/docs/api-users/domains/workflows/api-integration) *** title: How to build an API integration description: End-to-end workflow — set up credentials, make authenticated calls, handle errors, and prepare for production. keywords: export GODADDY\_PAT, generate token, developer setup, first API call, retryAfterSec, 429 handling, production checklist, integration tutorial agentNotes: permissions: \["Any account"] scopes: \["domains.domain:read (minimum for example calls in this guide)"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: true destructive: false failureRecovery: "All calls in this guide are read-only. Safe to retry any failure. On 401, verify the token is exported correctly. On 429, implement exponential backoff with the Retry-After header." related: apis: * title: "Domains v3 reference" href: "/docs/references/rest/domains/v3" guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Authenticate" href: "/docs/api-users/auth" * title: "Handle errors" href: "/docs/api-users/errors" * title: "Rate limits" href: "/docs/api-users/rate-limits" *** ## Overview This workflow takes you from zero to a production-ready API integration. It covers credential setup, your first call, error handling patterns, and the operational considerations for running in production. ## Prerequisites The following prerequisites are required before you build an API integration: * A GoDaddy account (create one at [sso.godaddy.com](https://sso.godaddy.com/account/create/)) * A terminal with `curl`, or Node.js / Python installed ## Generate a Personal Access Token The following procedure generates a Personal Access Token (PAT) for authenticating API calls. 1. Sign in to the [Personal Access Token](https://developer.godaddy.com/personal-access-token) page. 2. Click **+ Generate Token**. 3. Select the scopes your integration needs (at minimum, `domains.domain:read` for read operations). 4. Copy the token immediately (it only displays once). 5. Export the credential: ```bash export GODADDY_PAT="" ``` Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for the full scope reference and environment guidance. ## Make your first authenticated call The following procedure verifies your token works with a simple availability check. A successful response returns JSON with `available`, `prices`, and other fields. If you get a `401`, check that the token is correctly set in the environment variable. * Run the request: ```bash curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=example-test.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` Go to the [quickstart](https://developer.godaddy.com/docs/api-users/quickstart) for a detailed walkthrough of this call. ## Handle errors gracefully The following procedure implements error handling for API responses. Every error response follows the same envelope. Match on `code`, not `message`. Build a switch/match statement for the codes you expect. 1. Examine the error shape: ```json { "code": "STABLE_ERROR_CODE", "message": "Human-readable description", "fields": [] } ``` 2. Implement error handling: ```js const res = await fetch(url, { headers }); if (!res.ok) { const err = await res.json(); switch (err.code) { case "QUOTA_EXCEEDED": await sleep(err.retryAfterSec * 1000); return retry(url, headers); case "UNAUTHORIZED": throw new Error("Token expired or invalid"); default: throw new Error(`API error: ${err.code}`); } } ``` Go to [Handle errors](https://developer.godaddy.com/docs/api-users/errors) for the full status code reference and retry semantics. ## Add rate limit handling When you apply rate limiting use the following strategies to stay under the limit: * Use bulk endpoints where available (e.g., `POST /v1/domains/available` for batch checks) * Cache availability results briefly when `definitive: false` * Use cursor pagination instead of parallel page-walks The following procedure adds rate limit handling to your integration. The API enforces a per-credential, windowed rate limit — go to [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for current values. * Implement retry logic that respects the `retryAfterSec` field: ```js async function callWithRetry(url, headers, attempts = 3) { for (let i = 0; i < attempts; i++) { const res = await fetch(url, { headers }); if (res.status !== 429) return res; const { retryAfterSec } = await res.json(); const jitter = Math.random() * 1000; await new Promise(r => setTimeout(r, retryAfterSec * 1000 + jitter)); } throw new Error("Rate limit retries exhausted"); } ``` Go to [Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) for the full strategy guide. ## Production readiness checklist Before deploying to production, verify: | Concern | Action | | ----------------------- | ------------------------------------------------------------------ | | **Credential security** | PAT stored in a secrets manager, never committed to source control | | **Error handling** | All expected error codes handled with appropriate user feedback | | **Rate limiting** | Exponential backoff with jitter implemented | | **Idempotency** | Write operations use `Idempotency-Key` header where supported | | **Monitoring** | Log `code` field from error responses for alerting | | **Pagination** | List operations use cursor pagination, not parallel fetches | | **Environment** | Production PAT targeting `api.godaddy.com` | # How to register and configure a domain (https://developer.godaddy.com/en/docs/api-users/domains/workflows/domain-lifecycle) *** title: How to register and configure a domain description: End-to-end workflow — search for a domain, register it, configure DNS, and verify the setup. keywords: domain lifecycle, availability check flow, quote execute flow, buy configure domain, Idempotency-Key header, poll registration, configure DNS after registration agentNotes: permissions: \["Domain Registration", "DNS Management"] scopes: \["domains.domain:read", "domains.domain:create", "domains.dns:update"] rateLimit: "Rate-limited per credential per window. Go to /docs/api-users/rate-limits for current values." idempotent: false destructive: false failureRecovery: "Registration charges the account and is not reversible. Use the Idempotency-Key header on POST /v3/domains/registrations to prevent duplicate charges. If a step fails mid-workflow, poll the operation URL before retrying the registration step. DNS writes are safe to retry." related: apis: * title: "v3 Registrations" href: "/docs/references/rest/domains/v3/registrations" * title: "v3 Registration Quotes" href: "/docs/references/rest/domains/v3/registration-quotes" guides: * title: "Quickstart" href: "/docs/api-users/quickstart" * title: "Search domain availability" href: "/docs/api-users/domains/search" * title: "Register a domain" href: "/docs/api-users/domains/register" * title: "Manage DNS records" href: "/docs/api-users/domains/manage/dns" * title: "Set up a payment profile" href: "/docs/api-users/payment-profile" * title: "Authentication" href: "/docs/api-users/auth" * title: "Handle errors" href: "/docs/api-users/errors" * title: "Handle rate limits" href: "/docs/api-users/rate-limits" *** ## Overview This workflow walks through the complete domain lifecycle from search to live configuration. By the end, you'll have a registered domain with DNS records serving traffic. Code examples are available in curl, Node, Python, and Go. ## Prerequisites The following prerequisites are required before you register and configure a domain: * A GoDaddy account with a [payment profile](https://developer.godaddy.com/docs/api-users/payment-profile) configured * A [Personal Access Token](https://developer.godaddy.com/docs/api-users/auth) with `domains.domain:read`, `domains.domain:create`, and `domains.dns:update` scopes, exported as `GODADDY_PAT`; also export `BASE=https://api.godaddy.com` for the multi-language examples * A terminal with `curl`, or Node.js, Python, or Go ## Search for an available domain The following procedure checks whether your desired domain is available for registration. 1. Check availability: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=your-idea.com" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```bash tab="CLI" gddy domain available your-idea.com ``` If `available` is `true`, proceed to quoting. If `false`, use the suggestions endpoint to find alternatives. 2. Get suggestions: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/suggestions?query=your+idea&tlds=com,net,io&pageSize=10" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```bash tab="CLI" gddy domain suggest "your idea" --tlds com --tlds net --tlds io --limit 10 ``` Go to [Search domain availability](https://developer.godaddy.com/docs/api-users/domains/search) for the full parameter reference. ## Get a registration quote The following procedure locks in a price by requesting a quote. The `quoteToken` in the response is valid for 10 minutes. 1. Request a quote: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/registration-quotes" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "domain": "your-idea.com", "period": 1 }' ``` ```bash tab="CLI" gddy domain quote your-idea.com ``` 2. Note the `quoteToken` and `requiredAgreements` from the response — you'll need both for the next step. The GoDaddy CLI stores the token and handles agreement acceptance automatically through `--agree`. ## Execute the registration The following procedure submits the registration using the quote token and ICANN consent. Registration applies charges to your payment profile and is not reversible. Verify the domain name and quoted price before executing. * Submit the registration: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/registrations" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "quoteToken": "", "domain": "your-idea.com", "period": 1, "consent": { "agreedAt": "2026-01-15T10:30:00.000Z", "agreementTypes": ["API_DPA"] } }' ``` ```bash tab="CLI" # Run without --agree first to review required agreements, then add --agree to confirm. gddy domain purchase your-idea.com --agree --confirm ``` Go to [Register a domain](https://developer.godaddy.com/docs/api-users/domains/register) for the full field reference and error handling. ## Poll until complete The following procedure polls the registration status. Registration is asynchronous. Poll the returned operation URL until the status reaches a terminal state. The following table lists the possible statuses: | Status | Meaning | | ----------- | ----------------------------------------------- | | `CONFIRMED` | Accepted, processing. Keep polling. | | `EXECUTING` | In progress. Keep polling. | | `COMPLETED` | Registration succeeded. | | `FAILED` | Registration failed. Check `error` for details. | The GoDaddy CLI polls automatically after `gddy domain purchase` and exits when registration reaches a terminal state. No manual polling required. * Poll the registration: ```bash curl -s "$BASE/v3/domains/registrations/" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ## Add DNS records The following procedure adds DNS records to point the domain at your infrastructure. Run these after registration completes. 1. Add an A record for the apex: ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/zones/your-idea.com/dns-records" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "type": "A", "name": "@", "data": "192.0.2.1", "ttl": 600 }' ``` ```bash tab="CLI" gddy dns add your-idea.com --type A --name @ --data 192.0.2.1 --ttl 600 ``` 2. Add additional records as needed (CNAME for `www`, MX for email, TXT for verification): ```bash tab="curl" curl -s -X POST "https://api.godaddy.com/v3/domains/zones/your-idea.com/dns-records" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -d '{ "type": "CNAME", "name": "www", "data": "your-idea.com", "ttl": 600 }' ``` ```bash tab="CLI" gddy dns add your-idea.com --type CNAME --name www --data your-idea.com --ttl 600 ``` Go to [Manage DNS records](https://developer.godaddy.com/docs/api-users/domains/manage/dns) for the full record type reference. ## Verify DNS propagation The following procedure verifies that your DNS records were created and are propagating. * List your records to confirm they were created: ```bash tab="curl" curl -s "https://api.godaddy.com/v3/domains/zones/your-idea.com/dns-records" \ -H "Authorization: Bearer $GODADDY_PAT" ``` ```bash tab="CLI" gddy dns list your-idea.com ``` DNS changes propagate within minutes for GoDaddy-hosted nameservers. External resolvers may cache the old state for up to the previous TTL value. # Aftermarket (https://developer.godaddy.com/en/docs/references/rest/aftermarket/aftermarket) *** title: Aftermarket description: API for auction-related actions exclusive to whitelisted partners. full: true \_openapi: preload: * ./openapi-specs/specs/external/aftermarket.yaml toc: * depth: 2 title: List GoDaddy Auction listings url: '#list-godaddy-auction-listings' * depth: 2 title: Remove listings from GoDaddy Auction url: '#remove-listings-from-godaddy-auction' * depth: 2 title: Add expiry listings to GoDaddy Auction url: '#add-expiry-listings-to-godaddy-auction' structuredData: headings: * content: List GoDaddy Auction listings id: list-godaddy-auction-listings * content: Remove listings from GoDaddy Auction id: remove-listings-from-godaddy-auction * content: Add expiry listings to GoDaddy Auction id: add-expiry-listings-to-godaddy-auction contents: \[] *** # Agreements (https://developer.godaddy.com/en/docs/references/rest/agreements/agreements) *** title: Agreements description: Endpoints for retrieving legal agreements and terms of service. full: true \_openapi: preload: * ./openapi-specs/specs/external/agreements.yaml toc: * depth: 2 title: Retrieve legal agreements url: '#retrieve-legal-agreements' structuredData: headings: * content: Retrieve legal agreements id: retrieve-legal-agreements contents: \[] *** # Agents (https://developer.godaddy.com/en/docs/references/rest/ans/agents) *** title: Agents description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Search registered agents url: '#search-registered-agents' * depth: 2 title: List registered agents url: '#list-registered-agents' * depth: 2 title: Retrieve agent details url: '#retrieve-agent-details' structuredData: headings: * content: Search registered agents id: search-registered-agents * content: List registered agents id: list-registered-agents * content: Retrieve agent details id: retrieve-agent-details contents: * content: Searches registered agents using request-body criteria and returns ranked results. heading: search-registered-agents * content: Lists registered agents using query parameters and returns a ranked collection response. This operation is the canonical follow-up target for pagination `links[].href` values. heading: list-registered-agents * content: Returns a single registered agent with trust explainability details. Search-only ranking scores are not included. heading: retrieve-agent-details *** # Certificate Management (https://developer.godaddy.com/en/docs/references/rest/ans/certificate-management) *** title: Certificate Management description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Retrieve agent identity certificates url: '#retrieve-agent-identity-certificates' * depth: 2 title: Submit identity certificate CSR url: '#submit-identity-certificate-csr' * depth: 2 title: Retrieve agent server certificates url: '#retrieve-agent-server-certificates' * depth: 2 title: Retrieve pending renewal status url: '#retrieve-pending-renewal-status' * depth: 2 title: Submit server certificate renewal request url: '#submit-server-certificate-renewal-request' * depth: 2 title: Cancel pending renewal url: '#cancel-pending-renewal' * depth: 2 title: Verify ACME challenges for pending server cert renewal url: '#verify-acme-challenges-for-pending-server-cert-renewal' * depth: 2 title: Get CSR status url: '#get-csr-status' structuredData: headings: * content: Retrieve agent identity certificates id: retrieve-agent-identity-certificates * content: Submit identity certificate CSR id: submit-identity-certificate-csr * content: Retrieve agent server certificates id: retrieve-agent-server-certificates * content: Retrieve pending renewal status id: retrieve-pending-renewal-status * content: Submit server certificate renewal request id: submit-server-certificate-renewal-request * content: Cancel pending renewal id: cancel-pending-renewal * content: Verify ACME challenges for pending server cert renewal id: verify-acme-challenges-for-pending-server-cert-renewal * content: Get CSR status id: get-csr-status contents: * content: Retrieves all identity certificates for the specified agent heading: retrieve-agent-identity-certificates * content: > Submits a Certificate Signing Request (CSR) for the agent's identity certificate. The response contains a "csrId", that is going to match the same field from CertificateResponse. heading: submit-identity-certificate-csr * content: Retrieves all TLS server certificates for the specified agent heading: retrieve-agent-server-certificates * content: | Returns current renewal status if one exists. Used for: * Checking if ACME verification is complete * Polling for certificate issuance (CSR path) * Retrieving challenges if client lost the POST response * Getting TLSA record after completion heading: retrieve-pending-renewal-status * content: > Initiates server certificate renewal. Returns ACME challenges; the caller must verify domain control via POST verify-acme. Supports two paths: * CSR path: RA issues a new certificate. * BYOC path: Client provides a certificate; RA validates and stores it. Only one pending renewal is allowed per agent (409 if one already exists). heading: submit-server-certificate-renewal-request * content: | Cancels the pending server certificate renewal for this agent. Use cases: * Client submitted incorrect CSR and wants to retry * Client wants to switch from CSR path to BYOC path (or vice versa) * Client no longer wishes to complete the renewal Side effects: * If renewal type is SERVER\_CSR, marks the associated CSR as REJECTED * Removes pending renewal from database * Client can immediately submit a new renewal request heading: cancel-pending-renewal * content: > Triggers ACME validation for a pending server certificate renewal. Verifies: * DNS-01 challenge (TXT record at \_acme-challenge.) * HTTP-01 challenge (file at /.well-known/acme-challenge/) Response depends on renewal type: * SERVER\_CSR: Returns 202 (asynchronous certificate issuance). * SERVER\_BYOC: Returns 200 (certificate stored; TLSA record ready for DNS update). heading: verify-acme-challenges-for-pending-server-cert-renewal * content: > Retrieves the current status of a Certificate Signing Request (CSR). This endpoint allows clients to check if a CSR has been signed, is still pending, or has been rejected. The failureReason field provides additional context when a CSR is rejected. heading: get-csr-status *** # Events (https://developer.godaddy.com/en/docs/references/rest/ans/events) *** title: Events description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Retrieve ANS agent events url: '#retrieve-ans-agent-events' structuredData: headings: * content: Retrieve ANS agent events id: retrieve-ans-agent-events contents: * content: Returns a paginated, strictly ordered list of ANS events. When providerId is omitted, the API returns events for all providers; when providerId is provided, only events associated with that provider are returned. Pagination is driven by an opaque cursor token returned in each response. heading: retrieve-ans-agent-events *** # Registration (https://developer.godaddy.com/en/docs/references/rest/ans/registration) *** title: Registration description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Register a new agent with the ANS url: '#register-a-new-agent-with-the-ans' * depth: 2 title: Retrieve agent details url: '#retrieve-agent-details' structuredData: headings: * content: Register a new agent with the ANS id: register-a-new-agent-with-the-ans * content: Retrieve agent details id: retrieve-agent-details contents: * content: > Registers a new agent with the Agent Name Service. Supports three registration flows: 1. GoDaddy domains with CSRs (synchronous) - Returns 202 immediately with wait instruction 2. External domains with CSRs (async ACME) or BYOC - Returns 202 with validation requirements. BYOC is permitted for server certificates only; identity certificates are always issued by the RA. The Registration Authority (RA) validates the agent's identity and submitted information, then interacts with the CA to issue certificates or validates provided server certificates. heading: register-a-new-agent-with-the-ans * content: Retrieves detailed information about a registered agent heading: retrieve-agent-details *** # Resolution (https://developer.godaddy.com/en/docs/references/rest/ans/resolution) *** title: Resolution description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Resolve an ANSName to an endpoint url: '#resolve-an-ansname-to-an-endpoint' structuredData: headings: * content: Resolve an ANSName to an endpoint id: resolve-an-ansname-to-an-endpoint contents: * content: > Resolves an ANSName to an actionable endpoint reference. The query includes the ANSName of the target agent and can optionally incorporate capability filters to refine the search. The ANS service queries the Agent Registry, which returns a digitally signed endpoint record if found. heading: resolve-an-ansname-to-an-endpoint *** # Revocation (https://developer.godaddy.com/en/docs/references/rest/ans/revocation) *** title: Revocation description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Revoke an active agent or cancel a pending registration url: '#revoke-an-active-agent-or-cancel-a-pending-registration' structuredData: headings: * content: Revoke an active agent or cancel a pending registration id: revoke-an-active-agent-or-cancel-a-pending-registration contents: * content: > Revokes an active agent or cancels a pending registration. For ACTIVE agents: Revokes the agent due to key compromise, decommissioning, or other security reasons. The certificate is added to the Certificate Revocation List (CRL) and the agent's entry in the registry is flagged. For PENDING registrations (PENDING\_CERTS or PENDING\_DNS status): Cancels the registration attempt after domain validation has been completed. This will cancel any pending certificate issuance jobs and revoke any already-issued certificates. Registrations in PENDING\_VALIDATION status (pre-ACME verification) are not cancellable via this API and will automatically expire if the ACME verification is not completed within the specified timeframe. heading: revoke-an-active-agent-or-cancel-a-pending-registration *** # Search (https://developer.godaddy.com/en/docs/references/rest/ans/search) *** title: Search description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Search the ANSName Registry with flexible criteria url: '#search-the-ansname-registry-with-flexible-criteria' structuredData: headings: * content: Search the ANSName Registry with flexible criteria id: search-the-ansname-registry-with-flexible-criteria contents: * content: > Searches the Agent Name Service registry using flexible criteria such as partial agent names, agent host domains, and version ranges. The search can return multiple matching agents along with their metadata and endpoints. Results are paginated to handle large datasets efficiently. heading: search-the-ansname-registry-with-flexible-criteria *** # Validation (https://developer.godaddy.com/en/docs/references/rest/ans/validation) *** title: Validation description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/ans.yaml toc: * depth: 2 title: Trigger ACME validation url: '#trigger-acme-validation' * depth: 2 title: Verify DNS record configuration url: '#verify-dns-record-configuration' structuredData: headings: * content: Trigger ACME validation id: trigger-acme-validation * content: Verify DNS record configuration id: verify-dns-record-configuration contents: * content: > Initiates validation of domain control. The AHP calls this after placing the ACME challenge token at the specified location (DNS or HTTP). The RA validates domain control, which is required before issuing both server and identity certificates. A single domain validation is used for both certificates. The RA will automatically determine which validation method to use based on the registration configuration and what is discoverable. heading: trigger-acme-validation * content: > Verifies that all required DNS records have been configured correctly. The RA knows which records are required based on the registration and will check for all four required records (HTTPS, TLSA, \_ans, \_ra-badge). This is the final step for external domain registration. heading: verify-dns-record-configuration *** # Auctions (https://developer.godaddy.com/en/docs/references/rest/auctions/auctions) *** title: Auctions description: Endpoints for placing bids on GoDaddy Auction listings. full: true \_openapi: preload: * ./openapi-specs/specs/external/auctions.yaml toc: * depth: 2 title: Place multiple bids url: '#place-multiple-bids' structuredData: headings: * content: Place multiple bids id: place-multiple-bids contents: \[] *** # Instant Purchase (https://developer.godaddy.com/en/docs/references/rest/auctions/instant-purchase) *** title: Instant Purchase description: API for previewing and purchasing closeout auction domains via saved payment profiles. full: true \_openapi: preload: * ./openapi-specs/specs/external/auctions.yaml toc: * depth: 2 title: Retrieve payment profiles eligible for instant purchase for the specified customer. url: '#retrieve-payment-profiles-eligible-for-instant-purchase-for-the-specified-customer' * depth: 2 title: Preview all-in pricing for a list of closeout auction domains before purchase. url: '#preview-all-in-pricing-for-a-list-of-closeout-auction-domains-before-purchase' * depth: 2 title: Purchase one or more closeout auction domains using a specified payment profile. url: '#purchase-one-or-more-closeout-auction-domains-using-a-specified-payment-profile' structuredData: headings: * content: Retrieve payment profiles eligible for instant purchase for the specified customer. id: retrieve-payment-profiles-eligible-for-instant-purchase-for-the-specified-customer * content: Preview all-in pricing for a list of closeout auction domains before purchase. id: preview-all-in-pricing-for-a-list-of-closeout-auction-domains-before-purchase * content: Purchase one or more closeout auction domains using a specified payment profile. id: purchase-one-or-more-closeout-auction-domains-using-a-specified-payment-profile contents: \[] *** # Listings Availability (https://developer.godaddy.com/en/docs/references/rest/auctions/listings-availability) *** title: Listings Availability description: Check whether one or more domains have active aftermarket auction listings on GoDaddy, with optional listing details and domain enrichment signals. full: true \_openapi: preload: * ./openapi-specs/specs/external/auctions.yaml toc: * depth: 2 title: Check whether one or more domains have active aftermarket listings url: '#check-whether-one-or-more-domains-have-active-aftermarket-listings' structuredData: headings: * content: Check whether one or more domains have active aftermarket listings id: check-whether-one-or-more-domains-have-active-aftermarket-listings contents: * content: Accepts a JSON object with a `domains` array of 1–50 FQDNs and returns one result per input domain, in order, with AVAILABLE or UNAVAILABLE status. Optionally attach listing details (`?includes=listingMin` or `?includes=listing`) and/or domain enrichment signals (`?includes=enrichment`) for AVAILABLE domains. heading: check-whether-one-or-more-domains-have-active-aftermarket-listings *** # Catalog GraphQL (https://developer.godaddy.com/en/docs/references/rest/catalog) *** title: Catalog GraphQL description: Query and mutate the commerce catalog subgraph for a store. full: true ---------- Store-scoped catalog GraphQL over HTTP. Use `commerce.product:read` to query and `commerce.product:write` to mutate. See [Commerce API Scopes](https://developer.godaddy.com/docs/references/rest/commerce-scopes). **Endpoint:** `POST /v2/commerce/stores/{storeId}/catalog-subgraph` Send the same store ID in the `{storeId}` path and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header. **Rate limit:** Read `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` on every response. On HTTP `429`, wait for `RateLimit-Reset` or `Retry-After`. See [Handle rate limits](https://developer.godaddy.com/docs/api-users/rate-limits). ## Resource IDs Examples use placeholders such as `ID_VALUE`, `SKU_ID`, and `LOCATION_ID`. Replace them with ids from your store before calling live APIs. 1. **List** — run the matching query with `first` (for example [`locations`](https://developer.godaddy.com/docs/references/rest/catalog/inventory/queries/locations), [`skus`](https://developer.godaddy.com/docs/references/rest/catalog/sku/queries/skus), [`skuGroups`](https://developer.godaddy.com/docs/references/rest/catalog/sku-group/queries/skuGroups)). 2. **Create** — call a create mutation and read `id` from the response (for example [`createSkuGroup`](https://developer.godaddy.com/docs/references/rest/catalog/sku-group/mutations/createSkuGroup)). 3. **Reuse** — pass that id in the next call's `id` argument or input field (`skuId`, `locationId`, `skuGroupIds`, and so on). Nested response fields (`prices`, `values`, `references`) also expose `id` when you need a child resource. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. Copy the sample variables as-is (`1000`) or convert dollars to cents before calling. The GraphQL domain model uses **SKU** / **SKU group** (not a `Product` type). PAT scopes stay `commerce.product:*` for historical naming. Sidebar is grouped by **action/resource**. Expand a resource, then **Query** (`commerce.product:read`, 27 fields) or **Mutation** (`commerce.product:write`, 108 fields). ## Example query query Requires `commerce.product:read`. See [`sku`](https://developer.godaddy.com/docs/references/rest/catalog/sku/queries/sku) for the full schema. ```graphql query GetSku($id: String!) { sku(id: $id) { id name status } } ``` ```bash curl -X POST "https://api.godaddy.com/v2/commerce/stores/{storeId}/catalog-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: {storeId}" \ -d '{ "query": "query GetSku($id: String!) { sku(id: $id) { id name status } }", "variables": { "id": "SKU_ID" } }' ``` ## Example mutation mutation Requires `commerce.product:write`. See [`createSku`](https://developer.godaddy.com/docs/references/rest/catalog/sku/mutations/createSku) for the full schema. ```graphql mutation CreateSku($input: CreateSKUInput!) { createSku(input: $input) { id name status } } ``` *** ## HTTP reference OpenAPI contract for the subgraph POST (headers, auth, response envelope): ## POST /stores/{storeId}/catalog-subgraph Catalog GraphQL endpoint Proxies GraphQL to the catalog subgraph. Use the `query` field for the GraphQL document and optional `variables` / `operationName`. Send the same store ID in the `{storeId}` path and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header. This endpoint is rate-limited per credential per window. Read the RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset response headers; do not assume 60 requests per minute. Exceeding the live limit returns HTTP 429; honor RateLimit-Reset or Retry-After before retrying. ### Path parameters | Name | Type | Required | Description | |------|------|----------|-------------| | `storeId` | unknown | yes | | ### Header parameters | Name | Type | Required | Description | |------|------|----------|-------------| | `x-store-id` | unknown | yes | Required store ID. Send the same value as `{storeId}` in the path. If they differ, the subgraph uses this header. | ### Request body (required) Content-Type: `application/json` ```json { "query": "query GetSku($id: String!) { sku(id: $id) { id name status } }", "variables": { "id": "SKU_ID" } } ``` Schema: - object - `query` (required): string - `variables`: object - `operationName`: string ### Responses **200** — GraphQL response. RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset are present on every response (including 200). Content-Type: `application/json` Schema: - object - `data`: object - `errors`: array - items: **400** — Invalid request Content-Type: `application/json` Schema: - unknown **401** — Unauthorized Content-Type: `application/json` Schema: - unknown **403** — Forbidden Content-Type: `application/json` Schema: - unknown **404** — Store not found Content-Type: `application/json` Schema: - unknown **429** — Rate limit exceeded (RateLimit-Remaining is 0). Wait RateLimit-Reset seconds. Honor Retry-After when the gateway sends it. Content-Type: `application/json` Schema: - unknown **500** — Internal server error Content-Type: `application/json` Schema: - unknown **Security:** requires `PAT`; scopes `commerce.product:read`, `commerce.product:write`. # v1 (https://developer.godaddy.com/en/docs/references/rest/certificates/v1) --- title: v1 description: '' full: true _openapi: preload: - ./openapi-specs/specs/external/certificates.yaml toc: - depth: 2 title: Create a pending order for certificate url: '#create-a-pending-order-for-certificate' - depth: 2 title: Validate a pending order for certificate url: '#validate-a-pending-order-for-certificate' - depth: 2 title: Retrieve certificate details url: '#retrieve-certificate-details' - depth: 2 title: Retrieve all certificate actions url: '#retrieve-all-certificate-actions' - depth: 2 title: Resend an email url: '#resend-an-email' - depth: 2 title: Add alternate email address url: '#add-alternate-email-address' - depth: 2 title: Resend email to email address url: '#resend-email-to-email-address' - depth: 2 title: Retrieve email history url: '#retrieve-email-history' - depth: 2 title: Retrieve system stateful action callback url url: '#retrieve-system-stateful-action-callback-url' - depth: 2 title: Unregister system callback url: '#unregister-system-callback' - depth: 2 title: Register of certificate action callback url: '#register-of-certificate-action-callback' - depth: 2 title: Cancel a pending certificate url: '#cancel-a-pending-certificate' - depth: 2 title: Download certificate url: '#download-certificate' - depth: 2 title: Reissue active certificate url: '#reissue-active-certificate' - depth: 2 title: Renew active certificate url: '#renew-active-certificate' - depth: 2 title: Revoke active certificate url: '#revoke-active-certificate' - depth: 2 title: Get Site seal url: '#get-site-seal' - depth: 2 title: Check Domain Control url: '#check-domain-control' structuredData: headings: - content: Create a pending order for certificate id: create-a-pending-order-for-certificate - content: Validate a pending order for certificate id: validate-a-pending-order-for-certificate - content: Retrieve certificate details id: retrieve-certificate-details - content: Retrieve all certificate actions id: retrieve-all-certificate-actions - content: Resend an email id: resend-an-email - content: Add alternate email address id: add-alternate-email-address - content: Resend email to email address id: resend-email-to-email-address - content: Retrieve email history id: retrieve-email-history - content: Retrieve system stateful action callback url id: retrieve-system-stateful-action-callback-url - content: Unregister system callback id: unregister-system-callback - content: Register of certificate action callback id: register-of-certificate-action-callback - content: Cancel a pending certificate id: cancel-a-pending-certificate - content: Download certificate id: download-certificate - content: Reissue active certificate id: reissue-active-certificate - content: Renew active certificate id: renew-active-certificate - content: Revoke active certificate id: revoke-active-certificate - content: Get Site seal id: get-site-seal - content: Check Domain Control id: check-domain-control contents: - content: "

Creating a certificate order can be a long running asynchronous operation in the PKI workflow. The PKI API supports 2 options for getting the completion stateful actions for this asynchronous operations: 1) by polling operations -- see /v1/certificates//actions 2) via WebHook style callback -- see '/v1/certificates//callback'.

" heading: create-a-pending-order-for-certificate - content: Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificate. heading: retrieve-certificate-details - content: This method is used to retrieve all stateful actions relating to a certificate lifecycle. heading: retrieve-all-certificate-actions - content: This method can be used to resend emails by providing the certificate id and the email id heading: resend-an-email - content: This method adds an alternate email address to a certificate order and re-sends all existing request emails to that address. heading: add-alternate-email-address - content: This method can be used to resend emails by providing the certificate id, the email id, and the recipient email address heading: resend-email-to-email-address - content: This method can be used to retrieve all emails sent for a certificate. heading: retrieve-email-history - content: This method is used to retrieve the registered callback url for a certificate. heading: retrieve-system-stateful-action-callback-url - content: Unregister the callback for a particular certificate. heading: unregister-system-callback - content: This method is used to register/replace url for callbacks for stateful actions relating to a certificate lifecycle. The callback url is a Webhook style pattern and will receive POST http requests with json body defined in the CertificateAction model definition for each certificate action. Only one callback URL is allowed to be registered for each certificateId, so it will replace a previous registration. heading: register-of-certificate-action-callback - content: Use the cancel call to cancel a pending certificate order. heading: cancel-a-pending-certificate - content:

Rekeying is the process by which the private and public key is changed for a certificate. It is a simplified reissue,where only the CSR is changed. Reissuing is the process by which domain names are added or removed from a certificate.Once a request is validated and approved, the certificate will be reissued with the new common name and sans specified. Unlimited reissues are available during the lifetime of the certificate.New names added to a certificate that do not share the base domain of the common name may take additional time to validate. If this API call is made before a previous pending reissue has been validated and issued, the previous reissue request is automatically rejected and replaced with the current request.

heading: reissue-active-certificate - content: Renewal is the process by which the validity of a certificate is extended. Renewal is only available 60 days prior to expiration of the previous certificate and 30 days after the expiration of the previous certificate. The renewal supports modifying a set of the original certificate order information. Once a request is validated and approved, the certificate will be issued with extended validity. Since subject alternative names can be removed during a renewal, we require that you provide the subject alternative names you expect in the renewed certificate. New names added to a certificate that do not share the base domain of the common name may take additional time to validate.

heading: renew-active-certificate - content: Use revoke call to revoke an active certificate, if the certificate has not been issued a 404 response will be returned. heading: revoke-active-certificate - content:

This method is used to obtain the site seal information for an issued certificate. A site seal is a graphic that the certificate purchaser can embed on their web site to show their visitors information about their SSL certificate. If a web site visitor clicks on the site seal image, a pop-up page is displayed that contains detailed information about the SSL certificate. The site seal token is used to link the site seal graphic image to the appropriate certificate details pop-up page display when a user clicks on the site seal. The site seal images are expected to be static images and hosted on the reseller's website, to minimize delays for customer page load times.

heading: get-site-seal - content: Domain control is a means for verifying the domain included in the certificate order. This resource is useful for resellers that control the domains for their customers, and can expedite the verification process. See https://www.godaddy.com/help/verifying-your-domain-ownership-for-ssl-certificate-requests-html-or-dns-7452 heading: check-domain-control --- const = props.components ?? ; // "APIPage" is the old name from v10, this allows both for backward compatibility const Comp = OpenAPIPage ?? APIPage; return ( <> ); } # v2 (https://developer.godaddy.com/en/docs/references/rest/certificates/v2) *** title: v2 description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/certificates.yaml toc: * depth: 2 title: Search for certificate details by entitlement url: '#search-for-certificate-details-by-entitlement' * depth: 2 title: Create a pending order for certificate url: '#create-a-pending-order-for-certificate' * depth: 2 title: Reissue active certificate url: '#reissue-active-certificate' * depth: 2 title: Download certificate by entitlement url: '#download-certificate-by-entitlement' * depth: 2 title: Retrieve customer's certificates url: '#retrieve-customers-certificates' * depth: 2 title: Retrieve individual certificate details url: '#retrieve-individual-certificate-details' * depth: 2 title: Retrieve domain verification status url: '#retrieve-domain-verification-status' * depth: 2 title: Retrieve detailed information for supplied domain url: '#retrieve-detailed-information-for-supplied-domain' * depth: 2 title: Retrieves the external account binding for the specified customer url: '#retrieves-the-external-account-binding-for-the-specified-customer' * depth: 2 title: Get a page of subscriptions by domain url: '#get-a-page-of-subscriptions-by-domain' * depth: 2 title: GET a page of certificates for a specific domain product url: '#get-a-page-of-certificates-for-a-specific-domain-product' structuredData: headings: * content: Search for certificate details by entitlement id: search-for-certificate-details-by-entitlement * content: Create a pending order for certificate id: create-a-pending-order-for-certificate * content: Reissue active certificate id: reissue-active-certificate * content: Download certificate by entitlement id: download-certificate-by-entitlement * content: Retrieve customer's certificates id: retrieve-customers-certificates * content: Retrieve individual certificate details id: retrieve-individual-certificate-details * content: Retrieve domain verification status id: retrieve-domain-verification-status * content: Retrieve detailed information for supplied domain id: retrieve-detailed-information-for-supplied-domain * content: Retrieves the external account binding for the specified customer id: retrieves-the-external-account-binding-for-the-specified-customer * content: Get a page of subscriptions by domain id: get-a-page-of-subscriptions-by-domain * content: GET a page of certificates for a specific domain product id: get-a-page-of-certificates-for-a-specific-domain-product contents: * content: Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificates associated to an entitlement. heading: search-for-certificate-details-by-entitlement * content: "Creating a certificate order for a subscription can be a long running asynchronous operation in the PKI workflow. The PKI API supports 2 options for getting the completion stateful actions for this asynchronous operations: 1) by polling operations -- see /v1/certificates//actions 2) via WebHook style callback \-- see '/v1/certificates//callback'." heading: create-a-pending-order-for-certificate * content: Rekeying is the process by which the private and public key is changed for a certificate. It is a simplified reissue,where only the CSR is changed. Reissue extends validity of the existing certificate by requesting a new certificate with all the same values as existing issued certificate. Once a request is validated and approved, the certificate will be reissued with the same common name and sans specified from existing certificate. Unlimited reissues are available during the lifetime of the certificate.If this API call is made before a previous pending reissue has been validated and issued, the previous reissue request is automatically rejected and replaced with the current request. heading: reissue-active-certificate * content: This method can be used to retrieve a list of certificates for a specified customer. **shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13) heading: retrieve-customers-certificates * content: Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificate. **shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13) heading: retrieve-individual-certificate-details * content: This method can be used to retrieve the domain verification status for a certificate request.**shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)" heading: retrieve-domain-verification-status * content: Retrieve detailed information for supplied domain, including domain verification details and Certificate Authority Authorization (CAA) verification details. **shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13) heading: retrieve-detailed-information-for-supplied-domain * content: Use this endpoint to retrieve a key identifier and Hash-based Message Authentication Code (HMAC) key for Automated Certificate Management Environment (ACME) External Account Binding (EAB). These credentials can be used with an ACME client that supports EAB (ex. CertBot) to automate the issuance request and deployment of DV SSL certificates heading: retrieves-the-external-account-binding-for-the-specified-customer * content: The pagination starts at page 1. Each page contains a page of *subscriptions*, not certificates. This endpoint is meant for paging the subscriptions under the authorized user's account. Each subscription contains a snapshot of certificates contained within the subscription. To fetch further certificates under a subscription, use the /v2/certificates/subscription/ endpoint with the subscription GUID obtained from this call. If any filtering is applied, subscriptions without any certificates will be omitted. heading: get-a-page-of-subscriptions-by-domain *** # Channel (https://developer.godaddy.com/en/docs/references/rest/channels/channel) *** title: Channel description: Read sales channels. full: true \_openapi: preload: * ./openapi-specs/specs/channels/openapi.yaml toc: * depth: 2 title: Get all channels url: '#get-all-channels' structuredData: headings: * content: Get all channels id: get-all-channels contents: * content: >- **Internal API.** Intended for platform-internal callers. Access requires a service principal with the `GLOBAL` resource group, or a customer with `COMMERCE_STORE` access scoped via `registeredStores.storeId`. Calling with only `externalChannelId` (no `storeId`) yields `401` for customer principals. Retrieve all the channels for a specific provider using parameters. At least one of `registeredStores.storeId` or `externalChannelId` must be provided — calling without either yields `400 INVALID_REQUEST` with `developerMessage="Either storeId or externalChannelId is required"`. heading: get-all-channels *** # Countries (https://developer.godaddy.com/en/docs/references/rest/countries/countries) *** title: Countries description: '' full: true \_openapi: preload: * ./openapi-specs/specs/external/countries.yaml toc: * depth: 2 title: Retrieve country information url: '#retrieve-country-information' * depth: 2 title: Retrieve country and state information url: '#retrieve-country-and-state-information' structuredData: headings: * content: Retrieve country information id: retrieve-country-information * content: Retrieve country and state information id: retrieve-country-and-state-information contents: * content: Authorization is not required heading: retrieve-country-information * content: Authorization is not required heading: retrieve-country-and-state-information *** # Customer (https://developer.godaddy.com/en/docs/references/rest/customers/customer) *** title: Customer description: Create, read, and update customer profiles within a store. full: true \_openapi: preload: * ./openapi-specs/specs/customers/openapi.yaml toc: * depth: 2 title: Get customers url: '#get-customers' * depth: 2 title: Create a new customer url: '#create-a-new-customer' * depth: 2 title: Get customer by ID url: '#get-customer-by-id' * depth: 2 title: Update customer url: '#update-customer' structuredData: headings: * content: Get customers id: get-customers * content: Create a new customer id: create-a-new-customer * content: Get customer by ID id: get-customer-by-id * content: Update customer id: update-customer contents: * content: This endpoint can be used to retrieve a list of customers for a specific store. Deleted customers are excluded by default. heading: get-customers * content: This endpoint can be used to create or de-duplicate - using channel data - and merge into existing customer. If the provided channels differ from existing customer data, a new customer will be created. This endpoint will not remove any existing data and is additive in cases where merges occur. heading: create-a-new-customer * content: Retrieve the information of a single customer using the store and customer IDs. heading: get-customer-by-id * content: This endpoint can be used to update the information of a specific customer using the store and customer ID. heading: update-customer *** # Domains REST reference (https://developer.godaddy.com/en/docs/references/rest/domains) *** title: Domains REST reference description: REST reference for the Domains API. v3 quote-execute registration, plus v1/v2 for DNS, contacts, transfers, and forwarding. ---------------------------------------------------------------------------------------------------------------------------------------- The complete OpenAPI specs for this namespace are available as JSON — useful for code generation, SDK tooling, and LLM context: [domains-v3.json](https://developer.godaddy.com/openapi/domains-v3.json) (discovery + registration), [domains-v1.json](https://developer.godaddy.com/openapi/domains-v1.json) (account-scoped), and [domains-v2.json](https://developer.godaddy.com/openapi/domains-v2.json) (async operations). The Domains REST API exposes domain availability search, registration, DNS and contact management, registry lock, WHOIS privacy, forwarding, and inbound and outbound transfers. Operations span three version namespaces: `v3` (quote-execute registration model), `v1` (account-scoped), and `v2` (async operation tracking). For a task-shaped guide written for DIY API users, see [Use the API → Domains](https://developer.godaddy.com/docs/api-users/domains/manage). ## The core objects The Domains namespace is built around a small set of resources. Each operation in the reference reads or writes one of these objects. | Object | Description | | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DomainDetail` (v1) / `DomainDetailV2` (v2) | A registered domain and its registry metadata: name, status, expiration, contacts, nameservers, lock state, and privacy state. | | `DNSRecord` | A single DNS record (`A`, `AAAA`, `CNAME`, `MX`, `TXT`, `SRV`, `NS`, `SOA`, or `CAA`) on a domain that uses GoDaddy's authoritative nameservers. | | `Contact` | A WHOIS contact record covering name, organization, address, email, and phone. The same shape is used for the registrant, admin, billing, and tech roles on a domain. | | `Action` | An asynchronous-operation tracker returned with `202 Accepted` when the API queues a long-running write. Callers poll the action endpoint until the action's `status` reaches a terminal state. | | `DomainAvailableResponse` | The result of an availability check, including the available flag, current price in `currency-micro-unit` format, the registration period in years, and whether the answer is from a live registry call or cache. | | `DomainForwarding` | An HTTP forwarding rule on a domain, configurable as masked or unmasked and as a permanent (`301`) or temporary (`302`) redirect. | | `DomainTransferIn` | The request shape for an inbound transfer, carrying the domain name, authcode, and required contacts. | | `Error` / `ErrorLimit` | The standard error envelope returned on `4xx` and `5xx` responses across the namespace. `ErrorLimit` extends `Error` with `retryAfterSec` for `429` rate-limited responses. | ## Version namespaces ## Conventions used across the namespace | Concern | Where it's documented | | -------------------------------------------------------------- | ------------------------------------------ | | Authentication (PAT for v3; PAT or legacy `sso-key` for v1/v2) | [Authentication](https://developer.godaddy.com/docs/api-users/auth) | | Error envelope and retry semantics | [Errors](https://developer.godaddy.com/docs/api-users/errors) | | Rate limits (60 requests/minute per credential) | [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) | | Cursor-based pagination on v1 list endpoints | [Pagination](https://developer.godaddy.com/docs/api-users/pagination) | ## Related references # Apps (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/apps) *** title: Apps description: Create, read, update, and delete apps. full: true \_openapi: preload: * ./openapi-specs/specs/nodejs-hosting.yaml toc: * depth: 2 title: List apps url: '#list-apps' * depth: 2 title: Create app url: '#create-app' * depth: 2 title: Get app creation status url: '#get-app-creation-status' * depth: 2 title: Get app url: '#get-app' * depth: 2 title: Update app metadata url: '#update-app-metadata' * depth: 2 title: Delete app url: '#delete-app' structuredData: headings: * content: List apps id: list-apps * content: Create app id: create-app * content: Get app creation status id: get-app-creation-status * content: Get app id: get-app * content: Update app metadata id: update-app-metadata * content: Delete app id: delete-app contents: \[] *** # Deployments (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/deployments) *** title: Deployments description: Publish the latest code, list past deployments, and probe runtime status. full: true \_openapi: preload: * ./openapi-specs/specs/nodejs-hosting.yaml toc: * depth: 2 title: List deployments url: '#list-deployments' * depth: 2 title: Publish app (deploy latest code) url: '#publish-app-deploy-latest-code' * depth: 2 title: Get app status url: '#get-app-status' structuredData: headings: * content: List deployments id: list-deployments * content: Publish app (deploy latest code) id: publish-app-deploy-latest-code * content: Get app status id: get-app-status contents: \[] *** # Overview (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting) *** title: Overview description: > Reference for the Node.js Hosting Public API, a REST API for deploying and operating GoDaddy Node.js Hosting applications. Async-first: long-running writes return immediately with a job or deployment record you poll to completion. ----------------------------------------------------------------------------------------------------------- ## Overview The Node.js Hosting API lets you build, deploy, and operate Node.js apps on GoDaddy's hosting platform without touching a dashboard. Each app has two variants — `preview` and `publish` — so you can iterate safely and promote when you're ready. Long-running operations (create app, upload source, publish) return immediately with a job or deployment record. Create app responds with `202 Accepted`. Upload and publish respond with `200 OK`. Poll until each operation reaches a terminal state. Go to [Node.js Hosting concepts](https://developer.godaddy.com/docs/api-users/hosting/concepts) for the full pattern. Every endpoint is authenticated with a **Personal Access Token (PAT)**. Create one at [Personal Access Tokens](https://developer.godaddy.com/personal-access-token), send it as `Authorization: Bearer `, and select only the scopes each operation requires. See [Authentication](https://developer.godaddy.com/docs/api-users/hosting/authentication). ## Endpoint groups ## Typical flow ``` POST /apps → 202, job id GET /apps/jobs/{jobId} → poll until app is ready POST /apps/{appId}/source → 200, upload jobId (multipart/form-data) GET /apps/{appId}/source/status?jobId → poll until upload is processed POST /apps/{appId}/deployments → 200, deployment record GET /apps/{appId}/deployments → list past deployments GET /apps/{appId}/status → runtime status per variant ``` ## Conventions | Convention | Detail | | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Base URL | Gateway-relative: `/v1/hosting/nodejs` (host determined by the GoDaddy API gateway) | | Async writes | Create app returns `202 Accepted` with a job id. Upload and publish return `200 OK` with a job or deployment record. Poll the relevant endpoint until the operation reaches a terminal state. | | Variants | Every app has `preview` and `publish` variants. Filter per endpoint: `/secrets?variant=…`, `/logs?target=…`. `/status` returns both. | | Auth | Personal Access Token (PAT) — `Authorization: Bearer `. See [Authentication](https://developer.godaddy.com/docs/api-users/hosting/authentication). | | Secret values | Never returned by any endpoint. Only names and metadata are readable. | | Rate limits | Enforced by the API gateway. Not currently surfaced in schemas. | # Logs (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/logs) *** title: Logs description: Read application and build logs. full: true \_openapi: preload: * ./openapi-specs/specs/nodejs-hosting.yaml toc: * depth: 2 title: Get application logs url: '#get-application-logs' structuredData: headings: * content: Get application logs id: get-application-logs contents: \[] *** # Secrets (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/secrets) *** title: Secrets description: Manage environment secrets per variant. Values are never returned. full: true \_openapi: preload: * ./openapi-specs/specs/nodejs-hosting.yaml toc: * depth: 2 title: List app secrets (metadata only) url: '#list-app-secrets-metadata-only' * depth: 2 title: Add, update, or delete app secrets url: '#add-update-or-delete-app-secrets' structuredData: headings: * content: List app secrets (metadata only) id: list-app-secrets-metadata-only * content: Add, update, or delete app secrets id: add-update-or-delete-app-secrets contents: \[] *** # Source (https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/source) *** title: Source description: Upload app source as a zip and poll the upload job. full: true \_openapi: preload: * ./openapi-specs/specs/nodejs-hosting.yaml toc: * depth: 2 title: Upload app source (zip) url: '#upload-app-source-zip' * depth: 2 title: Poll zip upload status url: '#poll-zip-upload-status' structuredData: headings: * content: Upload app source (zip) id: upload-app-source-zip * content: Poll zip upload status id: poll-zip-upload-status contents: \[] *** # Orders GraphQL (https://developer.godaddy.com/en/docs/references/rest/orders) *** title: Orders GraphQL description: Query and mutate the commerce order subgraph. full: true ---------- Commerce order GraphQL over HTTP. Use `commerce.order:read` to query; mutations require one of `commerce.order:create`, `:update`, `:cancel`, or `:complete`. See [Commerce API Scopes](https://developer.godaddy.com/docs/references/rest/commerce-scopes). **Endpoint:** `POST /v1/commerce/order-subgraph` Select the store with a required `x-store-id` header — there is no `{storeId}` path segment on this endpoint. Mutations that take an input object also include a required `context.storeId`; `id`-only mutations (e.g. `cancelOrder`) rely on the header alone. Order and line-item IDs are opaque global IDs shaped like `Order_` and `LineItem_` (e.g. `Order_2N8x…`) — not numeric or base64-encoded. Pass the full value verbatim wherever an `id` or `orderId` argument appears. Sidebar is grouped by **action/resource**. Expand a resource, then **Query** (`commerce.order:read`, 6 fields) or **Mutation** (15 fields). ## Example query query Requires `commerce.order:read`. See [`orderById`](https://developer.godaddy.com/docs/references/rest/orders/order/queries/orderById) for the full schema. ```graphql query GetOrder($id: ID!) { orderById(id: $id) { id number statuses { status } } } ``` ```bash curl -X POST "https://api.godaddy.com/v1/commerce/order-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: $STORE_ID" \ -d '{ "query": "query GetOrder($id: ID!) { orderById(id: $id) { id number statuses { status } } }", "variables": { "id": "ORDER_ID" } }' ``` ## Example mutation mutation Requires the scope matching the operation (e.g. `commerce.order:cancel`). See [`addOrder`](https://developer.godaddy.com/docs/references/rest/orders/order/mutations/addOrder) for the full schema. ```graphql mutation CancelOrder($id: ID!, $force: Boolean) { cancelOrder(id: $id, force: $force) { id statuses { status } } } ``` ## Error handling This is a GraphQL endpoint, so **most failures still return HTTP 200**. Resolver and authorization errors are reported inside the `errors` array — inspect `errors[].extensions.code` rather than keying off the HTTP status. Only malformed GraphQL documents fail at the transport layer with HTTP 400. | `extensions.code` | HTTP | When | | --------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------- | | `UNAUTHENTICATED` | 200 | A store-scoped operation was called without a valid `x-store-id` header. | | `INTERNAL_SERVER_ERROR` | 200 | The `x-store-id` header is present but is invalid or not a store you can access (a masked authorization failure). | | `GRAPHQL_VALIDATION_FAILED` | 400 | The query references an unknown field or is otherwise not valid against the schema. | ```json { "data": null, "errors": [ { "message": "Unauthorized", "extensions": { "code": "UNAUTHENTICATED" } } ] } ``` *** ## HTTP reference OpenAPI contract for the subgraph POST (headers, auth, response envelope): ## POST /v1/commerce/order-subgraph Order GraphQL endpoint Proxies GraphQL to the order subgraph. Use the `query` field for the GraphQL document and optional `variables` / `operationName`. ### Header parameters | Name | Type | Required | Description | |------|------|----------|-------------| | `x-store-id` | string | yes | ID of the store the operation targets — send it on every request. Required for all order queries and mutations; omitting it returns HTTP 200 with a GraphQL error whose `extensions.code` is `UNAUTHENTICATED`. (Schema-level metadata requests such as `__typename` and introspection are the only operations that resolve without it.) | ### Request body (required) Content-Type: `application/json` ```json { "query": "query GetOrder($id: ID!) { orderById(id: $id) { id number statuses { status } } }", "variables": { "id": "ORDER_ID" } } ``` Schema: - object - `query` (required): string - `variables`: object - `operationName`: string ### Responses **200** — GraphQL response Content-Type: `application/json` Schema: - object - `data`: object - `errors`: array - items: **400** — Invalid request **401** — Unauthorized **403** — Forbidden **500** — Internal server error **Security:** requires `PAT`; scopes `commerce.order:read`, `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, `commerce.order:complete`, `commerce.order:archive`. # Parking (https://developer.godaddy.com/en/docs/references/rest/parking/parking) *** title: Parking description: Endpoints for retrieving parking metrics and domain performance data. full: true \_openapi: preload: * ./openapi-specs/specs/external/parking.yaml toc: * depth: 2 title: List parking metrics url: '#list-parking-metrics' * depth: 2 title: List domain metrics url: '#list-domain-metrics' structuredData: headings: * content: List parking metrics id: list-parking-metrics * content: List domain metrics id: list-domain-metrics contents: \[] *** # Shoppers (https://developer.godaddy.com/en/docs/references/rest/shoppers/shoppers) *** title: Shoppers description: '' full: true \_openapi: preload: * ./openapi-specs/specs/shoppers.yaml toc: * depth: 2 title: Create a Subaccount owned by the authenticated Reseller url: '#create-a-subaccount-owned-by-the-authenticated-reseller' * depth: 2 title: Get details for the specified Shopper url: '#get-details-for-the-specified-shopper' * depth: 2 title: Update details for the specified Shopper url: '#update-details-for-the-specified-shopper' * depth: 2 title: Request the deletion of a shopper profile url: '#request-the-deletion-of-a-shopper-profile' * depth: 2 title: Get details for the specified Shopper url: '#get-details-for-the-specified-shopper-1' * depth: 2 title: Set subaccount's password url: '#set-subaccounts-password' structuredData: headings: * content: Create a Subaccount owned by the authenticated Reseller id: create-a-subaccount-owned-by-the-authenticated-reseller * content: Get details for the specified Shopper id: get-details-for-the-specified-shopper * content: Update details for the specified Shopper id: update-details-for-the-specified-shopper * content: Request the deletion of a shopper profile id: request-the-deletion-of-a-shopper-profile * content: Get details for the specified Shopper id: get-details-for-the-specified-shopper-1 * content: Set subaccount's password id: set-subaccounts-password contents: * content: Notes:Shopper deletion is not supported in production — contact GoDaddy support for account removal. heading: request-the-deletion-of-a-shopper-profile * content: Notes:Password set is only supported by API Resellers setting subaccount passwords. heading: set-subaccounts-password *** # Store (https://developer.godaddy.com/en/docs/references/rest/stores/store) *** title: Store description: Read stores and store attributes. full: true \_openapi: preload: * ./openapi-specs/specs/stores/openapi.yaml toc: * depth: 2 title: Get store by ID url: '#get-store-by-id' * depth: 2 title: Get store attribute url: '#get-store-attribute' structuredData: headings: * content: Get store by ID id: get-store-by-id * content: Get store attribute id: get-store-attribute contents: * content: Retrieve the information of a store using the Business and Store IDs. heading: get-store-by-id * content: |- Look up a single store attribute by name. Response shape is a single-key map of `{: }` — values are always strings. Allow-listed keys that have not been set return 404 `BUSINESS_ATTRIBUTE_NOT_FOUND`; keys outside the per-store allow-list return 400 `INVALID_REQUEST`. heading: get-store-attribute *** # Tax GraphQL (https://developer.godaddy.com/en/docs/references/rest/taxes) *** title: Tax GraphQL description: Query and mutate taxes and rates on the commerce tax subgraph. full: true ---------- Store-scoped tax GraphQL over HTTP. Use `commerce.tax:read` to query, `commerce.tax:create` / `commerce.tax:write` / `commerce.tax:delete` to mutate (by operation). See [Commerce API Scopes](https://developer.godaddy.com/docs/references/rest/commerce-scopes). **Endpoint:** `POST /v2/commerce/stores/{storeId}/tax-subgraph` Send the same store ID in the `{storeId}` path and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header. A missing header returns HTTP 200 `AUTHENTICATION_ERROR` (`Failed to authorize`), not HTTP 401\. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. Sidebar is grouped by **action/resource**. Expand a resource, then **Query** (`commerce.tax:read`, 8 fields) or **Mutation** (38 fields; scope depends on the verb). The live gateway also exposes `_service`; it is omitted here. ## Example query query Requires `commerce.tax:read`. See [`classification`](https://developer.godaddy.com/docs/references/rest/taxes/classification/queries/classification) for the full schema. ```graphql query GetClassification($id: ID!) { classification(id: $id) { id name label } } ``` ```bash curl -X POST "https://api.godaddy.com/v2/commerce/stores/{storeId}/tax-subgraph" \ -H "Authorization: Bearer $GODADDY_PAT" \ -H "Content-Type: application/json" \ -H "x-store-id: {storeId}" \ -d '{ "query": "query GetClassification($id: ID!) { classification(id: $id) { id name label } }", "variables": { "id": "CLASSIFICATION_ID" } }' ``` ## Example mutation mutation Requires `commerce.tax:create`. See [`createRate`](https://developer.godaddy.com/docs/references/rest/taxes/rate/mutations/createRate) for the full schema. ```graphql mutation CreateRate($input: MutationCreateRateInput!) { createRate(input: $input) { id name status } } ``` ```json { "input": { "label": "Sales tax", "value": { "percentage": "8.5" } } } ``` *** ## HTTP reference OpenAPI contract for the subgraph POST (headers, auth, response envelope): ## POST /stores/{storeId}/tax-subgraph Tax GraphQL endpoint Proxies GraphQL to the tax subgraph. Use the `query` field for the GraphQL document and optional `variables` / `operationName`. Send the same store ID in the `{storeId}` path and the `x-store-id` header. The header is required. If they differ, the subgraph uses the header. A missing header returns HTTP 200 with GraphQL `AUTHENTICATION_ERROR` (`Failed to authorize`). ### Path parameters | Name | Type | Required | Description | |------|------|----------|-------------| | `storeId` | unknown | yes | | ### Header parameters | Name | Type | Required | Description | |------|------|----------|-------------| | `x-store-id` | unknown | yes | Required store ID. Send the same value as `{storeId}` in the path. If they differ, the subgraph uses this header. | ### Request body (required) Content-Type: `application/json` ```json { "query": "query GetClassification($id: ID!) { classification(id: $id) { id } }", "variables": { "id": "CLASSIFICATION_ID" } } ``` Schema: - object - `query` (required): string - `variables`: object - `operationName`: string ### Responses **200** — GraphQL response Content-Type: `application/json` Schema: - object - `data`: object - `errors`: array - items: **400** — Invalid request **401** — Unauthorized **403** — Forbidden **404** — Store not found **500** — Internal server error **Security:** requires `PAT`; scopes `commerce.tax:read`, `commerce.tax:create`, `commerce.tax:write`, `commerce.tax:delete`. # General Endpoints (https://developer.godaddy.com/en/docs/references/rest/transactions/general-endpoints) *** title: General Endpoints description: Store transactions, signatures, and references. full: true \_openapi: preload: * ./openapi-specs/specs/transactions/openapi.yaml toc: * depth: 2 title: Get all transactions url: '#get-all-transactions' * depth: 2 title: Get transaction by ID url: '#get-transaction-by-id' structuredData: headings: * content: Get all transactions id: get-all-transactions * content: Get transaction by ID id: get-transaction-by-id contents: * content: Retrieve all the transactions for a specific store using the store ID. heading: get-all-transactions * content: Retrieve all the information for a single transaction using the store and transaction IDs. heading: get-transaction-by-id *** # v1 (Legacy) (https://developer.godaddy.com/en/docs/references/rest/abuse/v1-legacy) *** title: v1 (Legacy) description: Legacy v1 endpoints, maintained for backward compatibility. full: true \_openapi: preload: * ./openapi-specs/specs/external/abuse.yaml toc: * depth: 2 title: List abuse tickets url: '#list-abuse-tickets' * depth: 2 title: Create a new abuse ticket url: '#create-a-new-abuse-ticket' * depth: 2 title: Retrieve abuse ticket details url: '#retrieve-abuse-ticket-details' structuredData: headings: * content: List abuse tickets id: list-abuse-tickets * content: Create a new abuse ticket id: create-a-new-abuse-ticket * content: Retrieve abuse ticket details id: retrieve-abuse-ticket-details contents: \[] *** # v2 (https://developer.godaddy.com/en/docs/references/rest/abuse/v2) *** title: v2 description: An incremental update that keeps the endpoints largely the same, but deprecates some commonly misused parameters and add some features to ensure reports can be worked quicker. full: true \_openapi: preload: * ./openapi-specs/specs/external/abuse.yaml toc: * depth: 2 title: List abuse tickets url: '#list-abuse-tickets' * depth: 2 title: Create a new abuse ticket url: '#create-a-new-abuse-ticket' * depth: 2 title: Retrieve abuse ticket details url: '#retrieve-abuse-ticket-details' structuredData: headings: * content: List abuse tickets id: list-abuse-tickets * content: Create a new abuse ticket id: create-a-new-abuse-ticket * content: Retrieve abuse ticket details id: retrieve-abuse-ticket-details contents: \[] *** # Find Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v1/find-domains) *** title: Find Domains full: true \_openapi: preload: * ./openapi-specs/specs/domains-v1.yaml toc: * depth: 2 title: Determine whether or not the specified domain is available for purchase url: '#determine-whether-or-not-the-specified-domain-is-available-for-purchase' * depth: 2 title: Determine whether or not the specified domains are available for purchase url: '#determine-whether-or-not-the-specified-domains-are-available-for-purchase' * depth: 2 title: Suggest alternate Domain names based on a seed Domain, a set of keywords, or the shopper's purchase history url: '#suggest-alternate-domain-names-based-on-a-seed-domain-a-set-of-keywords-or-the-shoppers-purchase-history' structuredData: headings: * content: Determine whether or not the specified domain is available for purchase id: determine-whether-or-not-the-specified-domain-is-available-for-purchase * content: Determine whether or not the specified domains are available for purchase id: determine-whether-or-not-the-specified-domains-are-available-for-purchase * content: Suggest alternate Domain names based on a seed Domain, a set of keywords, or the shopper's purchase history id: suggest-alternate-domain-names-based-on-a-seed-domain-a-set-of-keywords-or-the-shoppers-purchase-history contents: * content: Checks whether a single domain is available to register and returns the current price in currency-micro-unit format. The definitive flag indicates whether the result came from a live registry query. heading: determine-whether-or-not-the-specified-domain-is-available-for-purchase * content: Checks availability for multiple domains in a single request. Returns an array of availability and pricing results, one per domain queried. heading: determine-whether-or-not-the-specified-domains-are-available-for-purchase * content: Returns domain name suggestions based on a seed domain, keywords, or purchase history. Useful for presenting alternatives when a desired domain is unavailable. heading: suggest-alternate-domain-names-based-on-a-seed-domain-a-set-of-keywords-or-the-shoppers-purchase-history *** # Domains v1 (https://developer.godaddy.com/en/docs/references/rest/domains/v1) *** title: Domains v1 description: Account-scoped Domains operations under /v1/domains. Search, register, list, DNS, privacy, renewals, and transfer. ------------------------------------------------------------------------------------------------------------------------------- ## Overview The `v1` namespace exposes Domains operations that act on the domains owned by the authenticated account. Caller identity is established by the `Authorization` header alone; some operations also accept an `X-Shopper-Id` header to act on behalf of a specific shopper. The `v1` namespace is account-scoped; use `v2` when you need async operation tracking (action queues, status polling, and notifications). For a task-shaped guide layered on top of these endpoints, see [Use the API → Domains](https://developer.godaddy.com/docs/api-users/domains/manage). The complete OpenAPI spec for the v1 namespace is available at [/openapi/domains-v1.json](https://developer.godaddy.com/openapi/domains-v1.json) — useful for code generation, SDK tooling, and LLM context. ## Operation groups The v1 namespace is organized into five operation groups, each rendered on its own reference page below. ## Authentication and scopes Every v1 operation requires an `Authorization` header carrying a Personal Access Token (Bearer) or a legacy `sso-key` credential. PATs use the granular Domains & DNS scopes listed in [Authentication](https://developer.godaddy.com/docs/api-users/auth), like `domains.domain:read`, `domains.domain:update`, `domains.dns:update`, and `domains.transfer:execute`. ## Conventions | Concern | Where it's documented | | ----------------------------------------------- | ------------------------------------------ | | Error envelope and retry semantics | [Errors](https://developer.godaddy.com/docs/api-users/errors) | | Rate limits (60 requests/minute per credential) | [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) | | Cursor-based pagination on `GET /v1/domains` | [Pagination](https://developer.godaddy.com/docs/api-users/pagination) | # Manage DNS (https://developer.godaddy.com/en/docs/references/rest/domains/v1/manage-dns) *** title: Manage DNS full: true \_openapi: preload: * ./openapi-specs/specs/domains-v1.yaml toc: * depth: 2 title: Add the specified DNS Records to the specified Domain url: '#add-the-specified-dns-records-to-the-specified-domain' * depth: 2 title: Replace all DNS Records for the specified Domain url: '#replace-all-dns-records-for-the-specified-domain' * depth: 2 title: Retrieve DNS Records for the specified Domain, optionally with the specified Type and/or Name url: '#retrieve-dns-records-for-the-specified-domain-optionally-with-the-specified-type-andor-name' * depth: 2 title: Delete all DNS Records for the specified Domain with the specified Type and Name url: '#delete-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name' * depth: 2 title: Replace all DNS Records for the specified Domain with the specified Type and Name url: '#replace-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name' * depth: 2 title: Replace all DNS Records for the specified Domain with the specified Type url: '#replace-all-dns-records-for-the-specified-domain-with-the-specified-type' structuredData: headings: * content: Add the specified DNS Records to the specified Domain id: add-the-specified-dns-records-to-the-specified-domain * content: Replace all DNS Records for the specified Domain id: replace-all-dns-records-for-the-specified-domain * content: Retrieve DNS Records for the specified Domain, optionally with the specified Type and/or Name id: retrieve-dns-records-for-the-specified-domain-optionally-with-the-specified-type-andor-name * content: Delete all DNS Records for the specified Domain with the specified Type and Name id: delete-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name * content: Replace all DNS Records for the specified Domain with the specified Type and Name id: replace-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name * content: Replace all DNS Records for the specified Domain with the specified Type id: replace-all-dns-records-for-the-specified-domain-with-the-specified-type contents: * content: Appends DNS records to the domain's zone without removing existing records. Existing records with the same type and name are preserved. Returns 204 No Content. heading: add-the-specified-dns-records-to-the-specified-domain * content: Replaces the entire DNS record set for the domain. All existing records are removed and replaced with the submitted set. Returns 204 No Content. heading: replace-all-dns-records-for-the-specified-domain * content: Returns DNS records for the domain. Optionally filter by record type and name. Returns an array of DNSRecord objects. heading: retrieve-dns-records-for-the-specified-domain-optionally-with-the-specified-type-andor-name * content: Deletes all DNS records matching the specified type and name. All other records are preserved. Returns 204 No Content. heading: delete-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name * content: Replaces all DNS records of the specified type and name. All other records are preserved. Returns 204 No Content. heading: replace-all-dns-records-for-the-specified-domain-with-the-specified-type-and-name * content: Replaces all DNS records of the specified type across all names. Records of other types are preserved. Returns 204 No Content. heading: replace-all-dns-records-for-the-specified-domain-with-the-specified-type *** # Manage Domain Settings (https://developer.godaddy.com/en/docs/references/rest/domains/v1/manage-domain-settings) *** title: Manage Domain Settings full: true \_openapi: preload: * ./openapi-specs/specs/domains-v1.yaml toc: * depth: 2 title: Retrieve a list of Domains for the specified Shopper url: '#retrieve-a-list-of-domains-for-the-specified-shopper' * depth: 2 title: Validate the request body using the Domain Contact Validation Schema for specified domains. url: '#validate-the-request-body-using-the-domain-contact-validation-schema-for-specified-domains' * depth: 2 title: Retrieve details for the specified Domain url: '#retrieve-details-for-the-specified-domain' * depth: 2 title: Update details for the specified Domain url: '#update-details-for-the-specified-domain' * depth: 2 title: Cancel a purchased domain url: '#cancel-a-purchased-domain' * depth: 2 title: Update domain url: '#update-domain' * depth: 2 title: Re-send Contact E-mail Verification for specified Domain url: '#re-send-contact-e-mail-verification-for-specified-domain' structuredData: headings: * content: Retrieve a list of Domains for the specified Shopper id: retrieve-a-list-of-domains-for-the-specified-shopper * content: Validate the request body using the Domain Contact Validation Schema for specified domains. id: validate-the-request-body-using-the-domain-contact-validation-schema-for-specified-domains * content: Retrieve details for the specified Domain id: retrieve-details-for-the-specified-domain * content: Update details for the specified Domain id: update-details-for-the-specified-domain * content: Cancel a purchased domain id: cancel-a-purchased-domain * content: Update domain id: update-domain * content: Re-send Contact E-mail Verification for specified Domain id: re-send-contact-e-mail-verification-for-specified-domain contents: * content: Returns a paginated list of domains owned by the authenticated account. Supports filtering by status and optional inclusion of contacts, nameservers, and authCode in each record. heading: retrieve-a-list-of-domains-for-the-specified-shopper * content: All contacts specified in request will be validated against all domains specified in "domains". As an alternative, you can also pass in tlds, with the exception of `uk`, which requires full domain names heading: validate-the-request-body-using-the-domain-contact-validation-schema-for-specified-domains * content: Returns the full DomainDetail object including status, contacts, nameservers, lock state, privacy flag, and expiration timestamp. heading: retrieve-details-for-the-specified-domain * content: Updates one or more fields on the domain. Accepts a partial DomainUpdate body - only fields included are modified. Returns 204 No Content. heading: update-details-for-the-specified-domain * content: Cancels a purchased domain and initiates a refund if within the cancellation window. This action is irreversible. heading: cancel-a-purchased-domain * content: Updates domain settings. Only fields included in the request body are modified. Returns 204 No Content. heading: update-domain * content: Re-sends the ICANN registrant email verification to the domain's registrant contact. Use when the original verification email was not received or has expired. heading: re-send-contact-e-mail-verification-for-specified-domain *** # Register and Renew Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v1/register-and-renew-domains) *** title: Register and Renew Domains full: true \_openapi: preload: * ./openapi-specs/specs/domains-v1.yaml toc: * depth: 2 title: Retrieve the legal agreement(s) required to purchase the specified TLD and add-ons url: '#retrieve-the-legal-agreements-required-to-purchase-the-specified-tld-and-add-ons' * depth: 2 title: Purchase and register the specified Domain url: '#purchase-and-register-the-specified-domain' * depth: 2 title: Retrieve the schema to be submitted when registering a Domain for the specified TLD url: '#retrieve-the-schema-to-be-submitted-when-registering-a-domain-for-the-specified-tld' * depth: 2 title: Validate the request body using the Domain Purchase Schema for the specified TLD url: '#validate-the-request-body-using-the-domain-purchase-schema-for-the-specified-tld' * depth: 2 title: Retrieves a list of TLDs supported and enabled for sale url: '#retrieves-a-list-of-tlds-supported-and-enabled-for-sale' * depth: 2 title: Renew the specified Domain url: '#renew-the-specified-domain' structuredData: headings: * content: Retrieve the legal agreement(s) required to purchase the specified TLD and add-ons id: retrieve-the-legal-agreements-required-to-purchase-the-specified-tld-and-add-ons * content: Purchase and register the specified Domain id: purchase-and-register-the-specified-domain * content: Retrieve the schema to be submitted when registering a Domain for the specified TLD id: retrieve-the-schema-to-be-submitted-when-registering-a-domain-for-the-specified-tld * content: Validate the request body using the Domain Purchase Schema for the specified TLD id: validate-the-request-body-using-the-domain-purchase-schema-for-the-specified-tld * content: Retrieves a list of TLDs supported and enabled for sale id: retrieves-a-list-of-tlds-supported-and-enabled-for-sale * content: Renew the specified Domain id: renew-the-specified-domain contents: * content: Returns the TLD-specific legal agreements that must be accepted before purchase or transfer. The agreementKeys from this response are required in the consent object. heading: retrieve-the-legal-agreements-required-to-purchase-the-specified-tld-and-add-ons * content: Registers the specified domain. Requires a consent object with agreement keys from GET /v1/domains/agreements. Charges the account's billing method. heading: purchase-and-register-the-specified-domain * content: Returns the JSON schema for the domain purchase request body for the specified TLD. Fetch before purchasing to identify required fields and TLD-specific constraints. heading: retrieve-the-schema-to-be-submitted-when-registering-a-domain-for-the-specified-tld * content: Validates a purchase request body against the TLD schema with no side effects and no charge. Returns 200 on success. heading: validate-the-request-body-using-the-domain-purchase-schema-for-the-specified-tld * content: Returns all TLDs currently available for registration, including pricing and any eligibility requirements. heading: retrieves-a-list-of-tlds-supported-and-enabled-for-sale * content: Renews the domain for the specified period, extending the expiration date. Charges the account's billing method. heading: renew-the-specified-domain *** # Transfer Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v1/transfer-domains) *** title: Transfer Domains full: true \_openapi: preload: * ./openapi-specs/specs/domains-v1.yaml toc: * depth: 2 title: Purchase and start or restart transfer process url: '#purchase-and-start-or-restart-transfer-process' structuredData: headings: * content: Purchase and start or restart transfer process id: purchase-and-start-or-restart-transfer-process contents: * content: Initiates an inbound domain transfer from another registrar. Requires an authcode and a consent object with agreement keys. Charges a transfer fee. heading: purchase-and-start-or-restart-transfer-process *** # Domain Actions (https://developer.godaddy.com/en/docs/references/rest/domains/v2/domain-actions) *** title: Domain Actions description: Poll the status and cancel asynchronous operations queued by domain write requests. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: \[] structuredData: headings: \[] contents: * content: Returns a paginated list of recent actions for the domain. Use to track long-running operations or audit domain history. * content: Returns the most recent action of the specified type including status, timestamps, and any error details. * content: Cancels the most recent user-initiated action if it is still in a cancellable state. Returns 202 Accepted. *** # Domain Notifications (https://developer.godaddy.com/en/docs/references/rest/domains/v2/domain-notifications) *** title: Domain Notifications description: Manage notification opt-in preferences, retrieve notification schemas, and acknowledge domain lifecycle notifications. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: \[] structuredData: headings: \[] contents: * content: Returns the next unacknowledged domain notification. Returns 200 with a Notification body, or 204 if no notifications are pending. * content: Returns the notification types the account is currently opted in to receive. * content: Opts the account in to receiving the specified notification types. Returns 204 No Content. * content: Returns the JSON schema for a specific notification type's data payload. Use to validate or parse notification data before processing. * content: Acknowledges a domain notification, removing it from the notification queue. Returns 204 No Content. *** # Domains API Usage (https://developer.godaddy.com/en/docs/references/rest/domains/v2/domains-api-usage) *** title: Domains API Usage description: Retrieve monthly API request usage counts for your account. Data is retained for three months. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: \[] structuredData: headings: \[] contents: * content: Returns monthly API request counts for the account. Data is retained for three months. *** # Domains v2 (https://developer.godaddy.com/en/docs/references/rest/domains/v2) *** title: Domains v2 description: Domains v2 — v1 capabilities plus async operation tracking. Action queues, status polling, notifications, forwarding, and registration under /v2/customers//domains. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ## Overview The `v2` namespace extends the Domains API with async operation tracking — action queues, status polling, and lifecycle notifications. Operation paths follow `/v2/customers/{customerId}/domains/...`. Use `v2` when you need to track long-running writes (transfers, redemptions) that return `202 Accepted` instead of completing synchronously. For a task-shaped guide layered on top of these endpoints, see [Use the API → Domains](https://developer.godaddy.com/docs/api-users/domains/manage). The complete OpenAPI spec for the v2 namespace is available at [/openapi/domains-v2.json](https://developer.godaddy.com/openapi/domains-v2.json) — useful for code generation, SDK tooling, and LLM context. ## Operation groups The v2 namespace is organized into seven operation groups, each rendered on its own reference page below. ## Authentication and scopes Every v2 operation requires an `Authorization` header carrying a Personal Access Token (Bearer) or a legacy `sso-key` credential. The principal must additionally be authorized for the customer named in the URL. PATs use the granular Domains & DNS scopes listed in [Authentication](https://developer.godaddy.com/docs/api-users/auth), such as `domains.domain:read`, `domains.domain:update`, and `domains.transfer:execute`. ## v2-only capabilities Some operations have no v1 equivalent and must be reached through `v2`: * **Domain forwarding** (HTTP redirects on a domain). * **Notification subscriptions** (lifecycle events delivered to a callback or pulled on demand). * **Customer-scoped change-of-registrant** (managed across customer boundaries). ## Conventions | Concern | Where it's documented | | ---------------------------------------------------- | -------------------------------------------------------------------- | | Error envelope and retry semantics | [Errors](https://developer.godaddy.com/docs/api-users/errors) | | Rate limits (60 requests/minute per credential) | [Rate limits](https://developer.godaddy.com/docs/api-users/rate-limits) | | Asynchronous-write polling via the `Action` resource | [Actions reference](https://developer.godaddy.com/docs/references/rest/domains/v2/domain-actions) | # Manage Domain Settings (https://developer.godaddy.com/en/docs/references/rest/domains/v2/manage-domain-settings) *** title: Manage Domain Settings description: Retrieve domain details and manage contacts, nameservers, forwarding rules, privacy forwarding, renewals, and redemption. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: * depth: 2 title: Retrieve the forwarding information for the given fqdn url: '#retrieve-the-forwarding-information-for-the-given-fqdn' * depth: 2 title: Create a new forwarding configuration for the given FQDN url: '#create-a-new-forwarding-configuration-for-the-given-fqdn' * depth: 2 title: Submit a forwarding cancellation request for the given fqdn url: '#submit-a-forwarding-cancellation-request-for-the-given-fqdn' * depth: 2 title: Modify the forwarding information for the given fqdn url: '#modify-the-forwarding-information-for-the-given-fqdn' structuredData: headings: * content: Retrieve the forwarding information for the given fqdn id: retrieve-the-forwarding-information-for-the-given-fqdn * content: Create a new forwarding configuration for the given FQDN id: create-a-new-forwarding-configuration-for-the-given-fqdn * content: Submit a forwarding cancellation request for the given fqdn id: submit-a-forwarding-cancellation-request-for-the-given-fqdn * content: Modify the forwarding information for the given fqdn id: modify-the-forwarding-information-for-the-given-fqdn contents: * content: Returns current change of registrant details including status, requested contacts, and any pending approvals. * content: Cancels a pending change of registrant. Returns 202 - poll GET .../actions/CHANGE\_OF\_REGISTRANT\_DELETE until COMPLETED, FAILED, or CANCELLED. * content: Replaces the domain's authoritative nameservers. Returns 202 - poll GET .../actions/DOMAIN\_UPDATE\_NAME\_SERVERS until the action reaches a terminal state. * content: Returns the full DomainDetailV2 object including status, contacts, nameservers, lock state, privacy flag, and expiration timestamp. * content: Returns the current privacy email forwarding configuration including target address and forwarding mode. * content: Updates privacy email forwarding settings. Only fields included in the request are modified. Returns 202 - poll the actions endpoint for completion. * content: Returns the forwarding configuration for the FQDN including destination URL and redirect type. Returns 404 if no forwarding rule exists. heading: retrieve-the-forwarding-information-for-the-given-fqdn * content: Creates or replaces the forwarding configuration for the FQDN. Idempotent - replaying the same request produces the same rule. Returns 204 No Content. heading: create-a-new-forwarding-configuration-for-the-given-fqdn * content: Removes the forwarding configuration for the FQDN. Returns 204 No Content. heading: submit-a-forwarding-cancellation-request-for-the-given-fqdn * content: Updates the forwarding configuration for the FQDN. Only fields included in the request are modified. Returns 204 No Content. heading: modify-the-forwarding-information-for-the-given-fqdn *** # Register Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v2/register-domains) *** title: Register Domains description: Register new domains, retrieve registration schemas by TLD, and validate registration requests. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: \[] structuredData: headings: \[] contents: * content: Registers the specified domain. Requires a consent object with TLD agreement keys from the schema endpoint. Charges the account's billing method. Returns 202 - poll GET .../actions/REGISTER until the action reaches a terminal state. * content: Returns the JSON schema for the registration request body for the specified TLD. Fetch before registering to identify required fields and TLD-specific constraints. * content: Validates the registration request body against the TLD schema with no side effects and no charge. Returns 204 on success. *** # Transfer Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v2/transfer-domains) *** title: Transfer Domains description: Initiate and manage inbound and outbound domain transfers and transfer lifecycle actions. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v2.yaml toc: \[] structuredData: headings: \[] contents: * content: Initiates an inbound domain transfer from another registrar. Requires an authcode and consent object. Returns 202 - poll GET .../actions/TRANSFER until COMPLETED, FAILED, or CANCELLED. * content: Explicitly accepts an in-progress inbound transfer to expedite the process. Returns 202 - poll GET .../actions/TRANSFER\_IN\_ACCEPT until the action reaches a terminal state. * content: Cancels an in-progress inbound transfer. Returns 202 - poll GET .../actions/TRANSFER\_IN\_CANCEL until the action reaches a terminal state. * content: Restarts a stalled inbound transfer from the beginning. Returns 202 - poll GET .../actions/TRANSFER\_IN\_RESTART until the action reaches a terminal state. * content: Retries a failed inbound transfer with a new authorization code. Returns 202 - poll GET .../actions/TRANSFER\_IN\_RETRY until the action reaches a terminal state. * content: Initiates an outbound transfer for .uk domains. Returns 202 - poll the actions endpoint for completion. * content: Accepts a pending outbound transfer request. Returns 202 - poll GET .../actions/TRANSFER\_OUT\_ACCEPT until the action reaches a terminal state. * content: Rejects a pending outbound transfer request, keeping the domain at GoDaddy. Returns 202 - poll GET .../actions/TRANSFER\_OUT\_REJECT until the action reaches a terminal state. *** # Discovery (https://developer.godaddy.com/en/docs/references/rest/domains/v3/discovery) *** title: Discovery description: > Indicative, non-committing operations for finding and checking domains. Use suggestDomains for natural-language queries and getDomainAvailability for specific domain verification. Both return indicative pricing; locked pricing is established only at quote time. The check-availability controller carries no persistent identity. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Suggest available domains for a query url: '#suggest-available-domains-for-a-query' * depth: 2 title: Check availability of a single domain url: '#check-availability-of-a-single-domain' structuredData: headings: * content: Suggest available domains for a query id: suggest-available-domains-for-a-query * content: Check availability of a single domain id: check-availability-of-a-single-domain contents: * content: | Returns available domain name suggestions for a natural-language query or keyword set. All results are available (available-only contract). Prices are indicative; the authoritative price and availability check is at quote time. heading: suggest-available-domains-for-a-query * content: > Returns an indicative availability result for one domain, including per-term pricing when available. Availability is best-effort; the authoritative check is performed at quote time. This operation does not persist the check — there is no check identity or poll URL. A domain that cannot be checked is still returned as a `200` with an `error` object on the body; request-level failures use the `4xx` responses. heading: check-availability-of-a-single-domain *** # Domain Management (https://developer.godaddy.com/en/docs/references/rest/domains/v3/domain-management) *** title: Domain Management description: > Non-commercial async mutations on owned domain instances: contacts, nameservers, privacy, auto-renew, and transfer-lock. All sub-resources of /domain-names/. All mutations return a DomainOperation for polling. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Replace the nameservers for a domain url: '#replace-the-nameservers-for-a-domain' structuredData: headings: * content: Replace the nameservers for a domain id: replace-the-nameservers-for-a-domain contents: * content: > Replaces the authoritative nameservers for the domain with the provided list. Minimum 2, maximum 13. Returns a DomainOperation; propagation to the registry is asynchronous. heading: replace-the-nameservers-for-a-domain *** # Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v3/domains) *** title: Domains description: > The core domain entity collection. Supports listing and reading owned domain records, and cancelling registrations. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Get a registered domain url: '#get-a-registered-domain' structuredData: headings: * content: Get a registered domain id: get-a-registered-domain contents: * content: > Returns the management view of a single registered domain owned by the authenticated account, including status, nameservers, privacy and auto-renew preferences, and expiry date. heading: get-a-registered-domain *** # Overview (https://developer.godaddy.com/en/docs/references/rest/domains/v3) *** title: Overview description: > Reference for the Domains v3 API — a quote-execute model for domain discovery, registration, and management. ----------------------------- ## Overview Domains v3 introduces a **quote-execute** model built for clarity and pricing predictability: 1. **Discover** — check availability and get suggestions 2. **Quote** — lock in a price with a `quoteToken` 3. **Register** — execute the registration using that token 4. **Poll** — follow the async operation to completion All write operations return `202 Accepted` with an operation or registration ID. Poll the returned URL until status reaches `COMPLETED` or `FAILED`. v3 covers domain discovery, registration, domain reads, nameserver management, and DNS records. Renewals, transfers, contact updates, forwarding, and privacy settings remain on the [v1 API](https://developer.godaddy.com/docs/references/rest/domains/v1) and [v2 API](https://developer.godaddy.com/docs/references/rest/domains/v2). The complete OpenAPI spec for the v3 namespace is available at [/openapi/domains-v3.json](https://developer.godaddy.com/openapi/domains-v3.json) — useful for code generation, SDK tooling, and LLM context. ## Endpoint groups ## Quote-execute flow **1. Check availability** ``` GET /v3/domains/check-availability?domain=example.com ``` ```json { "domain": "example.com", "available": true, "prices": [ { "term": "YEAR", "period": 1, "price": { "currencyCode": "USD", "value": 1199 }, "renewalPrice": { "currencyCode": "USD", "value": 2299 } }, { "term": "YEAR", "period": 2, "price": { "currencyCode": "USD", "value": 3098 }, "renewalPrice": { "currencyCode": "USD", "value": 4598 }, "firstTermPrice": { "currencyCode": "USD", "value": 799 } } ] } ``` **2. Lock a price** ``` POST /v3/domains/registration-quotes ``` ```json { "domain": "example.com", "period": 1 } ``` ```json { "domain": "example.com", "available": true, "quoteToken": "qt_abc123...", "expiresAt": "2026-01-15T10:45:00.000Z", "period": 1, "price": { "currencyCode": "USD", "value": 1199 }, "requiredAgreements": [{ "agreementType": "API_DPA" }] } ``` **3. Execute the registration** ``` POST /v3/domains/registrations Idempotency-Key: ``` ```json { "quoteToken": "qt_abc123...", "domain": "example.com", "period": 1, "consent": { "agreedAt": "2026-01-15T10:30:00.000Z", "agreementTypes": ["API_DPA"] } } ``` ```json { "registrationId": "reg_xyz789...", "domain": "example.com", "status": "CONFIRMED" } ``` **4. Poll to completion** ``` GET /v3/domains/registrations/{registrationId} ``` ```json { "registrationId": "reg_xyz789...", "domain": "example.com", "status": "COMPLETED" } ``` Poll every few seconds until `status` is `COMPLETED` or `FAILED`. You can also use `GET /v3/domains/operations/{operationId}` — both endpoints resolve the same resource. ## Conventions | Convention | Detail | | -------------------- | ---------------------------------------------------------------------------- | | Base URL | `https://api.godaddy.com` | | Version prefix | `/v3/` | | Async writes | `202 Accepted` with `links[rel=self]` poll URL | | Idempotency | `Idempotency-Key` header required on registration | | Indicative vs locked | Availability and suggestions return indicative prices; quotes lock the price | | Auth | `Authorization: Bearer ${GODADDY_PAT}` | ## What v3 does not cover The following operations are not yet in v3. Use v1 or v2 instead: | Operation | Use instead | | ------------------------- | ---------------------------------------------- | | Domain renewals | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | Domain transfers | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | Contact updates | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | Domain forwarding | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | Privacy settings | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | List owned domains | [Domains v1](https://developer.godaddy.com/docs/references/rest/domains/v1) | | Shopper-scoped operations | [Domains v2](https://developer.godaddy.com/docs/references/rest/domains/v2) | # Operations (https://developer.godaddy.com/en/docs/references/rest/domains/v3/operations) *** title: Operations description: > Abstract operation polling. Poll GET /operations/ for any domain mutation until it reaches COMPLETED or FAILED. Operation IDs are unique across Registration, Renewal, and Transfer — clients that prefer typed polling can use the concrete resource endpoints instead. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Poll an async domain operation url: '#poll-an-async-domain-operation' structuredData: headings: * content: Poll an async domain operation id: poll-an-async-domain-operation contents: * content: > Universal poll endpoint for all asynchronous domain mutations. Returns the current state of the operation. Non-terminal responses include a `Retry-After` header. Terminal statuses: * `COMPLETED` — operation succeeded; `result` contains the final outcome. * `FAILED` — operation terminated with an error; `error` contains detail. While status is non-terminal (`CONFIRMED`, `EXECUTING`), neither `result` nor `error` is present. Poll until a terminal status is reached. The poll URL is provided in the `Location` header of the initiating 202 response and in `links[rel=self]`. Clients must not construct this URL independently. heading: poll-an-async-domain-operation *** # Records (https://developer.godaddy.com/en/docs/references/rest/domains/v3/records) *** title: Records description: > CRUD operations on DNS records within the GoDaddy-managed zone. Sub-collection of /zones/. Changes are applied synchronously. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: List DNS records in a zone url: '#list-dns-records-in-a-zone' * depth: 2 title: Create a DNS record for a zone url: '#create-a-dns-record-for-a-zone' * depth: 2 title: Replace a DNS record url: '#replace-a-dns-record' * depth: 2 title: Delete a DNS record url: '#delete-a-dns-record' structuredData: headings: * content: List DNS records in a zone id: list-dns-records-in-a-zone * content: Create a DNS record for a zone id: create-a-dns-record-for-a-zone * content: Replace a DNS record id: replace-a-dns-record * content: Delete a DNS record id: delete-a-dns-record contents: * content: | Returns a paginated collection of DNS resource records for the specified zone. Supports filtering by record type and host name, field projection, and page-based pagination. Pagination uses page (1-based) and pageSize query parameters. Pass totalRequired=true to include totalItems and totalPages when at least one record matches; both are omitted for empty result sets. Defaults to false to avoid count-query overhead. Filter parameters are combined with logical AND. Pagination links in the response preserve active filter, pagination, and field-projection parameters. sortBy and sortOrder are not supported. Results are always returned in canonical zone-file order: resource record type (IANA RR type number ascending — e.g. A before NS before CNAME), then name, then data. This matches authoritative DNS ordering and is not client-configurable. heading: list-dns-records-in-a-zone * content: > Creates a new DNS record in the GoDaddy-managed zone. Changes are applied synchronously; no operation polling required. heading: create-a-dns-record-for-a-zone * content: | Fully replaces an existing DNS resource record identified by recordId within the zone. All writable fields (name, type, data, ttl) must be supplied; partial updates are not supported on this endpoint. Changes are applied synchronously. GoDaddy-managed system records (SOA and NS) are read-only. When recordId refers to such a record, the request fails with `409 Conflict` — the record exists but cannot be modified. heading: replace-a-dns-record * content: | Permanently removes a DNS resource record from the zone. The recordId must refer to an existing record within the specified zone. Changes are applied synchronously. GoDaddy-managed system records (SOA and NS) are read-only. When recordId refers to such a record, the request fails with `409 Conflict` — the record exists but cannot be deleted. heading: delete-a-dns-record *** # Registration Quotes (https://developer.godaddy.com/en/docs/references/rest/domains/v3/registration-quotes) *** title: Registration Quotes description: > Quote a domain registration. Returns a locked price, resolved settings, required agreements, and a single-use quoteToken. Free and read-only. full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Quote a single-domain registration (no commitment) url: '#quote-a-single-domain-registration-no-commitment' structuredData: headings: * content: Quote a single-domain registration (no commitment) id: quote-a-single-domain-registration-no-commitment contents: * content: > Prices the registration, resolves contact and preference settings, returns required legal agreements, and mints a single-use quoteToken with a 10-minute TTL. Free and read-only; safe to call speculatively. When the domain is unavailable, `available: false` is returned with no quoteToken — this is a valid non-error response. When required contact fields are missing, a `422` is returned with field-level details so the agent can collect the missing data and re-quote. May pass `iscCode` to lock pricing at applicable rates; the same value must be supplied on /registrations if provided here. The `period` supplied here must be re-supplied on /registrations; a mismatch returns `quote_mismatch`. If `profile` or `profileId` is supplied here, the same value must be re-supplied on /registrations; a mismatch returns `quote_mismatch`. heading: quote-a-single-domain-registration-no-commitment *** # Registrations (https://developer.godaddy.com/en/docs/references/rest/domains/v3/registrations) *** title: Registrations description: > Top-level registration entity collection. Execute a domain registration by POSTing with a quoteToken, domain, period, and consent. Returns a Registration entity with links to the concrete poll URL (GET /registrations/) and the abstract operation (GET /operations/). full: true \_openapi: preload: * ./openapi-specs/specs/domains-v3/v3/schemas/openapi.yaml toc: * depth: 2 title: Register a domain (requires quoteToken) url: '#register-a-domain-requires-quotetoken' * depth: 2 title: Get a registration record url: '#get-a-registration-record' structuredData: headings: * content: Register a domain (requires quoteToken) id: register-a-domain-requires-quotetoken * content: Get a registration record id: get-a-registration-record contents: * content: > Executes a previously quoted domain registration. \*\*Irreversible once accepted; creates a charge.\*\* Requires a valid unexpired quoteToken from `quoteDomainRegistration`, an `Idempotency-Key` header, and a consent record. The target domain and period are in the request body alongside the quoteToken. Before calling this endpoint, retrieve `requiredAgreements` from the quote response and review each agreement before submitting the registration. Each agreement includes a `title` (display label) and optional `url` (full legal text). The `consent.agreementTypes` array must contain the `agreementType` value from every item in `requiredAgreements`; a mismatch returns `INVALID_AGREEMENT_KEYS`. Idempotency takes precedence over the single-use check: retrying with the same `Idempotency-Key` replays the original operation even after the token is consumed. Returns a `Registration` entity. Poll `links[rel=self]` (`GET /registrations/{registrationId}`) until status is `COMPLETED` or `FAILED`. The `operationId` field is also provided for clients that prefer `GET /operations/{operationId}`; both resolve the same resource. Poll either until status is `COMPLETED` or `FAILED`. The operation is fire-and-forget; always poll at least once even if the server completed it synchronously. When `iscCode` was supplied at quote time, the same value must be provided here or the request fails with `quote_mismatch`. When `period` was supplied at quote time, the same value must be provided here or the request fails with `quote_mismatch`. When `profile` or `profileId` was supplied at quote time, the same value must be provided here or the request fails with `quote_mismatch`. heading: register-a-domain-requires-quotetoken * content: > Returns a single registration record by its server-assigned registrationId, including the current execution status and the domain expiry date once the registration completes. This is the concrete poll endpoint for registration operations; the abstract equivalent is GET /operations/. heading: get-a-registration-record *** # addAttributeValuesToSku (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/addAttributeValuesToSku) *** title: addAttributeValuesToSku description: "Add Attribute Value(s) to an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Add Attribute Value(s) to an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddAttributeValuesToSkuInput!` **required** * `attributeValueIds` `[String!]!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # addAttributesToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/addAttributesToSkuGroup) *** title: addAttributesToSkuGroup description: "Add Attributes to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add Attributes to an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddAttributesToSkuGroupInput!` **required** * `attributes` `[CreateSKUGroupAttributeInput!]!` **required** * `label` `String!` **required** * `description` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `values` `[AssociateAttributeValueInput!]` **optional** * `label` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # createAttribute (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/createAttribute) *** title: createAttribute description: "Create a new attribute." full: true ---------- mutation Requires `commerce.product:write`. Create a new attribute. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateAttributeInput!` **required** * `label` `String!` **required** * `skuGroupId` `ID!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `values` `[AssociateAttributeValueInput!]` **optional** * `label` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `Attribute` `Attribute` — A SKU is comprised of a combination of multiple attributes - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute. - `description` `String` **nullable** — A description of the Attribute. - `htmlDescription` `String` **nullable** — HTML description for the Attribute. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The UUID of the Attribute. - `label` `String` **nullable** — The display label of the Attribute. E.g. 'Color', 'Size', etc. - `metafields` `AttributeMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute. E.g. 'color', 'size', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `updatedAt` `DateTime!` **non-null** — The update date of the Attribute. - `values` `AttributeValuesConnection` **nullable** — Attribute values of Attribute. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the Attribute. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # createAttributeValue (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/createAttributeValue) *** title: createAttributeValue description: "Create a new attribute value." full: true ---------- mutation Requires `commerce.product:write`. Create a new attribute value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `CreateAttributeValueInput!` **required** * `attributeId` `String!` **required** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `AttributeValue` `AttributeValue` — Value for an Attribute. - `attribute` `Attribute` **nullable** — The attribute that this value belongs to. - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute Value. - `id` `ID!` **non-null** — The UUID of the Attribute Value. - `label` `String` **nullable** — The display label of the Attribute Value. E.g. 'Red', 'Blue', etc. - `metafields` `AttributeValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute Value. E.g. 'red', 'blue', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute value. - `updatedAt` `DateTime!` **non-null** — The last update date of the Attribute Value. # createAttributeValues (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/createAttributeValues) *** title: createAttributeValues description: "Create new attribute values." full: true ---------- mutation Requires `commerce.product:write`. Create new attribute values. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `[CreateAttributeValueInput!]!` **required** * `attributeId` `String!` **required** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `AttributeValue` `[AttributeValue!]` — Value for an Attribute. - `attribute` `Attribute` **nullable** — The attribute that this value belongs to. - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute Value. - `id` `ID!` **non-null** — The UUID of the Attribute Value. - `label` `String` **nullable** — The display label of the Attribute Value. E.g. 'Red', 'Blue', etc. - `metafields` `AttributeValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute Value. E.g. 'red', 'blue', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute value. - `updatedAt` `DateTime!` **non-null** — The last update date of the Attribute Value. # removeAttributeValuesFromAttribute (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/removeAttributeValuesFromAttribute) *** title: removeAttributeValuesFromAttribute description: "Remove Attribute Value(s) from an existing Attribute." full: true ---------- mutation Requires `commerce.product:write`. Remove Attribute Value(s) from an existing Attribute. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveAttributeValuesFromAttributeInput!` **required** * `attributeValueIds` `[String!]!` **required** ## Possible returns * `Attribute` `Attribute` — A SKU is comprised of a combination of multiple attributes - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute. - `description` `String` **nullable** — A description of the Attribute. - `htmlDescription` `String` **nullable** — HTML description for the Attribute. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The UUID of the Attribute. - `label` `String` **nullable** — The display label of the Attribute. E.g. 'Color', 'Size', etc. - `metafields` `AttributeMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute. E.g. 'color', 'size', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `updatedAt` `DateTime!` **non-null** — The update date of the Attribute. - `values` `AttributeValuesConnection` **nullable** — Attribute values of Attribute. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the Attribute. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeAttributeValuesFromSku (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/removeAttributeValuesFromSku) *** title: removeAttributeValuesFromSku description: "Remove Attribute Value(s) from an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Remove Attribute Value(s) from an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveAttributeValuesFromSkuInput!` **required** * `attributeValueIds` `[String!]!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeAttributesFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/removeAttributesFromSkuGroup) *** title: removeAttributesFromSkuGroup description: "Remove Attributes from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove Attributes from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveAttributesFromSkuGroupInput!` **required** * `attributeIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeMetafieldsFromAttribute (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/removeMetafieldsFromAttribute) *** title: removeMetafieldsFromAttribute description: "Remove metafields from an existing Attribute." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing Attribute. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromAttributeInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `Attribute` `Attribute` — A SKU is comprised of a combination of multiple attributes - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute. - `description` `String` **nullable** — A description of the Attribute. - `htmlDescription` `String` **nullable** — HTML description for the Attribute. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The UUID of the Attribute. - `label` `String` **nullable** — The display label of the Attribute. E.g. 'Color', 'Size', etc. - `metafields` `AttributeMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute. E.g. 'color', 'size', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `updatedAt` `DateTime!` **non-null** — The update date of the Attribute. - `values` `AttributeValuesConnection` **nullable** — Attribute values of Attribute. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the Attribute. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeMetafieldsFromAttributeValue (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/removeMetafieldsFromAttributeValue) *** title: removeMetafieldsFromAttributeValue description: "Remove metafields from an existing Attribute Value." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing Attribute Value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromAttributeValueInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `AttributeValue` `AttributeValue` — Value for an Attribute. - `attribute` `Attribute` **nullable** — The attribute that this value belongs to. - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute Value. - `id` `ID!` **non-null** — The UUID of the Attribute Value. - `label` `String` **nullable** — The display label of the Attribute Value. E.g. 'Red', 'Blue', etc. - `metafields` `AttributeValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute Value. E.g. 'red', 'blue', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute value. - `updatedAt` `DateTime!` **non-null** — The last update date of the Attribute Value. # updateAttribute (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/updateAttribute) *** title: updateAttribute description: "Update an existing attribute." full: true ---------- mutation Requires `commerce.product:write`. Update an existing attribute. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateAttributeInput!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `Attribute` `Attribute` — A SKU is comprised of a combination of multiple attributes - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute. - `description` `String` **nullable** — A description of the Attribute. - `htmlDescription` `String` **nullable** — HTML description for the Attribute. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The UUID of the Attribute. - `label` `String` **nullable** — The display label of the Attribute. E.g. 'Color', 'Size', etc. - `metafields` `AttributeMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute. E.g. 'color', 'size', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `updatedAt` `DateTime!` **non-null** — The update date of the Attribute. - `values` `AttributeValuesConnection` **nullable** — Attribute values of Attribute. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the Attribute. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # updateAttributeValue (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/mutations/updateAttributeValue) *** title: updateAttributeValue description: "Update an existing attribute value." full: true ---------- mutation Requires `commerce.product:write`. Update an existing attribute value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateAttributeValueInput!` **required** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `AttributeValue` `AttributeValue` — Value for an Attribute. - `attribute` `Attribute` **nullable** — The attribute that this value belongs to. - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute Value. - `id` `ID!` **non-null** — The UUID of the Attribute Value. - `label` `String` **nullable** — The display label of the Attribute Value. E.g. 'Red', 'Blue', etc. - `metafields` `AttributeValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute Value. E.g. 'red', 'blue', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute value. - `updatedAt` `DateTime!` **non-null** — The last update date of the Attribute Value. # attribute (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/queries/attribute) *** title: attribute description: "Query `attribute` on the catalog subgraph (Attribute)." full: true ---------- query Requires `commerce.product:read`. Query `attribute` on the catalog subgraph (Attribute). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `Attribute` `Attribute` — A SKU is comprised of a combination of multiple attributes - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute. - `description` `String` **nullable** — A description of the Attribute. - `htmlDescription` `String` **nullable** — HTML description for the Attribute. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The UUID of the Attribute. - `label` `String` **nullable** — The display label of the Attribute. E.g. 'Color', 'Size', etc. - `metafields` `AttributeMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute. E.g. 'color', 'size', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `updatedAt` `DateTime!` **non-null** — The update date of the Attribute. - `values` `AttributeValuesConnection` **nullable** — Attribute values of Attribute. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the Attribute. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # attributeValue (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/queries/attributeValue) *** title: attributeValue description: "Query `attributeValue` on the catalog subgraph (Attribute)." full: true ---------- query Requires `commerce.product:read`. Query `attributeValue` on the catalog subgraph (Attribute). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `AttributeValue` `AttributeValue` — Value for an Attribute. - `attribute` `Attribute` **nullable** — The attribute that this value belongs to. - `createdAt` `DateTime!` **non-null** — The creation date of the Attribute Value. - `id` `ID!` **non-null** — The UUID of the Attribute Value. - `label` `String` **nullable** — The display label of the Attribute Value. E.g. 'Red', 'Blue', etc. - `metafields` `AttributeValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Attribute Value. E.g. 'red', 'blue', etc. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `position` `Int` **nullable** — The position of the attribute value. - `updatedAt` `DateTime!` **non-null** — The last update date of the Attribute Value. # attributeValues (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/queries/attributeValues) *** title: attributeValues description: "Query `attributeValues` on the catalog subgraph (Attribute)." full: true ---------- query Requires `commerce.product:read`. Query `attributeValues` on the catalog subgraph (Attribute). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `attributeId` `AttributeIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `AttributeValueIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `AttributeValueOrderBy` **optional** * `attributeId` `OrderByDirectionEnum` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `position` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `skuId` `SKUIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryAttributeValuesConnection` `QueryAttributeValuesConnection` - `edges` `[QueryAttributeValuesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # attributes (https://developer.godaddy.com/en/docs/references/rest/catalog/attribute/queries/attributes) *** title: attributes description: "Query `attributes` on the catalog subgraph (Attribute)." full: true ---------- query Requires `commerce.product:read`. Query `attributes` on the catalog subgraph (Attribute). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `AttributeIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `AttributeOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `label` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `position` `OrderByDirectionEnum` **optional** * `skuGroupId` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `skuGroupId` `SKUGroupIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuGroupStatus` `SKUGroupStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryAttributesConnection` `QueryAttributesConnection` - `edges` `[QueryAttributesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # addSkusToLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/addSkusToLocation) *** title: addSkusToLocation description: "Add SKUs to an existing location." full: true ---------- mutation Requires `commerce.product:write`. Add SKUs to an existing location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddSkusToLocationInput!` **required** * `skuIds` `[String!]!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # adjustInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/adjustInventory) *** title: adjustInventory description: "Adjust inventory by a positive or negative delta. Positive deltas stock inventory, negative deltas reduce inventory." full: true ---------- mutation Requires `commerce.product:write`. Adjust inventory by a positive or negative delta. Positive deltas stock inventory, negative deltas reduce inventory. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationAdjustInventoryInput!` **required** * `delta` `Int!` **required** * `locationId` `ID!` **required** * `skuId` `ID!` **required** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # archiveInventoryAdjustmentReason (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/archiveInventoryAdjustmentReason) *** title: archiveInventoryAdjustmentReason description: "Archive a store-scoped inventory adjustment reason. Global reasons cannot be archived." full: true ---------- mutation Requires `commerce.product:write`. Archive a store-scoped inventory adjustment reason. Global reasons cannot be archived. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationArchiveInventoryAdjustmentReasonInput!` **required** * `id` `ID!` **required** ## Possible returns * `InventoryAdjustmentReason` `InventoryAdjustmentReason` — A reason that can be associated with an inventory adjustment to explain why it occurred. Global preset reasons are prefixed with "g-" (e.g. g-damage, g-shrinkage). Store-scoped reasons use plain kebab-case names. - `createdAt` `DateTime` **nullable** — The date the reason was created. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment reason. - `isGlobal` `Boolean` **nullable** — Whether this is a global preset reason. Global reasons are shared across all stores and cannot be modified or archived. - `label` `String` **nullable** — The human-readable display label of the reason. - `name` `String` **nullable** — The unique kebab-case name of the reason. Global preset names are prefixed with "g-" (e.g. g-damage). Store-scoped names must not use the "g-" prefix. - `status` `String` **nullable** — The status of the reason, one of ACTIVE, ARCHIVED. - `updatedAt` `DateTime` **nullable** — The date the reason was last updated. # archiveLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/archiveLocation) *** title: archiveLocation description: "Archive a location." full: true ---------- mutation Requires `commerce.product:write`. Archive a location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # commitInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/commitInventory) *** title: commitInventory description: "Commit new inventory. If there are not enough available inventory, they will be moved to backordered if allowed." full: true ---------- mutation Requires `commerce.product:write`. Commit new inventory. If there are not enough available inventory, they will be moved to backordered if allowed. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCommitInventoryInput!` **required** * `locationId` `ID!` **required** * `quantity` `Int!` **required** * `skuId` `ID!` **required** * `allowBackorders` `Boolean` **optional** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # createInventoryAdjustment (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/createInventoryAdjustment) *** title: createInventoryAdjustment description: "Create a new inventory adjustment." full: true ---------- mutation Requires `commerce.product:write`. Create a new inventory adjustment. Use `CreateInventoryAdjustmentInput` with string `locationId` and `skuId`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `CreateInventoryAdjustmentInput!` **required** * `delta` `Int!` **required** — The change in inventory quantity. Positive for additions, negative for removals. * `locationId` `String!` **required** * `skuId` `String!` **required** * `type` `String!` **required** — The type of inventory adjustment, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `occurredAt` `DateTime` **optional** — The date and time when the inventory adjustment occurred. * `reasonName` `String` **optional** — The name of an inventory adjustment reason to associate with this adjustment. Use the exact reason name (e.g. "g-damage" for global presets, or a store-scoped name). * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `InventoryAdjustment` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # createInventoryAdjustmentReason (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/createInventoryAdjustmentReason) *** title: createInventoryAdjustmentReason description: "Create a new store-scoped inventory adjustment reason. Name must be kebab-case and must not start with "g-" (reserved for global presets). Once created, the…" full: true ---------- mutation Requires `commerce.product:write`. Create a new store-scoped inventory adjustment reason. Name must be kebab-case and must not start with "g-" (reserved for global presets). Once created, the name is immutable. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateInventoryAdjustmentReasonInput!` **required** * `label` `String!` **required** * `name` `String!` **required** ## Possible returns * `InventoryAdjustmentReason` `InventoryAdjustmentReason` — A reason that can be associated with an inventory adjustment to explain why it occurred. Global preset reasons are prefixed with "g-" (e.g. g-damage, g-shrinkage). Store-scoped reasons use plain kebab-case names. - `createdAt` `DateTime` **nullable** — The date the reason was created. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment reason. - `isGlobal` `Boolean` **nullable** — Whether this is a global preset reason. Global reasons are shared across all stores and cannot be modified or archived. - `label` `String` **nullable** — The human-readable display label of the reason. - `name` `String` **nullable** — The unique kebab-case name of the reason. Global preset names are prefixed with "g-" (e.g. g-damage). Store-scoped names must not use the "g-" prefix. - `status` `String` **nullable** — The status of the reason, one of ACTIVE, ARCHIVED. - `updatedAt` `DateTime` **nullable** — The date the reason was last updated. # createInventoryAdjustments (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/createInventoryAdjustments) *** title: createInventoryAdjustments description: "Create multiple inventory adjustments in a single operation." full: true ---------- mutation Requires `commerce.product:write`. Create multiple inventory adjustments in a single operation. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `[CreateInventoryAdjustmentInput!]!` **required** * `delta` `Int!` **required** — The change in inventory quantity. Positive for additions, negative for removals. * `locationId` `String!` **required** * `skuId` `String!` **required** * `type` `String!` **required** — The type of inventory adjustment, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `occurredAt` `DateTime` **optional** — The date and time when the inventory adjustment occurred. * `reasonName` `String` **optional** — The name of an inventory adjustment reason to associate with this adjustment. Use the exact reason name (e.g. "g-damage" for global presets, or a store-scoped name). * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # createLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/createLocation) *** title: createLocation description: "Create a new location." full: true ---------- mutation Requires `commerce.product:write`. Create a new location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateLocationInput!` **required** * `address` `CreateAddressInput!` **required** * `addressLine1` `String!` **required** * `countryCode` `String!` **required** * `addressDetails` `AddressDetailsInput` **optional** * `addressType` `String` **optional** * `buildingName` `String` **optional** * `deliveryService` `String` **optional** * `geoCoordinates` `GeoCoordinatesInput` **optional** * `streetName` `String` **optional** * `streetNumber` `String` **optional** * `streetType` `String` **optional** * `subBuilding` `String` **optional** * `addressLine2` `String` **optional** * `addressLine3` `String` **optional** * `adminArea1` `String` **optional** * `adminArea2` `String` **optional** * `adminArea3` `String` **optional** * `adminArea4` `String` **optional** * `postalCode` `String` **optional** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `status` `String` **optional** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # reduceInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/reduceInventory) *** title: reduceInventory description: "Reduce inventory by first reducing available, then moving committed to backordered. If insufficient inventory exists, additional available inventory is…" full: true ---------- mutation Requires `commerce.product:write`. Reduce inventory by first reducing available, then moving committed to backordered. If insufficient inventory exists, additional available inventory is automatically added to fulfill the reduction. This mutation does not respect backorder limits. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationReduceInventoryInput!` **required** * `locationId` `ID!` **required** * `quantity` `Int!` **required** * `skuId` `ID!` **required** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # releaseInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/releaseInventory) *** title: releaseInventory description: "Release inventory from committed and/or backordered. Releases from committed first, then backordered. Errors if the requested quantity exceeds committed +…" full: true ---------- mutation Requires `commerce.product:write`. Release inventory from committed and/or backordered. Releases from committed first, then backordered. Errors if the requested quantity exceeds committed + backordered. `releaseInventory` decreases COMMITTED first, then BACKORDERED. It does not increase AVAILABLE. To move units back to AVAILABLE, use `restockFromCommittedInventory`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationReleaseInventoryInput!` **required** * `locationId` `ID!` **required** * `quantity` `Int!` **required** * `skuId` `ID!` **required** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # removeMetafieldsFromLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/removeMetafieldsFromLocation) *** title: removeMetafieldsFromLocation description: "Remove metafields from an existing Location." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing Location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromLocationInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # removeSkusFromLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/removeSkusFromLocation) *** title: removeSkusFromLocation description: "Remove SKU from an existing location." full: true ---------- mutation Requires `commerce.product:write`. Remove SKU from an existing location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveSkusFromLocationInput!` **required** * `skuIds` `[String!]!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # restockFromCommittedInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/restockFromCommittedInventory) *** title: restockFromCommittedInventory description: "Restock inventory from committed. If there are not enough committed inventory, this mutation will error." full: true ---------- mutation Requires `commerce.product:write`. Restock inventory from committed. If there are not enough committed inventory, this mutation will error. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationRestockFromCommittedInventoryInput!` **required** * `locationId` `ID!` **required** * `quantity` `Int!` **required** * `skuId` `ID!` **required** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # stockInventory (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/stockInventory) *** title: stockInventory description: "Stock new inventory. If there are backordered inventory, they will be moved to committed. It does not validate against backorder limit. Any extra inventory…" full: true ---------- mutation Requires `commerce.product:write`. Stock new inventory. If there are backordered inventory, they will be moved to committed. It does not validate against backorder limit. Any extra inventory will be added to available. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationStockInventoryInput!` **required** * `locationId` `ID!` **required** * `quantity` `Int!` **required** * `skuId` `ID!` **required** * `reasonName` `String` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `InventoryAdjustment` `[InventoryAdjustment!]` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # updateInventoryAdjustmentReason (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/updateInventoryAdjustmentReason) *** title: updateInventoryAdjustmentReason description: "Update the label of a store-scoped inventory adjustment reason. Global preset reasons cannot be updated." full: true ---------- mutation Requires `commerce.product:write`. Update the label of a store-scoped inventory adjustment reason. Global preset reasons cannot be updated. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationUpdateInventoryAdjustmentReasonInput!` **required** * `id` `ID!` **required** * `label` `String` **optional** ## Possible returns * `InventoryAdjustmentReason` `InventoryAdjustmentReason` — A reason that can be associated with an inventory adjustment to explain why it occurred. Global preset reasons are prefixed with "g-" (e.g. g-damage, g-shrinkage). Store-scoped reasons use plain kebab-case names. - `createdAt` `DateTime` **nullable** — The date the reason was created. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment reason. - `isGlobal` `Boolean` **nullable** — Whether this is a global preset reason. Global reasons are shared across all stores and cannot be modified or archived. - `label` `String` **nullable** — The human-readable display label of the reason. - `name` `String` **nullable** — The unique kebab-case name of the reason. Global preset names are prefixed with "g-" (e.g. g-damage). Store-scoped names must not use the "g-" prefix. - `status` `String` **nullable** — The status of the reason, one of ACTIVE, ARCHIVED. - `updatedAt` `DateTime` **nullable** — The date the reason was last updated. # updateLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/mutations/updateLocation) *** title: updateLocation description: "Update an existing location." full: true ---------- mutation Requires `commerce.product:write`. Update an existing location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateLocationInput!` **required** * `address` `UpdateAddressInput` **optional** * `addressDetails` `AddressDetailsInput` **optional** * `addressType` `String` **optional** * `buildingName` `String` **optional** * `deliveryService` `String` **optional** * `geoCoordinates` `GeoCoordinatesInput` **optional** * `streetName` `String` **optional** * `streetNumber` `String` **optional** * `streetType` `String` **optional** * `subBuilding` `String` **optional** * `addressLine1` `String` **optional** * `addressLine2` `String` **optional** * `addressLine3` `String` **optional** * `adminArea1` `String` **optional** * `adminArea2` `String` **optional** * `adminArea3` `String` **optional** * `adminArea4` `String` **optional** * `countryCode` `String` **optional** * `postalCode` `String` **optional** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `status` `String` **optional** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # inventoryAdjustment (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/inventoryAdjustment) *** title: inventoryAdjustment description: "Query `inventoryAdjustment` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `inventoryAdjustment` on the catalog subgraph (Inventory). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `InventoryAdjustment` `InventoryAdjustment` — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. - `createdAt` `DateTime` **nullable** — The creation date of the inventory adjustment. - `delta` `Int` **nullable** — The change in quantity of a SKU at a location. - `id` `ID` **nullable** — The globally-unique ID of the inventory adjustment object. - `location` `Location` **nullable** — The Location associated with the Inventory Adjustment. - `metafields` `InventoryAdjustmentMetafieldsConnection` **nullable** - `occurredAt` `DateTime` **nullable** — The date when the inventory adjustment occurred. - `reason` `InventoryAdjustmentReason` **nullable** — The reason associated with this inventory adjustment. - `references` `InventoryAdjustmentReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Adjustment. - `type` `String!` **non-null** — The adjustment type of the inventory being adjusted, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Adjustment. Deprecated: Use sku instead. # inventoryAdjustmentReasons (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/inventoryAdjustmentReasons) *** title: inventoryAdjustmentReasons description: "List inventory adjustment reasons available to the current store. Includes both store-scoped and global preset reasons." full: true ---------- query Requires `commerce.product:read`. List inventory adjustment reasons available to the current store. Includes both store-scoped and global preset reasons. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `first` `Int` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `InventoryAdjustmentReasonOrderBy` **optional** * `id` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `status` `InventoryAdjustmentReasonStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** ## Possible returns * `QueryInventoryAdjustmentReasonsConnection` `QueryInventoryAdjustmentReasonsConnection` - `edges` `[QueryInventoryAdjustmentReasonsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # inventoryAdjustments (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/inventoryAdjustments) *** title: inventoryAdjustments description: "Query `inventoryAdjustments` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `inventoryAdjustments` on the catalog subgraph (Inventory). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `InventoryAdjustmentIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `locationId` `LocationIdFilter` **optional** * `eq` `String` **optional** * `orderBy` `InventoryAdjustmentOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `reasonName` `InventoryAdjustmentReasonNameFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuId` `SKUIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `type` `InventoryAdjustmentTypeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** ## Possible returns * `QueryInventoryAdjustmentsConnection` `QueryInventoryAdjustmentsConnection` - `edges` `[QueryInventoryAdjustmentsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # inventoryCount (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/inventoryCount) *** title: inventoryCount description: "Query `inventoryCount` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `inventoryCount` on the catalog subgraph (Inventory). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `locationId` `String!` **required** * `skuId` `String!` **required** * `type` `String` **optional** ## Possible returns * `InventoryCount` `[InventoryCount!]` — Represents the quantity of a SKU in a specific state at a particular time and location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the inventory count was created. - `id` `ID!` **non-null** — The globally-unique ID of the inventory count object. - `location` `Location` **nullable** — The Location associated with the Inventory Count. - `onHand` `Int` **nullable** — The on-hand inventory count (available + committed) for this SKU and location. - `quantity` `Int` **nullable** — The count of the inventory. - `sku` `SKU` **nullable** — The SKU associated with the Inventory Count. - `type` `String!` **non-null** — The type of inventory count, one of `AVAILABLE`, `COMMITTED`, `BACKORDERED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the inventory count was updated. - `SKU` `SKU` **nullable** deprecated — The SKU associated with the Inventory Count. Deprecated: Use sku instead. # inventoryCounts (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/inventoryCounts) *** title: inventoryCounts description: "Query `inventoryCounts` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `inventoryCounts` on the catalog subgraph (Inventory). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `InventoryCountIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `locationId` `LocationIdFilter` **optional** * `eq` `String` **optional** * `locationStatus` `LocationStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `orderBy` `InventoryCountOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `skuId` `SKUIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuStatus` `InventoryCountSKUStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `type` `InventoryCountTypeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryInventoryCountsConnection` `QueryInventoryCountsConnection` - `edges` `[QueryInventoryCountsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # location (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/location) *** title: location description: "Query `location` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `location` on the catalog subgraph (Inventory). Examples use `00000000-0000-4000-a000-000000000000` as a dummy UUID, not a real location. Unknown UUID ids return HTTP 200 with `data.location: null` and no `errors`. Non-UUID strings can return `INTERNAL_SERVER_ERROR`. Query `locations` first and copy a real `id`. Nested `inventoryCounts { totalCount }` or `inventoryAdjustments { totalCount }` can return GraphQL errors on those fields while other `location` fields still resolve. Prefer top-level [`inventoryCounts`](https://developer.godaddy.com/docs/references/rest/catalog/inventory/queries/inventoryCounts) or omit nested `totalCount`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # locations (https://developer.godaddy.com/en/docs/references/rest/catalog/inventory/queries/locations) *** title: locations description: "Query `locations` on the catalog subgraph (Inventory)." full: true ---------- query Requires `commerce.product:read`. Query `locations` on the catalog subgraph (Inventory). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `LocationIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `LocationOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuId` `SKUIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `status` `LocationStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryLocationsConnection` `QueryLocationsConnection` - `edges` `[QueryLocationsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # addListTreeNodesToListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/addListTreeNodesToListTree) *** title: addListTreeNodesToListTree description: "Add a new node to a list tree." full: true ---------- mutation Requires `commerce.product:write`. Add a new node to a list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddListTreeNodesToListTreeInput!` **required** * `listTreeNodes` `[AddListTreeNodeInput!]!` **required** * `listId` `String!` **required** * `parentNodeId` `String` **optional** * `position` `Int` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # addListTreeNodesToParentListTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/addListTreeNodesToParentListTreeNode) *** title: addListTreeNodesToParentListTreeNode description: "Add a new node to a list tree node." full: true ---------- mutation Requires `commerce.product:write`. Add a new node to a list tree node. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddListTreeNodesToParentListTreeNodeInput!` **required** * `listTreeNodes` `[AddListTreeNodeInput!]!` **required** * `listId` `String!` **required** * `parentNodeId` `String` **optional** * `position` `Int` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # addReferencesToListTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/addReferencesToListTreeNode) *** title: addReferencesToListTreeNode description: "Add references to an existing List Tree Node" full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing List Tree Node ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToListTreeNodeInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # archiveList (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/archiveList) *** title: archiveList description: "Archive a list." full: true ---------- mutation Requires `commerce.product:write`. Archive a list. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # archiveListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/archiveListTree) *** title: archiveListTree description: "Archive a list tree." full: true ---------- mutation Requires `commerce.product:write`. Archive a list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # createList (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/createList) *** title: createList description: "Create a new list." full: true ---------- mutation Requires `commerce.product:write`. Create a new list. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateListInput!` **required** * `label` `String!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `mediaObjects` `[CreateMediaObjectInput!]` **optional** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `status` `String` **optional** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # createListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/createListTree) *** title: createListTree description: "Create a new list tree." full: true ---------- mutation Requires `commerce.product:write`. Create a new list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateListTreeInput!` **required** * `label` `String!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `listTreeNodes` `[CreateListTreeNodeInput!]` **optional** * `listId` `String!` **required** * `position` `Int` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `status` `String` **optional** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # removeListTreeNodesFromListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/removeListTreeNodesFromListTree) *** title: removeListTreeNodesFromListTree description: "Remove nodes from a list tree." full: true ---------- mutation Requires `commerce.product:write`. Remove nodes from a list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveListTreeNodesFromListTreeInput!` **required** * `listTreeNodeIds` `[String!]!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # removeListTreeNodesFromParentListTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/removeListTreeNodesFromParentListTreeNode) *** title: removeListTreeNodesFromParentListTreeNode description: "Remove nodes from a list tree node." full: true ---------- mutation Requires `commerce.product:write`. Remove nodes from a list tree node. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveListTreeNodesFromParentListTreeNodeInput!` **required** * `listTreeNodeIds` `[String!]!` **required** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # removeMetafieldsFromList (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/removeMetafieldsFromList) *** title: removeMetafieldsFromList description: "Remove metafields from an existing List." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromListInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # removeMetafieldsFromListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/removeMetafieldsFromListTree) *** title: removeMetafieldsFromListTree description: "Remove metafields from an existing List Tree." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing List Tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromListTreeInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # removeReferencesFromListTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/removeReferencesFromListTreeNode) *** title: removeReferencesFromListTreeNode description: "Remove references from an existing List Tree Node" full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing List Tree Node ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromListTreeNodeInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # updateList (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/updateList) *** title: updateList description: "Update an existing list." full: true ---------- mutation Requires `commerce.product:write`. Update an existing list. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateListInput!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `status` `String` **optional** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # updateListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/updateListTree) *** title: updateListTree description: "Update an existing list tree." full: true ---------- mutation Requires `commerce.product:write`. Update an existing list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateListTreeInput!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `status` `String` **optional** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # updateListTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/mutations/updateListTreeNode) *** title: updateListTreeNode description: "Update an existing list tree node." full: true ---------- mutation Requires `commerce.product:write`. Update an existing list tree node. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateListTreeNodeInput!` **required** * `listId` `String` **optional** * `listTreeId` `String` **optional** * `parentNodeId` `String` **optional** * `position` `Int` **optional** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # categoriesListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/categoriesListTree) *** title: categoriesListTree description: "Special list tree to hold the main categories of the store. It cannot be updated or archived." full: true ---------- query Requires `commerce.product:read`. Special list tree to hold the main categories of the store. It cannot be updated or archived. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments *This field takes no arguments.* ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # list (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/list) *** title: list description: "Query `list` on the catalog subgraph (List)." full: true ---------- query Requires `commerce.product:read`. Query `list` on the catalog subgraph (List). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # listTree (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/listTree) *** title: listTree description: "Query `listTree` on the catalog subgraph (List)." full: true ---------- query Requires `commerce.product:read`. Query `listTree` on the catalog subgraph (List). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # listTreeNode (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/listTreeNode) *** title: listTreeNode description: "Query `listTreeNode` on the catalog subgraph (List)." full: true ---------- query Requires `commerce.product:read`. Query `listTreeNode` on the catalog subgraph (List). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `ListTreeNode` `ListTreeNode` — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `createdAt` `DateTime` **nullable** — The creation date of the list node. - `id` `ID` **nullable** — The globally-unique ID of the list node. - `list` `List` **nullable** — The list associated with the node. - `listTree` `ListTree` **nullable** — The List Tree associated with the node. - `listTreeNodes` `ListTreeNodeListTreeNodesConnection` **nullable** — The children nodes of the list node. - `parentListTreeNode` `ListTreeNode` **nullable** — The parent node of the list node. - `position` `Int` **nullable** — The position of the node in the list. - `references` `ListTreeNodeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `updatedAt` `DateTime` **nullable** — The last update date of the list node. # listTreeNodes (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/listTreeNodes) *** title: listTreeNodes description: "Query `listTreeNodes` on the catalog subgraph (List)." full: true ---------- query Requires `commerce.product:read`. Query `listTreeNodes` on the catalog subgraph (List). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `hasParent` `Boolean` **optional** * `id` `ListTreeNodeIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `listId` `ListIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `isNull` `Boolean` **optional** * `listStatus` `ListTreeNodeListStatusFilter` **optional** Default: `{"in":["ACTIVE","DRAFT"]}`. * `eq` `String` **optional** * `in` `[String!]` **optional** * `listTreeId` `ListTreeIdFilter` **optional** * `eq` `String` **optional** * `listTreeStatus` `ListTreeNodeListTreeStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `orderBy` `ListTreeNodeOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `position` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `parentNodeId` `ListTreeNodeParentNodeIdFilter` **optional** * `eq` `String` **optional** * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryListTreeNodesConnection` `QueryListTreeNodesConnection` - `edges` `[QueryListTreeNodesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # listTrees (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/listTrees) *** title: listTrees description: "List trees. Excludes the special categories list tree." full: true ---------- query Requires `commerce.product:read`. List trees. Excludes the special categories list tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `ListTreeIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `ListTreeOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `status` `ListTreeStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryListTreesConnection` `QueryListTreesConnection` - `edges` `[QueryListTreesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # lists (https://developer.godaddy.com/en/docs/references/rest/catalog/list/queries/lists) *** title: lists description: "Query `lists` on the catalog subgraph (List)." full: true ---------- query Requires `commerce.product:read`. Query `lists` on the catalog subgraph (List). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `ListIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `ListOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `label` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuGroupId` `SKUGroupIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `status` `ListStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryListsConnection` `QueryListsConnection` - `edges` `[QueryListsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # addMediaObjectsToList (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/addMediaObjectsToList) *** title: addMediaObjectsToList description: "Add media objects to an existing List." full: true ---------- mutation Requires `commerce.product:write`. Add media objects to an existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddMediaObjectsToListInput!` **required** * `mediaObjects` `[CreateMediaObjectInput!]!` **required** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # addMediaObjectsToSku (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/addMediaObjectsToSku) *** title: addMediaObjectsToSku description: "Add media objects to an existing SKU" full: true ---------- mutation Requires `commerce.product:write`. Add media objects to an existing SKU ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddMediaObjectsToSkuInput!` **required** * `mediaObjects` `[CreateMediaObjectInput!]!` **required** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # addMediaObjectsToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/addMediaObjectsToSkuGroup) *** title: addMediaObjectsToSkuGroup description: "Add media objects to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add media objects to an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddMediaObjectsToSkuGroupInput!` **required** * `mediaObjects` `[CreateMediaObjectInput!]!` **required** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeMediaObjectsFromList (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/removeMediaObjectsFromList) *** title: removeMediaObjectsFromList description: "Remove media objects from an existing List." full: true ---------- mutation Requires `commerce.product:write`. Remove media objects from an existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMediaObjectsFromListInput!` **required** * `mediaObjectIds` `[String!]!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # removeMediaObjectsFromSku (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/removeMediaObjectsFromSku) *** title: removeMediaObjectsFromSku description: "Remove media objects from an existing SKU" full: true ---------- mutation Requires `commerce.product:write`. Remove media objects from an existing SKU ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMediaObjectsFromSkuInput!` **required** * `mediaObjectIds` `[String!]!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeMediaObjectsFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/removeMediaObjectsFromSkuGroup) *** title: removeMediaObjectsFromSkuGroup description: "Remove media objects from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove media objects from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMediaObjectsFromSkuGroupInput!` **required** * `mediaObjectIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # updateListMediaObjects (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/updateListMediaObjects) *** title: updateListMediaObjects description: "Add media objects or update existing media objects to existing List." full: true ---------- mutation Requires `commerce.product:write`. Add media objects or update existing media objects to existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateListMediaObjectsInput!` **required** * `mediaObjects` `[UpdateMediaObjectInput!]!` **required** * `id` `String!` **required** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `type` `String` **optional** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String` **optional** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # updateSkuGroupMediaObjects (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/updateSkuGroupMediaObjects) *** title: updateSkuGroupMediaObjects description: "Add media objects or update existing media objects to existing SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Add media objects or update existing media objects to existing SKU Group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuGroupMediaObjectsInput!` **required** * `mediaObjects` `[UpdateMediaObjectInput!]!` **required** * `id` `String!` **required** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `type` `String` **optional** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String` **optional** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # updateSkuMediaObjects (https://developer.godaddy.com/en/docs/references/rest/catalog/media/mutations/updateSkuMediaObjects) *** title: updateSkuMediaObjects description: "Add media objects or update existing media objects to existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Add media objects or update existing media objects to existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuMediaObjectsInput!` **required** * `mediaObjects` `[UpdateMediaObjectInput!]!` **required** * `id` `String!` **required** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `type` `String` **optional** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String` **optional** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # createOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/createOption) *** title: createOption description: "Create a new option." full: true ---------- mutation Requires `commerce.product:write`. Create a new option. ## Prerequisites * **`skuGroupIds`** — include at least one SKU group id. Standalone `createOption` calls fail without it (`Non-sharable options require at least one skuGroupId`). * Get ids from [`skuGroups`](https://developer.godaddy.com/docs/references/rest/catalog/sku-group/queries/skuGroups) or [`createSkuGroup`](https://developer.godaddy.com/docs/references/rest/catalog/sku-group/mutations/createSkuGroup). Prefer `skuGroupIds` over deprecated `skuGroupId`. Send `type` as `TEXT`, `NUMBER`, or `LIST` — not `NUMERIC`. `NUMBER` returns `NumericOption`. `min`/`max` live on `validation` (no `step` field). For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateOptionInput!` **required** * `label` `String!` **required** * `type` `String!` **required** — The type of the Option, one of `TEXT`, `NUMBER`, `LIST`. Option Values are only available on the 'LIST' type. * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `shareable` `Boolean` **optional** — Whether this option is shareable across multiple SKU Groups. * `skuGroupId` `String` **optional** — Deprecated: Use skuGroupIds instead. * `skuGroupIds` `[String!]` **optional** — The UUIDs of the SKU Groups to associate the Option with. * `validation` `CreateOptionValidationInput` **optional** * `max` `Int` **optional** * `min` `Int` **optional** * `values` `[CreateOptionValueInput!]` **optional** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionValuePriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** ## Possible returns * `Option` `Option` # createOptionPrice (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/createOptionPrice) *** title: createOptionPrice description: "Create a flat price for the option. This will be ignored if a price is present on the option values." full: true ---------- mutation Requires `commerce.product:write`. Create a flat price for the option. This will be ignored if a price is present on the option values. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateOptionPriceInput!` **required** * `optionId` `String!` **required** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionPrice` `OptionPrice` — Represents the additional cost of an option added to a SKU group (e.g 'Toppings' option for a coffee drink). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `option` `Option` **nullable** — The option that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # createOptionValue (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/createOptionValue) *** title: createOptionValue description: "Create a new option value." full: true ---------- mutation Requires `commerce.product:write`. Create a new option value. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateOptionValueInput!` **required** * `label` `String!` **required** * `optionId` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionValuePriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionValue` `OptionValue` - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option Value was created. - `id` `ID!` **non-null** — The UUID of the Option Value. - `label` `String` **nullable** — The display label of the Option Value. - `metafields` `OptionValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option Value. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `option` `ListOption` **nullable** — The option that this value belongs to. - `position` `Int` **nullable** — The position of the option value. - `prices` `OptionValuePricesConnection` **nullable** — These are all the prices the Option Value can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option Value was updated. # createOptionValuePrice (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/createOptionValuePrice) *** title: createOptionValuePrice description: "Create a price." full: true ---------- mutation Requires `commerce.product:write`. Create a price. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateOptionValuePriceInput!` **required** * `optionValueId` `String!` **required** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionValuePrice` `OptionValuePrice` — Represents the additional cost of the option value added to a SKU (e.g the option value 'Caramel Drizzle' could have a different cost to other 'Topping' options). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `optionValue` `OptionValue` **nullable** — The option value that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # createOptionValues (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/createOptionValues) *** title: createOptionValues description: "Create multiple new Option Values in a single transaction." full: true ---------- mutation Requires `commerce.product:write`. Create multiple new Option Values in a single transaction. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `[MutationCreateOptionValueInput!]!` **required** * `label` `String!` **required** * `optionId` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionValuePriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionValue` `[OptionValue!]` - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option Value was created. - `id` `ID!` **non-null** — The UUID of the Option Value. - `label` `String` **nullable** — The display label of the Option Value. - `metafields` `OptionValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option Value. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `option` `ListOption` **nullable** — The option that this value belongs to. - `position` `Int` **nullable** — The position of the option value. - `prices` `OptionValuePricesConnection` **nullable** — These are all the prices the Option Value can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option Value was updated. # removeMetafieldsFromOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removeMetafieldsFromOption) *** title: removeMetafieldsFromOption description: "Remove metafields from an existing Option." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing Option. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromOptionInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `Option` `Option` # removeMetafieldsFromOptionValue (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removeMetafieldsFromOptionValue) *** title: removeMetafieldsFromOptionValue description: "Remove metafields from an existing Option Value." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing Option Value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromOptionValueInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `OptionValue` `OptionValue` - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option Value was created. - `id` `ID!` **non-null** — The UUID of the Option Value. - `label` `String` **nullable** — The display label of the Option Value. - `metafields` `OptionValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option Value. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `option` `ListOption` **nullable** — The option that this value belongs to. - `position` `Int` **nullable** — The position of the option value. - `prices` `OptionValuePricesConnection` **nullable** — These are all the prices the Option Value can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option Value was updated. # removeOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removeOption) *** title: removeOption description: "Remove an existing option." full: true ---------- mutation Requires `commerce.product:write`. Remove an existing option. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `Null` `Null` # removeOptionValue (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removeOptionValue) *** title: removeOptionValue description: "Remove an existing option value." full: true ---------- mutation Requires `commerce.product:write`. Remove an existing option value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `Null` `Null` # removeOptionValuesFromListOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removeOptionValuesFromListOption) *** title: removeOptionValuesFromListOption description: "Remove values from an existing Option." full: true ---------- mutation Requires `commerce.product:write`. Remove values from an existing Option. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveOptionValuesFromListOptionInput!` **required** * `valueIds` `[String!]!` **required** ## Possible returns * `ListOption` `ListOption` - `compareAtPriceRange` `PriceRange` **nullable** — The `compareAt` price range of the option, tracks the min and max `compareAt` price of all the option values under this option. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option was created. - `description` `String` **nullable** — A description of the Option. - `id` `ID!` **non-null** — The UUID of the Option - `label` `String` **nullable** — The display lable of the Option - `metafields` `OptionMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `priceRange` `PriceRange` **nullable** — The price range of the option, tracks the min and max price of all the option values under this option. - `prices` `ListOptionPricesConnection` **nullable** — Represents the additional cost of a List Option. When empty, it indicates this option allows for flexible pricing. - `shareable` `Boolean!` **non-null** — Whether the option is shareable across multiple SKU Groups (a global modifier). - `skuGroupIds` `[String!]!` **non-null** — The IDs of all SKU groups this option is associated with. - `type` `String` **nullable** — The type of the option, one of `TEXT`, `NUMBER`, `LIST`, Option Values are available for the 'LIST' type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option was updated. - `validation` `OptionValidation` **nullable** — Provide validations on how the option can be applied to a SKU. If `TEXT` option then `min` and `max` apply to the number of characters. If `NUMBER` then `min` and `max` apply to the actual number value. If `LIST` then `min` and `max` apply to the number of values that can be selected. - `values` `ListOptionValuesConnection` **nullable** — Represents the additional cost of a List Option. Each value can have one or more prices. - `position` `Int` **nullable** deprecated — The position of the option within its SKU group. Deprecated: Use the position from the SKUGroup.options connection instead. Position is per-SKU-group relationship. - `skuGroupId` `ID!` **non-null** deprecated — The UUID of the SKU Group that the Option belongs to. Deprecated: Use skuGroupIds or the SKUGroup.options connection instead. An option may belong to multiple SKU groups. # removePricesFromOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removePricesFromOption) *** title: removePricesFromOption description: "Remove prices from an existing Option." full: true ---------- mutation Requires `commerce.product:write`. Remove prices from an existing Option. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemovePricesFromOptionInput!` **required** * `priceIds` `[String!]!` **required** ## Possible returns * `Option` `Option` # removePricesFromOptionValue (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/removePricesFromOptionValue) *** title: removePricesFromOptionValue description: "Remove prices from an existing OptionValue." full: true ---------- mutation Requires `commerce.product:write`. Remove prices from an existing OptionValue. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemovePricesFromOptionValueInput!` **required** * `priceIds` `[String!]!` **required** ## Possible returns * `OptionValue` `OptionValue` - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option Value was created. - `id` `ID!` **non-null** — The UUID of the Option Value. - `label` `String` **nullable** — The display label of the Option Value. - `metafields` `OptionValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option Value. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `option` `ListOption` **nullable** — The option that this value belongs to. - `position` `Int` **nullable** — The position of the option value. - `prices` `OptionValuePricesConnection` **nullable** — These are all the prices the Option Value can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option Value was updated. # updateOption (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOption) *** title: updateOption description: "Update an existing option." full: true ---------- mutation Requires `commerce.product:write`. Update an existing option. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionInput!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `shareable` `Boolean` **optional** * `type` `String` **optional** — The type of the Option, one of `TEXT`, `NUMBER`, `LIST`. Option Values are only available on the 'LIST' type. * `validation` `CreateOptionValidationInput` **optional** * `max` `Int` **optional** * `min` `Int` **optional** ## Possible returns * `Option` `Option` # updateOptionPrice (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOptionPrice) *** title: updateOptionPrice description: "Update an existing price object for an option." full: true ---------- mutation Requires `commerce.product:write`. Update an existing price object for an option. Sending only `value` can clear `compareAtValue`. Include both fields if you need to keep the compare-at price. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionPriceInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `value` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionPrice` `OptionPrice` — Represents the additional cost of an option added to a SKU group (e.g 'Toppings' option for a coffee drink). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `option` `Option` **nullable** — The option that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # updateOptionPriceCurrencyCode (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOptionPriceCurrencyCode) *** title: updateOptionPriceCurrencyCode description: "Update the currency code for an existing option price. This updates the currency code for both value and compareAtValue." full: true ---------- mutation Requires `commerce.product:write`. Update the currency code for an existing option price. This updates the currency code for both value and compareAtValue. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionPriceCurrencyCodeInput!` **required** * `currencyCode` `String!` **required** ## Possible returns * `OptionPrice` `OptionPrice` — Represents the additional cost of an option added to a SKU group (e.g 'Toppings' option for a coffee drink). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `option` `Option` **nullable** — The option that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # updateOptionValue (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOptionValue) *** title: updateOptionValue description: "Update an existing option value." full: true ---------- mutation Requires `commerce.product:write`. Update an existing option value. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionValueInput!` **required** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** ## Possible returns * `OptionValue` `OptionValue` - `createdAt` `DateTime!` **non-null** — The timestamp of when the Option Value was created. - `id` `ID!` **non-null** — The UUID of the Option Value. - `label` `String` **nullable** — The display label of the Option Value. - `metafields` `OptionValueMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name of the Option Value. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `option` `ListOption` **nullable** — The option that this value belongs to. - `position` `Int` **nullable** — The position of the option value. - `prices` `OptionValuePricesConnection` **nullable** — These are all the prices the Option Value can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Option Value was updated. # updateOptionValuePrice (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOptionValuePrice) *** title: updateOptionValuePrice description: "Update an existing price object." full: true ---------- mutation Requires `commerce.product:write`. Update an existing price object. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionValuePriceInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `value` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `OptionValuePrice` `OptionValuePrice` — Represents the additional cost of the option value added to a SKU (e.g the option value 'Caramel Drizzle' could have a different cost to other 'Topping' options). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `optionValue` `OptionValue` **nullable** — The option value that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # updateOptionValuePriceCurrencyCode (https://developer.godaddy.com/en/docs/references/rest/catalog/option/mutations/updateOptionValuePriceCurrencyCode) *** title: updateOptionValuePriceCurrencyCode description: "Update the currency code for an existing option value price. This updates the currency code for both value and compareAtValue." full: true ---------- mutation Requires `commerce.product:write`. Update the currency code for an existing option value price. This updates the currency code for both value and compareAtValue. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateOptionValuePriceCurrencyCodeInput!` **required** * `currencyCode` `String!` **required** ## Possible returns * `OptionValuePrice` `OptionValuePrice` — Represents the additional cost of the option value added to a SKU (e.g the option value 'Caramel Drizzle' could have a different cost to other 'Topping' options). - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `optionValue` `OptionValue` **nullable** — The option value that this price belongs to. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. # optionPrices (https://developer.godaddy.com/en/docs/references/rest/catalog/option/queries/optionPrices) *** title: optionPrices description: "Query all option prices." full: true ---------- query Requires `commerce.product:read`. Query all option prices. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `currencyCode` `CurrencyCodeFilter` **optional** — Filter prices by currency code. * `eq` `String` **optional** — Filters items where the currency code equals the specified 3-letter ISO currency code. * `in` `[String!]` **optional** — Filters items where the currency code matches any of the specified 3-letter ISO currency codes. * `first` `Int` **optional** * `id` `OptionPriceIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `optionId` `OptionIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `orderBy` `OptionPriceOrderBy` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryOptionPricesConnection` `QueryOptionPricesConnection` - `edges` `[QueryOptionPricesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # optionValuePrices (https://developer.godaddy.com/en/docs/references/rest/catalog/option/queries/optionValuePrices) *** title: optionValuePrices description: "Query all option value prices." full: true ---------- query Requires `commerce.product:read`. Query all option value prices. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `currencyCode` `CurrencyCodeFilter` **optional** — Filter prices by currency code. * `eq` `String` **optional** — Filters items where the currency code equals the specified 3-letter ISO currency code. * `in` `[String!]` **optional** — Filters items where the currency code matches any of the specified 3-letter ISO currency codes. * `first` `Int` **optional** * `id` `OptionValuePriceIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `optionValueId` `OptionValueIdFilter` **optional** * `eq` `String` **optional** * `orderBy` `OptionValuePriceOrderBy` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryOptionValuePricesConnection` `QueryOptionValuePricesConnection` - `edges` `[QueryOptionValuePricesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # optionValues (https://developer.godaddy.com/en/docs/references/rest/catalog/option/queries/optionValues) *** title: optionValues description: "Query `optionValues` on the catalog subgraph (Option)." full: true ---------- query Requires `commerce.product:read`. Query `optionValues` on the catalog subgraph (Option). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `OptionValueIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `optionId` `OptionIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `orderBy` `OptionValueOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `position` `OrderByDirectionEnum` **optional** * `price` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryOptionValuesConnection` `QueryOptionValuesConnection` - `edges` `[QueryOptionValuesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # options (https://developer.godaddy.com/en/docs/references/rest/catalog/option/queries/options) *** title: options description: "Query `options` on the catalog subgraph (Option)." full: true ---------- query Requires `commerce.product:read`. Query `options` on the catalog subgraph (Option). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `assignableToSkuGroupId` `String` **optional** — Returns shareable options that are not already associated with the specified SKU group. Use this to find options that can be added to a SKU group. Cannot be combined with skuGroupId or skuGroupStatus filters. * `before` `String` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `id` `OptionIdsFilter` **optional** * `in` `[String!]` **optional** * `label` `LabelFilter` **optional** * `contains` `String` **optional** — Filters items where the label contains the specified string, case-insensitive. * `eq` `String` **optional** * `last` `Int` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `OptionOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `label` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `position` `OrderByDirectionEnum` **optional** * `price` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `shareable` `Boolean` **optional** — Filter options by their shareable status. When true, returns only shareable options; when false, returns only non-shareable options. * `skuGroupId` `SKUGroupIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuGroupStatus` `SKUGroupStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QueryOptionsConnection` `QueryOptionsConnection` - `edges` `[QueryOptionsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # addReferencesToList (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/addReferencesToList) *** title: addReferencesToList description: "Add references to an existing List." full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToListInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # addReferencesToListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/addReferencesToListTree) *** title: addReferencesToListTree description: "Add references to an existing List Tree." full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing List Tree. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToListTreeInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # addReferencesToLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/addReferencesToLocation) *** title: addReferencesToLocation description: "Add references to an existing location." full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToLocationInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # addReferencesToSku (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/addReferencesToSku) *** title: addReferencesToSku description: "Add references to an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToSkuInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # addReferencesToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/addReferencesToSkuGroup) *** title: addReferencesToSkuGroup description: "Add references to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add references to an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddReferencesToSkuGroupInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** * `value` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeReferencesFromList (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/removeReferencesFromList) *** title: removeReferencesFromList description: "Remove references from an existing List." full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing List. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromListInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # removeReferencesFromListTree (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/removeReferencesFromListTree) *** title: removeReferencesFromListTree description: "Remove references from an existing List Tree" full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing List Tree ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromListTreeInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `ListTree` `ListTree` — A List tree holds the hierarchical information of a group of lists. - `activatedAt` `DateTime` **nullable** — The timestamp of when the list tree was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the list tree was archived. - `createdAt` `DateTime` **nullable** — The creation date of the list tree. - `description` `String` **nullable** — The description of the list tree. - `htmlDescription` `String` **nullable** — HTML description for the List Tree. Will be used to display rich text content to customers. - `id` `ID` **nullable** — The globally-unique ID of the list tree. - `label` `String` **nullable** — The display label of the list tree. - `listTreeNodes` `ListTreeListTreeNodesConnection` **nullable** — List tree node is associated to a single List and a node can be a parent node to provide the hierarchy of list trees. - `metafields` `ListTreeMetafieldsConnection` **nullable** - `name` `String` **nullable** — A unique name of the list tree. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListTreeReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `status` `String` **nullable** — The status of the list tree, one of `ACTIVE`, `ARCHIVED`, `DRAFT`. - `updatedAt` `DateTime` **nullable** — The last update date of the list tree. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List Tree. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. # removeReferencesFromLocation (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/removeReferencesFromLocation) *** title: removeReferencesFromLocation description: "Remove references from an existing location." full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing location. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromLocationInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `Location` `Location` — A location represents the physical location of an inventory. - `address` `Address` **nullable** — The address of the Location. - `createdAt` `DateTime!` **non-null** — The timestamp of when the Location was created. - `id` `ID!` **non-null** — The globally-unique ID of the Location. - `inventoryAdjustments` `LocationInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `LocationInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `label` `String` **nullable** — The display name of the Location. - `metafields` `LocationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique and human-friendly name of the Location. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `LocationReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skus` `LocationSkusConnection` **nullable** — The SKUs are purchasable items in the catalog. - `status` `String!` **non-null** — The status of the location, one of `ACTIVE`, `INACTIVE`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the Location was updated. - `SKUs` `LocationSKUsConnection` **nullable** deprecated — The SKUs are purchasable items in the catalog. Deprecated: Use skus instead. # removeReferencesFromSku (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/removeReferencesFromSku) *** title: removeReferencesFromSku description: "Remove references from an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromSkuInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeReferencesFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/reference/mutations/removeReferencesFromSkuGroup) *** title: removeReferencesFromSkuGroup description: "Remove references from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove references from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveReferencesFromSkuGroupInput!` **required** * `referenceIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # archiveSku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/archiveSku) *** title: archiveSku description: "Archive an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Archive an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # archiveSkus (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/archiveSkus) *** title: archiveSkus description: "Archive multiple existing SKUs. Limit 25 SKUs." full: true ---------- mutation Requires `commerce.product:write`. Archive multiple existing SKUs. Limit 25 SKUs. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `ids` `[String!]!` **required** ## Possible returns * `SKU` `[SKU!]` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # createSku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/createSku) *** title: createSku description: "Create a new SKU." full: true ---------- mutation Requires `commerce.product:write`. Create a new SKU. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `CreateSKUInput!` **required** * `label` `String!` **required** * `attributeValueIds` `[String!]` **optional** * `attributeValues` `[AssociateAttributeValueToSKUInput!]` **optional** * `attributeName` `String!` **required** * `valueName` `String!` **required** * `backorderLimit` `Int` **optional** * `code` `String` **optional** * `cost` `Int` **optional** — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. * `description` `String` **optional** * `disableInventoryTracking` `Boolean` **optional** * `disablePriceOverrides` `Boolean` **optional** * `disableShipping` `Boolean` **optional** * `eanCode` `String` **optional** * `gtinCode` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `inventoryQuantities` `[CreateSKUInventoryInput!]` **optional** * `locationId` `String!` **required** * `quantity` `Int!` **required** * `isbnCode` `String` **optional** * `mediaObjects` `[CreateMediaObjectInput!]` **optional** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `prices` `[CreateSKUPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `shortLabel` `String` **optional** * `skuGroupId` `String` **optional** * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. * `unitCost` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `unitOfWeight` `String` **optional** — The status of the SKU, one of `KG`, `GR`, `LB`, `OZ`. * `upcCode` `String` **optional** * `weight` `Float` **optional** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # createSkuPrice (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/createSkuPrice) *** title: createSkuPrice description: "Create a price." full: true ---------- mutation Requires `commerce.product:write`. Create a price. Use `MutationCreateSkuPriceInput` (it includes `skuId`). Nested `CreateSKUPriceInput` on `createSku` has no `skuId`. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateSkuPriceInput!` **required** * `skuId` `ID!` **required** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `SKUPrice` `SKUPrice` — Represents the cost of a SKU - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `sku` `SKU` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. - `SKU` `SKU` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use sku instead. # createSkus (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/createSkus) *** title: createSkus description: "Create multiple new SKUs in a single transaction. Limit 25 SKUs." full: true ---------- mutation Requires `commerce.product:write`. Create multiple new SKUs in a single transaction. Limit 25 SKUs. The `input` array accepts a maximum of 25 items per call. To create more than 25 SKUs, split them into multiple requests. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `[CreateSKUInput!]!` **required** * `label` `String!` **required** * `attributeValueIds` `[String!]` **optional** * `attributeValues` `[AssociateAttributeValueToSKUInput!]` **optional** * `attributeName` `String!` **required** * `valueName` `String!` **required** * `backorderLimit` `Int` **optional** * `code` `String` **optional** * `cost` `Int` **optional** — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. * `description` `String` **optional** * `disableInventoryTracking` `Boolean` **optional** * `disablePriceOverrides` `Boolean` **optional** * `disableShipping` `Boolean` **optional** * `eanCode` `String` **optional** * `gtinCode` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `inventoryQuantities` `[CreateSKUInventoryInput!]` **optional** * `locationId` `String!` **required** * `quantity` `Int!` **required** * `isbnCode` `String` **optional** * `mediaObjects` `[CreateMediaObjectInput!]` **optional** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `prices` `[CreateSKUPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `shortLabel` `String` **optional** * `skuGroupId` `String` **optional** * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. * `unitCost` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `unitOfWeight` `String` **optional** — The status of the SKU, one of `KG`, `GR`, `LB`, `OZ`. * `upcCode` `String` **optional** * `weight` `Float` **optional** ## Possible returns * `SKU` `[SKU!]` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removeMetafieldsFromSku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/removeMetafieldsFromSku) *** title: removeMetafieldsFromSku description: "Remove metafields from an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromSkuInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # removePricesFromSku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/removePricesFromSku) *** title: removePricesFromSku description: "Remove prices from an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Remove prices from an existing SKU. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemovePricesFromSkuInput!` **required** * `priceIds` `[String!]!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # updateSku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/updateSku) *** title: updateSku description: "Update an existing SKU." full: true ---------- mutation Requires `commerce.product:write`. Update an existing SKU. `status` must be `DRAFT`, `ACTIVE`, or `ARCHIVED`. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuInput!` **required** * `backorderLimit` `Int` **optional** * `code` `String` **optional** * `cost` `Int` **optional** — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. * `description` `String` **optional** * `disableInventoryTracking` `Boolean` **optional** * `disablePriceOverrides` `Boolean` **optional** * `disableShipping` `Boolean` **optional** * `eanCode` `String` **optional** * `gtinCode` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `isbnCode` `String` **optional** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `shortLabel` `String` **optional** — Deprecated: Use channel-specific overrides for short labels. * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. * `unitCost` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `unitOfWeight` `String` **optional** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. * `upcCode` `String` **optional** * `weight` `Float` **optional** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # updateSkuPrice (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/updateSkuPrice) *** title: updateSkuPrice description: "Update an existing price object." full: true ---------- mutation Requires `commerce.product:write`. Update an existing price object. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuPriceInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `value` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. ## Possible returns * `SKUPrice` `SKUPrice` — Represents the cost of a SKU - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `sku` `SKU` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. - `SKU` `SKU` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use sku instead. # updateSkuPriceCurrencyCode (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/mutations/updateSkuPriceCurrencyCode) *** title: updateSkuPriceCurrencyCode description: "Update the currency code for an existing price. This updates the currency code for both value and compareAtValue." full: true ---------- mutation Requires `commerce.product:write`. Update the currency code for an existing price. This updates the currency code for both value and compareAtValue. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuPriceCurrencyCodeInput!` **required** * `currencyCode` `String!` **required** ## Possible returns * `SKUPrice` `SKUPrice` — Represents the cost of a SKU - `compareAtValue` `SimpleMoney` **nullable** — The compare-at value of the price. - `createdAt` `DateTime!` **non-null** — The timestamp of when the price was created. - `id` `ID!` **non-null** — The globally-unique ID of the price. - `sku` `SKU` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `updatedAt` `DateTime!` **non-null** — The last update timestamp of the price. - `value` `SimpleMoney!` **non-null** — The value of the price. - `SKU` `SKU` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use sku instead. # sku (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/queries/sku) *** title: sku description: "Query `sku` on the catalog subgraph (SKU)." full: true ---------- query Requires `commerce.product:read`. Query `sku` on the catalog subgraph (SKU). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `SKU` `SKU` — A SKU represents a stock keeping unit (SKU) in the catalog. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUAttributesConnection` **nullable** — Attributes are properties or characteristics of the SKU. For example, color or size. - `attributeValues` `SKUAttributeValuesConnection` **nullable** — Attribute values of SKU. - `backorderLimit` `Int` **nullable** — The number of backorders allowed for the SKU. If set to 0, backorders are not allowed. If set to null, backorders are allowed without limit. - `code` `String!` **non-null** — The unique code for the SKU. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The description of the SKU. - `disableInventoryTracking` `Boolean` **nullable** — Flag to mark whether stock should be tracked for the SKU. - `disablePriceOverrides` `Boolean` **nullable** — Flag to mark whether or not a custom price can be provided. - `disableShipping` `Boolean` **nullable** — Flag to mark whether the SKU should be shipped or not. - `eanCode` `String` **nullable** — The EAN code for the SKU. - `gtinCode` `String` **nullable** — The GTIN code for the SKU. - `htmlDescription` `String` **nullable** — HTML description for the SKU. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the SKU. - `inventoryAdjustments` `SKUInventoryAdjustmentsConnection` **nullable** — An immutable entity that represents a change in state of a quantity of SKU at a particular time and location. Each adjustment will either have a positive, negative, or neutral impact on the count of available SKUs in a location. - `inventoryCounts` `SKUInventoryCountsConnection` **nullable** — The quantity of a SKU in a specific state at a particular time and location. - `isbnCode` `String` **nullable** — The ISBN code for the SKU. - `label` `String` **nullable** — The display label of the SKU. - `locations` `SKULocationsConnection` **nullable** — The locations where the SKU is available. - `mediaObjects` `SKUMediaObjectsConnection` **nullable** — Media stored under this SKU. - `metafields` `SKUMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the SKU. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `prices` `SKUPricesConnection` **nullable** — These are all the prices the SKU can be sold at. The price can be different based the channel where it is listed or if there is a promotion running. - `references` `SKUReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroup` `SKUGroup` **nullable** — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `unitCost` `SimpleMoney` **nullable** — The cost of the SKU per unit. This is a money object that includes the value and currency code. - `unitOfWeight` `String` **nullable** — The unit of weight, one of `KG`, `GR`, `LB`, `OZ`. - `upcCode` `String` **nullable** — The UPC code for the SKU. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `weight` `Float` **nullable** — The weight of the SKU. - `cost` `Int` **nullable** deprecated — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the SKU, useful for UI with limited space. Deprecated: Use channel-specific overrides for short labels. - `SKUGroup` `SKUGroup` **nullable** deprecated — A SKU group is a grouping of related SKUs. It provides information about all the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroup instead. # skuPrices (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/queries/skuPrices) *** title: skuPrices description: "Query all SKU prices." full: true ---------- query Requires `commerce.product:read`. Query all SKU prices. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `currencyCode` `CurrencyCodeFilter` **optional** — Filter prices by currency code. * `eq` `String` **optional** — Filters items where the currency code equals the specified 3-letter ISO currency code. * `in` `[String!]` **optional** — Filters items where the currency code matches any of the specified 3-letter ISO currency codes. * `first` `Int` **optional** * `id` `SKUPriceIdsFilter` **optional** * `in` `[String!]` **optional** * `last` `Int` **optional** * `orderBy` `SKUPriceOrderBy` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `skuId` `SKUIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuStatus` `SKUStatusFilter` **optional** — Filter prices by the status of the parent SKU (ACTIVE, DRAFT, ARCHIVED). * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QuerySkuPricesConnection` `QuerySkuPricesConnection` - `edges` `[QuerySkuPricesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # skus (https://developer.godaddy.com/en/docs/references/rest/catalog/sku/queries/skus) *** title: skus description: "Query `skus` on the catalog subgraph (SKU)." full: true ---------- query Requires `commerce.product:read`. Query `skus` on the catalog subgraph (SKU). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `attributeValues` `SKUAttributeValueFilter` **optional** * `has` `[String!]` **optional** * `before` `String` **optional** * `code` `SKUCodeFilter` **optional** * `contains` `String` **optional** — Filters SKUs where the code contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters SKUs where the code matches any of the specified codes. * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `eanCode` `SKUEanCodeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `first` `Int` **optional** * `gtinCode` `SKUGtinCodeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `id` `SKUIdsFilter` **optional** * `in` `[String!]` **optional** * `isbnCode` `SKUIsbnCodeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `label` `LabelFilter` **optional** * `contains` `String` **optional** — Filters items where the label contains the specified string, case-insensitive. * `eq` `String` **optional** * `last` `Int` **optional** * `locationId` `LocationIdFilter` **optional** * `eq` `String` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `SKUOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `label` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `price` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `queryFilter` `String` **optional** — A string filter in the ODATA format. ex: "label eq 'shirt' and contains(code, '123')". Supported columns: `label`, `code` Supported operators: `eq`, `ne`, `lt`, `gt`, `and`, `or` Supported functions: `contains` * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuGroupId` `SKUGroupIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `skuGroupStatus` `SKUGroupStatusFilter` **optional** — Filter SKUs by their SKU group's status. SKUs without a SKU group will be excluded when this filter is present. * `eq` `String` **optional** * `in` `[String!]` **optional** * `status` `SKUStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `upcCode` `SKUUpcCodeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QuerySkusConnection` `QuerySkusConnection` - `edges` `[QuerySkusConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # addChannelsToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/addChannelsToSkuGroup) *** title: addChannelsToSkuGroup description: "Add channels to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add channels to an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddChannelsToSkuGroupInput!` **required** * `channels` `[SKUGroupChannelAddInput!]!` **required** — The channels to add to the SKU group. These are pointers to the Channels API, Catalog API does not create the channel resources. * `channelId` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # addOptionsToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/addOptionsToSkuGroup) *** title: addOptionsToSkuGroup description: "Add options to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add options to an existing SKU group. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddOptionsToSkuGroupInput!` **required** * `optionIds` `[String!]` **optional** — UUIDs of existing options to associate with this SKU group. * `options` `[CreateOptionInput!]` **optional** * `label` `String!` **required** * `type` `String!` **required** — The type of the Option, one of `TEXT`, `NUMBER`, `LIST`. Option Values are only available on the 'LIST' type. * `description` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `validation` `CreateOptionValidationInput` **optional** * `max` `Int` **optional** * `min` `Int` **optional** * `values` `[CreateOptionValueInput!]` **optional** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionValuePriceInput!]` **optional** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # addSkuGroupToLists (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/addSkuGroupToLists) *** title: addSkuGroupToLists description: "Add a single SKU Group to multiple lists" full: true ---------- mutation Requires `commerce.product:write`. Add a single SKU Group to multiple lists ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddSkuGroupToListsInput!` **required** * `listIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # addSkuGroupsToList (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/addSkuGroupsToList) *** title: addSkuGroupsToList description: "Add SKU Groups to an existing list." full: true ---------- mutation Requires `commerce.product:write`. Add SKU Groups to an existing list. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddSkuGroupsToListInput!` **required** * `skuGroupIds` `[String!]!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # addSkusToSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/addSkusToSkuGroup) *** title: addSkusToSkuGroup description: "Add SKUs to an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Add SKUs to an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationAddSkusToSkuGroupInput!` **required** * `skuIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # archiveSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/archiveSkuGroup) *** title: archiveSkuGroup description: "Archive an existing SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Archive an existing SKU Group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `cascadeArchive` `CascadeArchiveInput` **optional** * `skus` `Boolean` **optional** — Whether to cascade archive SKUs when archiving the SKU Group. * `id` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # createSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/createSkuGroup) *** title: createSkuGroup description: "Create a new SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Create a new SKU Group. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateSkuGroupInput!` **required** * `label` `String!` **required** * `type` `String!` **required** * `attributes` `[CreateSKUGroupAttributeInput!]` **optional** * `label` `String!` **required** * `description` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `values` `[AssociateAttributeValueInput!]` **optional** * `label` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `channels` `[SKUGroupChannelAddInput!]` **optional** * `channelId` `String!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `HTMLDescription` `String` **optional** — Deprecated: Use htmlDescription instead. * `mediaObjects` `[CreateMediaObjectInput!]` **optional** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `options` `[CreateOptionInput!]` **optional** * `label` `String!` **required** * `type` `String!` **required** — The type of the Option, one of `TEXT`, `NUMBER`, `LIST`. Option Values are only available on the 'LIST' type. * `description` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `validation` `CreateOptionValidationInput` **optional** * `max` `Int` **optional** * `min` `Int` **optional** * `values` `[CreateOptionValueInput!]` **optional** * `label` `String!` **required** * `metafields` `[CreateMetafieldInput!]` **optional** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `prices` `[CreateOptionValuePriceInput!]` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `shortLabel` `String` **optional** — Deprecated: Use channel-specific overrides for short labels. * `skus` `[CreateSKUGroupSKUInput!]` **optional** * `label` `String!` **required** * `backorderLimit` `Int` **optional** * `code` `String` **optional** * `cost` `Int` **optional** — DEPRECATED. Use unitCost instead. Deprecated: This cost field cannot specify currency code. Use `unitCost` instead. * `description` `String` **optional** * `disableInventoryTracking` `Boolean` **optional** * `disablePriceOverrides` `Boolean` **optional** * `disableShipping` `Boolean` **optional** * `eanCode` `String` **optional** * `gtinCode` `String` **optional** * `htmlDescription` `String` **optional** * `inventoryQuantities` `[CreateSKUInventoryInput!]` **optional** * `locationId` `String!` **required** * `quantity` `Int!` **required** * `isbnCode` `String` **optional** * `mediaObjects` `[CreateMediaObjectInput!]` **optional** * `type` `String!` **required** — The type of the media, one of `IMAGE`, `VIDEO`, `AUDIO`. * `url` `String!` **required** * `label` `String` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `position` `Int` **optional** * `metafields` `[CreateMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Live catalog validation accepts lowercase values such as `boolean`, `string`, `stringMultiLine`, `number`, `numberDecimal`, `date`, `dateTime`, `json`, `measurement`, `url`, `reference`, `money`, `list.string`, `list.number`, `list.numberDecimal`. Uppercase `STRING` is rejected. * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `prices` `[CreateSKUPriceInput!]` **optional** * `value` `SimpleMoneyInput!` **required** * `compareAtValue` `SimpleMoneyInput` **optional** * `references` `[CreateReferenceInput!]` **optional** * `origin` `String!` **required** * `value` `String!` **required** * `shortLabel` `String` **optional** * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. * `unitCost` `SimpleMoneyInput` **optional** * `currencyCode` `String!` **required** * `value` `Float!` **required** — Integer minor units in the smallest currency unit (for USD, cents: `1999` = $19.99). Send `1999`, not `19.99`. * `unitOfWeight` `String` **optional** — The unit of the weight, one of `KG`, `GR`, `LB`, `OZ`. * `upcCode` `String` **optional** * `weight` `Float` **optional** * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # deleteSkuGroupById (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/deleteSkuGroupById) *** title: deleteSkuGroupById description: "WARNING: This mutation hard deletes an existing SKU Group and all its associated records." full: true ---------- mutation Requires `commerce.product:write`. WARNING: This mutation hard deletes an existing SKU Group and all its associated records. Successful deletes return `data.deleteSkuGroupById: null`. The example keeps a selection set. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeChannelsFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeChannelsFromSkuGroup) *** title: removeChannelsFromSkuGroup description: "Remove channel associations from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove channel associations from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveChannelsFromSkuGroupInput!` **required** * `channelIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeMetafieldsFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeMetafieldsFromSkuGroup) *** title: removeMetafieldsFromSkuGroup description: "Remove metafields from an existing SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Remove metafields from an existing SKU Group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveMetafieldsFromSkuGroupInput!` **required** * `metafields` `[RemoveMetafieldInput!]!` **required** * `key` `String!` **required** * `namespace` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeOptionsFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeOptionsFromSkuGroup) *** title: removeOptionsFromSkuGroup description: "Remove Options from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove Options from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveOptionsFromSkuGroupInput!` **required** * `optionIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeSkuGroupFromLists (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeSkuGroupFromLists) *** title: removeSkuGroupFromLists description: "Remove a single SKU Group from multiple lists" full: true ---------- mutation Requires `commerce.product:write`. Remove a single SKU Group from multiple lists ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveSkuGroupFromListsInput!` **required** * `listIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # removeSkuGroupsFromList (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeSkuGroupsFromList) *** title: removeSkuGroupsFromList description: "Remove SKU Groups from an existing list." full: true ---------- mutation Requires `commerce.product:write`. Remove SKU Groups from an existing list. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveSkuGroupsFromListInput!` **required** * `skuGroupIds` `[String!]!` **required** ## Possible returns * `List` `List` — A list is a group of SKU groups that are generally organized by similar characteristics. - `createdAt` `DateTime!` **non-null** — The date and time of when the List was created. - `description` `String` **nullable** — A single-line textual description of the List. - `htmlDescription` `String` **nullable** — HTML description for the List. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the List. - `label` `String` **nullable** — The display label of the List. - `mediaObjects` `ListMediaObjectsConnection` **nullable** — Media can be images, videos, or files - `metafields` `ListMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique name for the List. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `references` `ListReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuGroups` `ListSkuGroupsConnection` **nullable** — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. - `status` `String` **nullable** — The status of the list, one of `ACTIVE`, `DRAFT`, `ARCHIVED`. - `updatedAt` `DateTime!` **non-null** — The date and time of when the List was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the List. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `SKUGroups` `ListSKUGroupsConnection` **nullable** deprecated — A SKU Group is a grouping of related SKUs. It provides information about all of the SKUs that are sold together on storefronts or devices. Deprecated: Use skuGroups instead. # removeSkusFromSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/removeSkusFromSkuGroup) *** title: removeSkusFromSkuGroup description: "Remove SKUs from an existing SKU group." full: true ---------- mutation Requires `commerce.product:write`. Remove SKUs from an existing SKU group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationRemoveSkusFromSkuGroupInput!` **required** * `skuIds` `[String!]!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # setSkuGroupChannelAssociationMode (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/setSkuGroupChannelAssociationMode) *** title: setSkuGroupChannelAssociationMode description: "Set the channel association mode for a SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Set the channel association mode for a SKU Group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** — SKU Group ID * `input` `MutationSetSkuGroupChannelAssociationModeInput!` **required** * `mode` `String!` **required** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # updateSkuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/updateSkuGroup) *** title: updateSkuGroup description: "Update an existing SKU Group." full: true ---------- mutation Requires `commerce.product:write`. Update an existing SKU Group. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuGroupInput!` **required** * `description` `String` **optional** * `htmlDescription` `String` **optional** * `label` `String` **optional** * `metafields` `[UpsertMetafieldInput!]` **optional** * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** * `value` `String!` **required** * `name` `String` **optional** — Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). * `shortLabel` `String` **optional** — Deprecated: Use channel-specific overrides for short labels. * `status` `String` **optional** — The status of the SKU, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # updateSkuGroupOptionPositions (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/mutations/updateSkuGroupOptionPositions) *** title: updateSkuGroupOptionPositions description: "Reorder options within a SKU group by updating the position of each option's association." full: true ---------- mutation Requires `commerce.product:write`. Reorder options within a SKU group by updating the position of each option's association. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** * `input` `MutationUpdateSkuGroupOptionPositionsInput!` **required** * `positions` `[UpdateSKUGroupOptionPositionInput!]!` **required** * `optionId` `String!` **required** * `position` `Int!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # skuGroup (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/queries/skuGroup) *** title: skuGroup description: "Query `skuGroup` on the catalog subgraph (SKU group)." full: true ---------- query Requires `commerce.product:read`. Query `skuGroup` on the catalog subgraph (SKU group). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `String!` **required** ## Possible returns * `SKUGroup` `SKUGroup` - `activatedAt` `DateTime` **nullable** — The timestamp of when the SKU was activated. - `archivedAt` `DateTime` **nullable** — The timestamp of when the SKU was archived. - `attributes` `SKUGroupAttributesConnection` **nullable** — Attributes of SKU Group. - `channelAssociationMode` `String` **nullable** — The channel association mode for this SKU Group. Can be ALL (uses active channels registered to the store) or SELECTIVE (uses custom channel associations). - `channels` `SKUGroupChannelsConnection` **nullable** — An association to a channel that exists in the Channel API. - `compareAtPriceRange` `PriceRange` **nullable** — The compare-at price range of the SKU group, showing min and max compare-at prices of SKUs in the group. - `createdAt` `DateTime!` **non-null** — The timestamp of when the SKU was created. - `description` `String` **nullable** — The merchant defined description of the group. - `htmlDescription` `String` **nullable** — HTML description for the SKU group. Will be used to display rich text content to customers. - `id` `ID!` **non-null** — The globally-unique ID of the group. - `label` `String` **nullable** — The display label of the group. - `lists` `SKUGroupListsConnection` **nullable** — A list is a group of SKU groups that are generally organized by similar characteristics. - `mediaObjects` `SKUGroupMediaObjectsConnection` **nullable** — Media objects stored under the SKU Group. - `metafields` `SKUGroupMetafieldsConnection` **nullable** - `name` `String!` **non-null** — A unique human-friendly identifier for the group. Must be lowercase alphanumeric characters, and may include `-` or `_` (unique where noted). - `options` `SKUGroupOptionsConnection` **nullable** — An option is a add-on that can be added on to a SKU group. - `priceRange` `PriceRange` **nullable** — The price range of the SKU group, showing min and max prices of SKUs in the group. - `references` `SKUGroupReferencesConnection` **nullable** — A reference to the resource in an external service. This can be useful for integrating the resource to any external service. - `skuCount` `Int` **nullable** — The count of all SKUs associated with the SKU Group. Can be filtered by status. The default statuses are ACTIVE and DRAFT. - `skus` `SKUGroupSkusConnection` **nullable** — A SKU represents a stock keeping unit (SKU) in the catalog. - `status` `String!` **non-null** — The status of the SKU Group, one of `DRAFT`, `ACTIVE`, `ARCHIVED`. - `type` `String!` **non-null** — The type of the SKU Group, typically PHYSICAL or DIGITAL, but can also be a custom type. - `updatedAt` `DateTime!` **non-null** — The timestamp of when the SKU was updated. - `HTMLDescription` `String` **nullable** deprecated — HTML description for the SKU group. Will be used to display rich text content to customers. Deprecated: Use htmlDescription instead. - `shortLabel` `String` **nullable** deprecated — A short label for the group. Can be used instead of the label on smaller screens. Deprecated: Use channel-specific overrides for short labels. - `SKUs` `SKUGroupSKUsConnection` **nullable** deprecated — A SKU represents a stock keeping unit (SKU) in the catalog. Deprecated: Use skus instead. # skuGroups (https://developer.godaddy.com/en/docs/references/rest/catalog/sku-group/queries/skuGroups) *** title: skuGroups description: "Query `skuGroups` on the catalog subgraph (SKU group)." full: true ---------- query Requires `commerce.product:read`. Query `skuGroups` on the catalog subgraph (SKU group). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `channelId` `SKUGroupChannelIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `createdAt` `CreatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** * `first` `Int` **optional** * `hasCompareAt` `HasCompareAtFilter` **optional** * `currencyCode` `String!` **required** — The three-letter currency code of prices to match. * `exists` `Boolean!` **required** — When true, returns items with at least one price that has a compareAtValue > 0 (on sale) in the requested currency. When false, returns items that have at least one price in the requested currency but none with a compareAtValue > 0 (available at regular price in that currency). * `hasSKUs` `Boolean` **optional** — When true, returns only SKU groups with at least one SKU. When false, returns only SKU groups with zero SKUs. * `id` `SKUGroupIdsFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `label` `LabelFilter` **optional** * `contains` `String` **optional** — Filters items where the label contains the specified string, case-insensitive. * `eq` `String` **optional** * `last` `Int` **optional** * `listId` `ListIdFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `isNull` `Boolean` **optional** * `name` `NameFilter` **optional** * `contains` `String` **optional** — Filters items where the name contains the specified string, case-insensitive. * `eq` `String` **optional** * `in` `[String!]` **optional** — Filters items where the name matches any of the specified names. * `orderBy` `SKUGroupOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `label` `OrderByDirectionEnum` **optional** * `lowestPrice` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `saleCount` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `paginationType` `PaginationType` **optional** Default: `"CURSOR"`. * `priceRange` `PriceRangeFilter` **optional** * `currencyCode` `String!` **required** — The three-letter currency code of prices to match. * `max` `Float` **optional** — The inclusive maximum integer price value. At least one of min or max is required. * `min` `Float` **optional** — The inclusive minimum integer price value. At least one of min or max is required. * `referenceValue` `ReferenceValueFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `status` `SKUGroupStatusFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `type` `SKUGroupTypeFilter` **optional** * `eq` `String` **optional** * `in` `[String!]` **optional** * `updatedAt` `UpdatedAtFilter` **optional** * `gt` `String` **optional** * `lt` `String` **optional** ## Possible returns * `QuerySkuGroupsConnection` `QuerySkuGroupsConnection` - `edges` `[QuerySkuGroupsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** - `totalCount` `Int!` **non-null** # applyDiscount (https://developer.godaddy.com/en/docs/references/rest/orders/discount/mutations/applyDiscount) *** title: applyDiscount description: "Alias for applyDiscountCodes - Apply a discount to an existing order Deprecated: Use applyDiscountCodes instead. This field will be removed in a future release." full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Alias for applyDiscountCodes - Apply a discount to an existing order Deprecated: Use applyDiscountCodes instead. This field will be removed in a future release. Deprecated: Use applyDiscountCodes instead. This field will be removed in a future release. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `ApplyDiscountCodesInput!` **required** * `discountCodes` `[String!]!` **required** * `orderId` `ID!` **required** — Global ID in format `Order_\` ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # applyDiscountCodes (https://developer.godaddy.com/en/docs/references/rest/orders/discount/mutations/applyDiscountCodes) *** title: applyDiscountCodes description: "Apply a discount to an existing order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Apply a discount to an existing order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `ApplyDiscountCodesInput!` **required** * `discountCodes` `[String!]!` **required** * `orderId` `ID!` **required** — Global ID in format `Order_\` ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # addDraftOrder (https://developer.godaddy.com/en/docs/references/rest/orders/draft-order/mutations/addDraftOrder) *** title: addDraftOrder description: "Create a new draft order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Create a new draft order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `AddDraftOrderInput!` **required** * `context` `OrderContextInput!` **required** * `billing` `OrderBillingInfoInput` **optional** * `canceledAt` `DateTime` **optional** * `cartId` `String` **optional** * `completedAt` `DateTime` **optional** * `customerId` `String` **optional** * `discounts` `[DiscountInput!]` **optional** * `externalId` `String` **optional** * `fees` `[FeeInput!]` **optional** * `fulfilledAt` `DateTime` **optional** * `fulfillmentModes` `[String!]` **optional** — Automatically set based on lineItem fulfillment modes. This field is read-only. * `inventoryAction` `InventoryAction` **optional** * `lineItems` `[CreateDraftLineItemInput!]` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `notes` `[NoteInput!]` **optional** * `number` `String` **optional** * `numberDisplay` `String` **optional** * `paidAt` `DateTime` **optional** * `refundedAt` `DateTime` **optional** * `shipping` `OrderShippingInfoInput` **optional** * `shippingLines` `[ShippingLineInput!]` **optional** * `staffUserIds` `[String!]` **optional** * `tags` `[String!]` **optional** * `taxes` `[OrderTaxInput!]` **optional** * `taxExempted` `Boolean` **optional** * `totals` `OrderTotalsInput` **optional** — Deprecated: Totals are now auto-calculated and should not be manually set * `transactionIds` `[String!]` **optional** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # updateDraftOrder (https://developer.godaddy.com/en/docs/references/rest/orders/draft-order/mutations/updateDraftOrder) *** title: updateDraftOrder description: "Update an existing draft order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Update an existing draft order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `UpdateDraftOrderInput!` **required** * `context` `OrderContextInputUpdate!` **required** * `id` `ID!` **required** * `billing` `OrderBillingInfoInput` **optional** * `cartId` `String` **optional** * `customerId` `String` **optional** * `discounts` `[UpdateDiscountInput!]` **optional** * `externalId` `String` **optional** * `fees` `[UpdateFeeInput!]` **optional** * `fulfillmentModes` `[String!]` **optional** — Automatically set based on lineItem fulfillment modes. This field is read-only. * `lineItems` `UpdateDraftOrderLineItemsInput` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `notes` `[UpdateNoteInput!]` **optional** * `number` `String` **optional** * `shipping` `OrderShippingInfoInput` **optional** * `shippingLines` `[UpdateShippingLineInput!]` **optional** * `staffUserIds` `[String!]` **optional** * `tags` `[String!]` **optional** * `taxes` `[UpdateOrderTaxInput!]` **optional** * `totals` `OrderTotalsInput` **optional** — Deprecated: Totals are now auto-calculated and should not be manually set ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # updateDraftOrderBillingInfo (https://developer.godaddy.com/en/docs/references/rest/orders/draft-order/mutations/updateDraftOrderBillingInfo) *** title: updateDraftOrderBillingInfo description: "Update billing information on an existing draft order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Update billing information on an existing draft order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `orderId` `ID!` **required** * `input` `UpdateDraftOrderBillingInfoInput!` **required** * `address` `OrderAddressInput` **optional** * `companyName` `String` **optional** * `email` `String` **optional** * `firstName` `String` **optional** * `lastName` `String` **optional** * `phone` `String` **optional** ## Possible returns * `ID` `ID` — The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. # addLineItemBySkuId (https://developer.godaddy.com/en/docs/references/rest/orders/line-item/mutations/addLineItemBySkuId) *** title: addLineItemBySkuId description: "Adds a line item from catalog using the skuId" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Adds a line item from catalog using the skuId The SKU must have at least one price. Unpriced SKUs fail with `INTERNAL_SERVER_ERROR`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `AddLineItemInput!` **required** * `fulfillmentMode` `LineItemModeInput!` **required** — Possible fulfillment modes for a line item * `orderId` `ID!` **required** — Global ID in format `Order_\` * `quantity` `Int!` **required** * `skuId` `String!` **required** * `status` `LineItemStatusInput!` **required** — Possible fulfillment statuses for a line item * `details` `AddLineItemDetailsInput` **optional** * `fulfillmentChannelId` `String` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `name` `String` **optional** * `updateQuantity` `Boolean` **optional** — Controls whether the new quantity should be used to replace (true) or sum with the existing line item quantity (false) ## Possible returns * `LineItem` `LineItem` - `createdAt` `DateTime` **nullable** — The datetime when the line item was created in our system - `details` `LineItemDetails` **nullable** - `discounts` `[Discount!]` **nullable** — Discounts for a line item - `externalId` `String` **nullable** — Default value is undefined - `fees` `[Fee!]` **nullable** — Fees for a line item - `fulfilledAt` `DateTime` **nullable** — The datetime when the line item was fulfilled - `fulfillmentChannelId` `String` **nullable** — ID for the channel where the fulfillment of this item will occur - `fulfillmentMode` `LineItemMode` **nullable** — Possible fulfillment modes for a line item - `id` `ID!` **non-null** — Unique identifier for the line item - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to store source data for a line item. For example, a `SERVICE` line item could add the booking details for the line item here - `name` `String` **nullable** — Name of the line item used for display purposes to the merchant and customer - `notes` `[Note!]` **nullable** — Notes for a line item - `orderVersion` `String` **nullable** - `productId` `String` **nullable** — Reference to a Product as defined by the Catalog (v1) service. Can be set to null. - `quantity` `Float` **nullable** — Quantity purchased by the customer. Note this could be a float value (e.g. 2.3 Kgs) - `returnedAt` `DateTime` **nullable** — The datetime when the line item was returned - `returnQuantity` `Float` **nullable** — Quantity of items returned for an order - `returnTotals` `LineItemReturnTotals` **nullable** — Grouped return totals for a line item - `serviceEndsAt` `DateTime` **nullable** — Datetime used to mark the end of service for a STAY or SERVICE line item - `serviceStartAt` `DateTime` **nullable** — Datetime used to mark the start of service for a STAY or SERVICE line item - `shipping` `ShippingInfo` **nullable** — Snapshotted shipping info associated to the line item. If not present, we assume the line item's shipping info is identical to the order's main shipping info - `skuId` `String` **nullable** — Reference to a SKU as defined by the Catalog (v2 or later) service. Can be set to null. - `status` `LineItemStatus` **nullable** — Possible fulfillment statuses for a line item - `tags` `[String!]` **nullable** — Comma delimited string of attributes for a line item. A tag should be an attribute of the line item that does not change - `taxes` `[Tax!]` **nullable** — Taxes for a line item - `totals` `LineItemTotals` **nullable** — Grouped totals for a line item - `type` `LineItemTypes` **nullable** — Type of a line item. - `unitAmount` `Money` **nullable** — Price for each unit. Stored as an integer in the currency's lowest denomination (e.g. cents for USD) - `updatedAt` `DateTime` **nullable** — The datetime when the line item was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for a line item Deprecated: Replaced by the notes array # deleteLineItemById (https://developer.godaddy.com/en/docs/references/rest/orders/line-item/mutations/deleteLineItemById) *** title: deleteLineItemById description: "Removes a line item from a draft order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Removes a line item from a draft order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `orderId` `ID!` **required** * `id` `ID!` **required** ## Possible returns * `Boolean` `Boolean` — The `Boolean` scalar type represents `true` or `false`. # updateLineItemById (https://developer.godaddy.com/en/docs/references/rest/orders/line-item/mutations/updateLineItemById) *** title: updateLineItemById description: "Updates a line item in a draft order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Updates a line item in a draft order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `UpdateLineItemByIdInput!` **required** * `id` `ID!` **required** — Global ID in format `LineItem_\` * `orderId` `ID!` **required** — Global ID in format `Order_\` * `details` `LineItemInputDetailsInfo` **optional** * `discounts` `[DiscountInput!]` **optional** * `externalId` `String` **optional** * `fees` `[FeeInput!]` **optional** * `fulfillmentChannelId` `String` **optional** * `fulfillmentMode` `LineItemModeInput` **optional** — Possible fulfillment modes for a line item * `metafields` `[OrderMetafieldInput!]` **optional** * `name` `String` **optional** * `notes` `[NoteInput!]` **optional** * `productId` `String` **optional** * `quantity` `Float` **optional** * `serviceEndsAt` `DateTime` **optional** * `serviceStartAt` `DateTime` **optional** * `shipping` `LineItemInputShippingInfo` **optional** * `skuId` `String` **optional** — Deprecated: This field is going to be removed. Remove and add a LineItem again instead. * `tags` `[String!]` **optional** * `taxes` `[TaxInput!]` **optional** * `totals` `TotalsInput` **optional** * `type` `LineItemTypesInput` **optional** — Possible types for a line item * `unitAmount` `MoneyInput` **optional** ## Possible returns * `LineItem` `LineItem` - `createdAt` `DateTime` **nullable** — The datetime when the line item was created in our system - `details` `LineItemDetails` **nullable** - `discounts` `[Discount!]` **nullable** — Discounts for a line item - `externalId` `String` **nullable** — Default value is undefined - `fees` `[Fee!]` **nullable** — Fees for a line item - `fulfilledAt` `DateTime` **nullable** — The datetime when the line item was fulfilled - `fulfillmentChannelId` `String` **nullable** — ID for the channel where the fulfillment of this item will occur - `fulfillmentMode` `LineItemMode` **nullable** — Possible fulfillment modes for a line item - `id` `ID!` **non-null** — Unique identifier for the line item - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to store source data for a line item. For example, a `SERVICE` line item could add the booking details for the line item here - `name` `String` **nullable** — Name of the line item used for display purposes to the merchant and customer - `notes` `[Note!]` **nullable** — Notes for a line item - `orderVersion` `String` **nullable** - `productId` `String` **nullable** — Reference to a Product as defined by the Catalog (v1) service. Can be set to null. - `quantity` `Float` **nullable** — Quantity purchased by the customer. Note this could be a float value (e.g. 2.3 Kgs) - `returnedAt` `DateTime` **nullable** — The datetime when the line item was returned - `returnQuantity` `Float` **nullable** — Quantity of items returned for an order - `returnTotals` `LineItemReturnTotals` **nullable** — Grouped return totals for a line item - `serviceEndsAt` `DateTime` **nullable** — Datetime used to mark the end of service for a STAY or SERVICE line item - `serviceStartAt` `DateTime` **nullable** — Datetime used to mark the start of service for a STAY or SERVICE line item - `shipping` `ShippingInfo` **nullable** — Snapshotted shipping info associated to the line item. If not present, we assume the line item's shipping info is identical to the order's main shipping info - `skuId` `String` **nullable** — Reference to a SKU as defined by the Catalog (v2 or later) service. Can be set to null. - `status` `LineItemStatus` **nullable** — Possible fulfillment statuses for a line item - `tags` `[String!]` **nullable** — Comma delimited string of attributes for a line item. A tag should be an attribute of the line item that does not change - `taxes` `[Tax!]` **nullable** — Taxes for a line item - `totals` `LineItemTotals` **nullable** — Grouped totals for a line item - `type` `LineItemTypes` **nullable** — Type of a line item. - `unitAmount` `Money` **nullable** — Price for each unit. Stored as an integer in the currency's lowest denomination (e.g. cents for USD) - `updatedAt` `DateTime` **nullable** — The datetime when the line item was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for a line item Deprecated: Replaced by the notes array # addOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/addOrder) *** title: addOrder description: "Create a new order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Create a new order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `OrderInput!` **required** * `context` `OrderContextInput!` **required** * `lineItems` `[CreateLineItemInput!]!` **required** * `processedAt` `DateTime!` **required** * `statuses` `OrderStatusesInput!` **required** * `totals` `OrderTotalsInput!` **required** * `billing` `OrderBillingInfoInput` **optional** * `canceledAt` `DateTime` **optional** * `cartId` `String` **optional** * `completedAt` `DateTime` **optional** * `customerId` `String` **optional** * `deprecatedNote` `String` **optional** — Deprecated: Replaced by the notes array * `discounts` `[DiscountInput!]` **optional** * `externalId` `String` **optional** * `fees` `[FeeInput!]` **optional** * `fulfilledAt` `DateTime` **optional** * `fulfillmentModes` `[String!]` **optional** — Automatically set based on lineItem fulfillment modes. This field is read-only. * `inventoryAction` `InventoryAction` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `notes` `[NoteInput!]` **optional** * `number` `String` **optional** * `numberDisplay` `String` **optional** * `paidAt` `DateTime` **optional** * `refundedAt` `DateTime` **optional** * `shipping` `OrderShippingInfoInput` **optional** * `shippingLines` `[ShippingLineInput!]` **optional** * `staffUserIds` `[String!]` **optional** * `tags` `[String!]` **optional** * `taxes` `[OrderTaxInput!]` **optional** * `taxExempted` `Boolean` **optional** * `transactionIds` `[String!]` **optional** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # addOrderWithId (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/addOrderWithId) *** title: addOrderWithId description: "Create a new order with a given ID" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Create a new order with a given ID ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `AddOrderWithIdInput!` **required** * `context` `OrderContextInput!` **required** * `id` `ID!` **required** — Global ID in format `Order_\` * `lineItems` `[CreateLineItemInput!]!` **required** * `processedAt` `DateTime!` **required** * `statuses` `OrderStatusesInput!` **required** * `totals` `OrderTotalsInput!` **required** * `billing` `OrderBillingInfoInput` **optional** * `canceledAt` `DateTime` **optional** * `cartId` `String` **optional** * `completedAt` `DateTime` **optional** * `customerId` `String` **optional** * `discounts` `[DiscountInput!]` **optional** * `externalId` `String` **optional** * `fees` `[FeeInput!]` **optional** * `fulfilledAt` `DateTime` **optional** * `fulfillmentModes` `[String!]` **optional** — Automatically set based on lineItem fulfillment modes. This field is read-only. * `inventoryAction` `InventoryAction` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `notes` `[NoteInput!]` **optional** * `number` `String` **optional** * `numberDisplay` `String` **optional** * `paidAt` `DateTime` **optional** * `refundedAt` `DateTime` **optional** * `shipping` `OrderShippingInfoInput` **optional** * `shippingLines` `[ShippingLineInput!]` **optional** * `staffUserIds` `[String!]` **optional** * `tags` `[String!]` **optional** * `taxes` `[OrderTaxInput!]` **optional** * `taxExempted` `Boolean` **optional** * `transactionIds` `[String!]` **optional** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # cancelOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/cancelOrder) *** title: cancelOrder description: "Cancel an existing order. Only an `OPEN` order can be marked as canceled. Set `force: true` to cancel a `COMPLETED` order." full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Cancel an existing order. Only an `OPEN` order can be marked as canceled. Set `force: true` to cancel a `COMPLETED` order. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `force` `Boolean` **optional** Default: `false`. ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # completeOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/completeOrder) *** title: completeOrder description: "Complete an existing order. Only an `OPEN` order can be marked as complete" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Complete an existing order. Only an `OPEN` order can be marked as complete ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # openOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/openOrder) *** title: openOrder description: "Converts an existing DRAFT order to OPEN status. Only a DRAFT order can be converted to OPEN." full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Converts an existing DRAFT order to OPEN status. Only a DRAFT order can be converted to OPEN. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # refundOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/refundOrder) *** title: refundOrder description: "Refund an existing order. Only non-draft orders can be marked as refunded" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Refund an existing order. Only non-draft orders can be marked as refunded ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `RefundOrderInput!` **required** * `orderId` `ID!` **required** — Global ID in format `Order_\` * `refundedAt` `DateTime` **optional** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # resendOrderConfirmation (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/resendOrderConfirmation) *** title: resendOrderConfirmation description: "Resend order confirmation for an existing order." full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Resend order confirmation for an existing order. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # updateOrder (https://developer.godaddy.com/en/docs/references/rest/orders/order/mutations/updateOrder) *** title: updateOrder description: "Update an existing order" full: true ---------- mutation Requires one of `commerce.order:create`, `commerce.order:update`, `commerce.order:cancel`, or `commerce.order:complete` (use the scope that matches the operation). Update an existing order ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `UpdateOrderInput!` **required** * `context` `OrderContextInputUpdate!` **required** * `id` `ID!` **required** * `billing` `OrderBillingInfoInput` **optional** * `canceledAt` `DateTime` **optional** * `completedAt` `DateTime` **optional** * `customerId` `String` **optional** * `deprecatedNote` `String` **optional** — Deprecated: Replaced by the notes array * `discounts` `[UpdateDiscountInput!]` **optional** * `fees` `[UpdateFeeInput!]` **optional** * `fulfilledAt` `DateTime` **optional** * `fulfillmentModes` `[String!]` **optional** — Automatically set based on lineItem fulfillment modes. This field is read-only. * `lineItems` `[UpdateLineItemInput!]` **optional** * `metafields` `[OrderMetafieldInput!]` **optional** * `notes` `[UpdateNoteInput!]` **optional** * `number` `String` **optional** * `numberDisplay` `String` **optional** * `paidAt` `DateTime` **optional** * `processedAt` `DateTime` **optional** * `refundedAt` `DateTime` **optional** * `shipping` `OrderShippingInfoInput` **optional** * `shippingLines` `[UpdateShippingLineInput!]` **optional** * `staffUserIds` `[String!]` **optional** * `statuses` `OrderStatusesInputUpdate` **optional** * `tags` `[String!]` **optional** * `taxes` `[UpdateOrderTaxInput!]` **optional** * `totals` `OrderTotalsInput` **optional** * `transactionIds` `[String!]` **optional** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # archivedOrderById (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/archivedOrderById) *** title: archivedOrderById description: "Deprecated: We no longer archive orders" full: true ---------- query Requires `commerce.order:read`. Deprecated: We no longer archive orders Deprecated: We no longer archive orders ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # archivedOrders (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/archivedOrders) *** title: archivedOrders description: "Deprecated: We no longer archive orders" full: true ---------- query Requires `commerce.order:read`. Deprecated: We no longer archive orders Deprecated: We no longer archive orders ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `sortOrder` `SortOrder` **optional** Default: `"ASC"`. * `before` `ID` **optional** — Look for entries before that cursor * `after` `ID` **optional** — Look for entries after that cursor * `first` `Int` **optional** — Look for the first entries (paginate forward) * `last` `Int` **optional** — Look for the last entries (paginate backward) ## Possible returns * `QueryArchivedOrdersConnection` `QueryArchivedOrdersConnection` - `edges` `[QueryArchivedOrdersConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # archivedOrdersByIds (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/archivedOrdersByIds) *** title: archivedOrdersByIds description: "Deprecated: We no longer archive orders" full: true ---------- query Requires `commerce.order:read`. Deprecated: We no longer archive orders Deprecated: We no longer archive orders ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `ids` `[ID!]!` **required** ## Possible returns * `Order` `[Order!]` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # filterOrders (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/filterOrders) *** title: filterOrders description: "Query `filterOrders` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `filterOrders` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `processedAtStart` `DateTime` **optional** * `processedAtEnd` `DateTime` **optional** * `updatedAtStart` `DateTime` **optional** * `updatedAtEnd` `DateTime` **optional** * `number` `String` **optional** * `status` `[FilterOrdersStatus!]` **optional** * `paymentStatus` `[FilterOrdersPaymentStatus!]` **optional** - `fulfillmentMode` `[FilterOrdersFulfillmentMode!]` **optional** - `channelId` `[String!]` **optional** - `tags` `[String!]` **optional** - `sortBy` `FilterOrdersSortBy` **optional** Default: `"processedAt"`. - `sortOrder` `SortOrder` **optional** Default: `"ASC"`. - `email` `[String!]` **optional** - `name` `String` **optional** - `staffUserIds` `[String!]` **optional** - `externalIdType` `String` **optional** — ExternalId Type. Must be used along with externalIdValue - `externalIdValue` `String` **optional** — ExternalId Value. Must be used along with externalIdType - `customerId` `String` **optional** - `excludeTags` `[String!]` **optional** Default: `["standalone-transaction"]`. — Tags to exclude from the search. - `before` `ID` **optional** — Look for entries before that cursor - `after` `ID` **optional** — Look for entries after that cursor - `first` `Int` **optional** — Look for the first entries (paginate forward) - `last` `Int` **optional** — Look for the last entries (paginate backward) ## Possible returns * `QueryFilterOrdersConnection` `QueryFilterOrdersConnection` - `edges` `[QueryFilterOrdersConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # orderByExternalId (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/orderByExternalId) *** title: orderByExternalId description: "Query `orderByExternalId` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `orderByExternalId` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `externalId` `String!` **required** * `channelId` `String!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # orderById (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/orderById) *** title: orderById description: "Query `orderById` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `orderById` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # orderByNumber (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/orderByNumber) *** title: orderByNumber description: "Query `orderByNumber` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `orderByNumber` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `number` `String!` **required** ## Possible returns * `Order` `Order` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # orders (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/orders) *** title: orders description: "Query `orders` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `orders` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `before` `ID` **optional** — Look for entries before that cursor * `after` `ID` **optional** — Look for entries after that cursor * `first` `Int` **optional** — Look for the first entries (paginate forward) * `last` `Int` **optional** — Look for the last entries (paginate backward) ## Possible returns * `QueryOrdersConnection` `QueryOrdersConnection` - `edges` `[QueryOrdersConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # ordersByIds (https://developer.godaddy.com/en/docs/references/rest/orders/order/queries/ordersByIds) *** title: ordersByIds description: "Query `ordersByIds` on the order subgraph (Order)." full: true ---------- query Requires `commerce.order:read`. Query `ordersByIds` on the order subgraph (Order). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `ids` `[ID!]!` **required** ## Possible returns * `Order` `[Order!]` - `billing` `BillingInfo` **nullable** — Order level billing snapshot information - `canceledAt` `DateTime` **nullable** — The datetime when the order was canceled - `cartId` `String` **nullable** — ID associated with a cart. Used to link orders and carts for Inventory tracking purposes - `completedAt` `DateTime` **nullable** — The datetime when the order was completed - `context` `Context` **nullable** — Context for an order - `createdAt` `DateTime` **nullable** — The datetime when the order was created in our system - `customerId` `String` **nullable** — Reference to a Customer as defined by the Connections service - `discounts` `[Discount!]` **nullable** — Discounts for an order - `externalId` `String` **nullable** — External identifier for the order. If provided, it must be a unique identifier at a channel level - `fees` `[Fee!]` **nullable** — Fees for an order - `fulfilledAt` `DateTime` **nullable** — The datetime when the order was completely fulfilled - `fulfillmentModes` `[String!]` **nullable** — Fulfillment modes for an order - `history` `[OrderHistoryType!]` **nullable** — History for an order - `id` `ID!` **non-null** — An identifier unique to the order node. Auto-generated by the service on the fly - `inventoryAction` `InventoryAction` **nullable** — Controls inventory adjustment behavior for this order - `lineItems` `[LineItem!]` **nullable** — Line items for an order - `links` `[Links!]` **nullable** — A request-related [HATEOAS link](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02). - `metafields` `[OrderMetafield!]` **nullable** — Metafields that allow clients to specify more information about the order. Attributes present in this object will not map across all channels - `notes` `[Note!]` **nullable** — Notes for an order - `number` `String` **nullable** — An identifier unique to the order. The `number` field can be used to map an existing order to an order in the Order Service. Null until the order is assigned a number (for example, DRAFT orders). - `numberDisplay` `String` **nullable** — A human readable order number handed out to customers. Used for any communications with the customer (e.g. emails, SMS, or invoices). If not provided on creation, it will match the `number` attribute - `paidAt` `DateTime` **nullable** — The datetime when the order was completely paid - `processedAt` `DateTime` **nullable** — The datetime when the order was processed. If you are importing orders from an app or another platform, then you can set `processedAt` to a datetime in the past to match when the original order was created - `refundedAt` `DateTime` **nullable** — The datetime when the order was completely refunded - `returnTotals` `OrderReturnTotals` **nullable** — Grouped totals for an order return - `shipping` `ShippingInfo` **nullable** — Order level shipping snapshot information - `shippingLines` `[ShippingLine!]` **nullable** — Shipping lines for an order - `staffUserIds` `[String!]` **nullable** — Staff users associated with the Order - `statuses` `OrderStatuses` **nullable** — Current fulfillment status, payment status, and main status for the order - `tags` `[String!]` **nullable** — Comma delimited string of tags for an order. A tag should be an attribute of the order that does not change - `taxes` `[OrderTax!]` **nullable** — Taxes for an order - `taxExempted` `Boolean` **nullable** — Details whether the order is tax exempt - `totals` `OrderTotals` **nullable** — Grouped totals for an order - `transactionIds` `[String!]` **nullable** — Transactions as defined by the Transaction Service associated with the Order - `updatedAt` `DateTime` **nullable** — The datetime when the order was last updated in our system - `deprecatedNote` `String` **nullable** deprecated — Merchant note for an Order Deprecated: Replaced by the notes array # addListsToClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/addListsToClassification) *** title: addListsToClassification description: "Add existing lists to an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Add existing lists to an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the lists should be added. * `input` `MutationAddListsToClassificationInput!` **required** * `listIds` `[ID!]!` **required** — The IDs of the lists to be added to the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # addRatesToClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/addRatesToClassification) *** title: addRatesToClassification description: "Add existing rates to an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Add existing rates to an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the rates should be added. * `input` `MutationAddRatesToClassificationInput!` **required** * `rateIds` `[ID!]!` **required** — The IDs of the rates to be added to the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # addSkusGroupsToClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/addSkusGroupsToClassification) *** title: addSkusGroupsToClassification description: "Add existing SKU groups to an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Add existing SKU groups to an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the SKU groups should be added. * `input` `MutationAddSkusGroupsToClassificationInput!` **required** * `skuGroupIds` `[ID!]!` **required** — The IDs of the SKU groups to be added to the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # addSkusToClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/addSkusToClassification) *** title: addSkusToClassification description: "Add existing SKUs to an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Add existing SKUs to an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the SKUs should be added. * `input` `MutationAddSkusToClassificationInput!` **required** * `skuIds` `[ID!]!` **required** — The IDs of the SKUs to be added to the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # createClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/createClassification) *** title: createClassification description: "Create a new classification." full: true ---------- mutation Requires `commerce.tax:create`. Create a new classification. `metafields` and `references` are optional — omit them. If you send `metafields`, the array must be nonempty; `[]` is rejected. Prefer `type: "string"` (lowercase). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateClassificationInput!` **required** * `label` `String!` **required** — A label for display. * `description` `String` **optional** — A human-friendly description. * `metafields` `[CreateMetafieldInput!]` **optional** — Any metafields to be created and assigned to the new classification. * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Prefer lowercase values such as `string`. Catalog rejects uppercase `STRING`; Tax currently accepts both. * `value` `String!` **required** * `name` `String` **optional** — A unique human-friendly identifier. If omitted, a name will be generated from the `label` value. * `references` `[CreateReferenceInput!]` **optional** — Any references to be created and assigned to the new classification. * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # createReferencesForClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/createReferencesForClassification) *** title: createReferencesForClassification description: "Create references for an existing classification." full: true ---------- mutation Requires `commerce.tax:create`. Create references for an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the classification for which the references should be created. * `input` `MutationCreateReferencesForClassificationInput!` **required** * `references` `[CreateReferenceInput!]!` **required** — The references to be created for the classification. * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # deleteClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/deleteClassification) *** title: deleteClassification description: "Delete an existing classification." full: true ---------- mutation Requires `commerce.tax:delete`. Delete an existing classification. Returns the deleted `Classification`. Selecting no subfields is a GraphQL validation error. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the classification to be deleted. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # deleteReferencesFromClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/deleteReferencesFromClassification) *** title: deleteReferencesFromClassification description: "Delete references from an existing classification." full: true ---------- mutation Requires `commerce.tax:delete`. Delete references from an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the classification for which the references should be deleted. * `input` `MutationDeleteReferencesFromClassificationInput!` **required** * `referenceIds` `[ID!]!` **required** — The IDs of the references to be deleted from the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # removeListsFromClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/removeListsFromClassification) *** title: removeListsFromClassification description: "Remove existing lists from an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing lists from an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the lists should be removed. * `input` `MutationRemoveListsFromClassificationInput!` **required** * `listIds` `[ID!]!` **required** — The IDs of the lists to be removed from the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # removeRatesFromClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/removeRatesFromClassification) *** title: removeRatesFromClassification description: "Remove existing rates from an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing rates from an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the rates should be removed. * `input` `MutationRemoveRatesFromClassificationInput!` **required** * `rateIds` `[ID!]!` **required** — The IDs of the rates to be removed from the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # removeSkusFromClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/removeSkusFromClassification) *** title: removeSkusFromClassification description: "Remove existing SKUs from an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing SKUs from an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the SKUs should be removed. * `input` `MutationRemoveSkusFromClassificationInput!` **required** * `skuIds` `[ID!]!` **required** — The IDs of the SKUs to be removed from the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # removeSkusGroupsFromClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/removeSkusGroupsFromClassification) *** title: removeSkusGroupsFromClassification description: "Remove existing SKU groups from an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing SKU groups from an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `classificationId` `ID!` **required** — The ID of the classification to which the SKU groups should be added. * `input` `MutationRemoveSkusGroupsFromClassificationInput!` **required** * `skuGroupIds` `[ID!]!` **required** — The IDs of the SKU groups to be removed from the classification. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # updateClassification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/mutations/updateClassification) *** title: updateClassification description: "Update an existing classification." full: true ---------- mutation Requires `commerce.tax:write`. Update an existing classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the classification to be updated. * `input` `MutationUpdateClassificationInput!` **required** * `description` `String` **optional** — A human-friendly description. * `label` `String` **optional** — A label for display. * `name` `String` **optional** — A unique human-friendly identifier. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # classification (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/queries/classification) *** title: classification description: "Get a single classification." full: true ---------- query Requires `commerce.tax:read`. Get a single classification. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The classification ID. ## Possible returns * `Classification` `Classification` — A grouping of rates that share common taxation criteria. - `createdAt` `DateTime!` **non-null** — The data & time at which the classification was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `ClassificationListsConnection` **nullable** — The catalog lists to which the classification applies. - `metafields` `ClassificationMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `ClassificationRatesConnection` **nullable** — The rates associated with the classification. - `references` `ClassificationReferencesConnection` **nullable** — A reference to the resource in an external service. - `skuGroups` `ClassificationSkuGroupsConnection` **nullable** — The catalog SKU groups to which the classification applies. - `skus` `ClassificationSkusConnection` **nullable** — The catalog SKUs to which the classification applies. - `updatedAt` `DateTime!` **non-null** — The data & time at which the classification was last updated. # classifications (https://developer.godaddy.com/en/docs/references/rest/taxes/classification/queries/classifications) *** title: classifications description: "Get a collection of classifications." full: true ---------- query Requires `commerce.tax:read`. Get a collection of classifications. `orderBy` is one key only (`id`, `name`, `createdAt`, or `updatedAt`). Direction must be `ASC` or `DESC`. Sending two keys, or `"desc"`, fails validation. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `first` `Int` **optional** * `id` `ClassificationIdFilter` **optional** * `in` `[ID!]` **optional** * `last` `Int` **optional** * `orderBy` `ClassificationOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** ## Possible returns * `QueryClassificationsConnection` `QueryClassificationsConnection` - `edges` `[QueryClassificationsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # createJurisdiction (https://developer.godaddy.com/en/docs/references/rest/taxes/jurisdiction/mutations/createJurisdiction) *** title: createJurisdiction description: "Create a new jurisdiction." full: true ---------- mutation Requires `commerce.tax:create`. Create a new jurisdiction. `metafields` is optional — omit it. If you send it, the array must be nonempty; `[]` is rejected. Prefer `type: "string"` (lowercase). ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateJurisdictionInput!` **required** * `countryCode` `String!` **required** — The [two-character ISO 3166-1 code](https://en.wikipedia.org/wiki/ISO_3166-1) that identifies the country or region. * `adminArea1` `String` **optional** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision; formatted for postal delivery. * `adminArea2` `String` **optional** — The city, town, or village. Smaller than `adminArea1`. * `adminArea3` `String` **optional** — The sub-locality, suburb, neighborhood, or district. Smaller than `adminArea2`. * `adminArea4` `String` **optional** — The neighborhood, ward, or district. Smaller than `adminArea3`. * `metafields` `[CreateMetafieldInput!]` **optional** — Any metafields to be created and assigned to the new jurisdiction. * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Prefer lowercase values such as `string`. Catalog rejects uppercase `STRING`; Tax currently accepts both. * `value` `String!` **required** * `postalCode` `String` **optional** — The postal code, which is the zip code or equivalent. ## Possible returns * `Jurisdiction` `Jurisdiction` — A geographic area or "zone" in which a rate or set of rates applies. - `adminArea1` `String` **nullable** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. - `adminArea2` `String` **nullable** — The city, town, or village. - `adminArea3` `String` **nullable** — The sub-locality, suburb, neighborhood, or district. - `adminArea4` `String` **nullable** — The neighborhood, ward, or district. - `countryCode` `String!` **non-null** — The country code of the address. - `createdAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was created. - `id` `ID!` **non-null** — The globally-unique ID. - `metafields` `JurisdictionMetafieldsConnection` **nullable** - `postalCode` `String` **nullable** — The postal code of the address. - `rates` `JurisdictionRatesConnection` **nullable** — The rates associated with the jurisdiction. - `updatedAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was last updated. # deleteJurisdiction (https://developer.godaddy.com/en/docs/references/rest/taxes/jurisdiction/mutations/deleteJurisdiction) *** title: deleteJurisdiction description: "Delete an existing jurisdiction." full: true ---------- mutation Requires `commerce.tax:delete`. Delete an existing jurisdiction. Returns the deleted `Jurisdiction`. Selecting no subfields is a GraphQL validation error. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the jurisdiction to be deleted. ## Possible returns * `Jurisdiction` `Jurisdiction` — A geographic area or "zone" in which a rate or set of rates applies. - `adminArea1` `String` **nullable** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. - `adminArea2` `String` **nullable** — The city, town, or village. - `adminArea3` `String` **nullable** — The sub-locality, suburb, neighborhood, or district. - `adminArea4` `String` **nullable** — The neighborhood, ward, or district. - `countryCode` `String!` **non-null** — The country code of the address. - `createdAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was created. - `id` `ID!` **non-null** — The globally-unique ID. - `metafields` `JurisdictionMetafieldsConnection` **nullable** - `postalCode` `String` **nullable** — The postal code of the address. - `rates` `JurisdictionRatesConnection` **nullable** — The rates associated with the jurisdiction. - `updatedAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was last updated. # updateJurisdiction (https://developer.godaddy.com/en/docs/references/rest/taxes/jurisdiction/mutations/updateJurisdiction) *** title: updateJurisdiction description: "Update an existing jurisdiction." full: true ---------- mutation Requires `commerce.tax:write`. Update an existing jurisdiction. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The ID of the jurisdiction to be updated. * `input` `MutationUpdateJurisdictionInput!` **required** * `adminArea1` `String` **optional** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision; formatted for postal delivery. * `adminArea2` `String` **optional** — The city, town, or village. Smaller than `adminArea1`. * `adminArea3` `String` **optional** — The sub-locality, suburb, neighborhood, or district. Smaller than `adminArea2`. * `adminArea4` `String` **optional** — The neighborhood, ward, or district. Smaller than `adminArea3`. * `countryCode` `String` **optional** — The [two-character ISO 3166-1 code](https://en.wikipedia.org/wiki/ISO_3166-1) that identifies the country or region. * `postalCode` `String` **optional** — The postal code, which is the zip code or equivalent. ## Possible returns * `Jurisdiction` `Jurisdiction` — A geographic area or "zone" in which a rate or set of rates applies. - `adminArea1` `String` **nullable** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. - `adminArea2` `String` **nullable** — The city, town, or village. - `adminArea3` `String` **nullable** — The sub-locality, suburb, neighborhood, or district. - `adminArea4` `String` **nullable** — The neighborhood, ward, or district. - `countryCode` `String!` **non-null** — The country code of the address. - `createdAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was created. - `id` `ID!` **non-null** — The globally-unique ID. - `metafields` `JurisdictionMetafieldsConnection` **nullable** - `postalCode` `String` **nullable** — The postal code of the address. - `rates` `JurisdictionRatesConnection` **nullable** — The rates associated with the jurisdiction. - `updatedAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was last updated. # jurisdiction (https://developer.godaddy.com/en/docs/references/rest/taxes/jurisdiction/queries/jurisdiction) *** title: jurisdiction description: "Get a single jurisdiction." full: true ---------- query Requires `commerce.tax:read`. Get a single jurisdiction. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The jurisdiction ID. ## Possible returns * `Jurisdiction` `Jurisdiction` — A geographic area or "zone" in which a rate or set of rates applies. - `adminArea1` `String` **nullable** — The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. - `adminArea2` `String` **nullable** — The city, town, or village. - `adminArea3` `String` **nullable** — The sub-locality, suburb, neighborhood, or district. - `adminArea4` `String` **nullable** — The neighborhood, ward, or district. - `countryCode` `String!` **non-null** — The country code of the address. - `createdAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was created. - `id` `ID!` **non-null** — The globally-unique ID. - `metafields` `JurisdictionMetafieldsConnection` **nullable** - `postalCode` `String` **nullable** — The postal code of the address. - `rates` `JurisdictionRatesConnection` **nullable** — The rates associated with the jurisdiction. - `updatedAt` `DateTime!` **non-null** — The data & time at which the jurisdiction was last updated. # jurisdictions (https://developer.godaddy.com/en/docs/references/rest/taxes/jurisdiction/queries/jurisdictions) *** title: jurisdictions description: "Get a collection of jurisdictions." full: true ---------- query Requires `commerce.tax:read`. Get a collection of jurisdictions. `orderBy` is one key only (`id`, `createdAt`, or `updatedAt` — no `name`). Direction must be `ASC` or `DESC`. Sending two keys, or `"desc"`, fails validation. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `first` `Int` **optional** * `id` `JurisdictionIdFilter` **optional** * `in` `[ID!]` **optional** * `last` `Int` **optional** * `orderBy` `JurisdictionOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** ## Possible returns * `QueryJurisdictionsConnection` `QueryJurisdictionsConnection` - `edges` `[QueryJurisdictionsConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # activateOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/activateOverride) *** title: activateOverride description: "Activate an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Activate an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # addListsToOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/addListsToOverride) *** title: addListsToOverride description: "Add existing lists to an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Add existing lists to an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationAddListsToOverrideInput!` **required** * `listIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # addRatesToOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/addRatesToOverride) *** title: addRatesToOverride description: "Add existing rates to an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Add existing rates to an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationAddRatesToOverrideInput!` **required** * `rateIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # addSkuGroupsToOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/addSkuGroupsToOverride) *** title: addSkuGroupsToOverride description: "Add existing SKU groups to an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Add existing SKU groups to an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationAddSkuGroupsToOverrideInput!` **required** * `skuGroupIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # addSkusToOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/addSkusToOverride) *** title: addSkusToOverride description: "Add existing SKUs to an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Add existing SKUs to an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationAddSkusToOverrideInput!` **required** * `skuIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # createOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/createOverride) *** title: createOverride description: "Create a new override." full: true ---------- mutation Requires `commerce.tax:create`. Create a new override. `metafields` and `references` are optional — omit them. If you send `metafields`, the array must be nonempty; `[]` is rejected. Prefer `type: "string"` (lowercase). For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateOverrideInput!` **required** * `label` `String!` **required** — A label for display. * `createdAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. * `customRate` `OverrideCustomRateCreateInput` **optional** — A custom rate to be applied by the override. * `value` `RateValueInput!` **required** — The custom rate's value. * `calculationMethod` `OverrideCalculationMethodEnum` **optional** — The method to be used when applying the custom rate to a purchase amount. * `description` `String` **optional** — A human-friendly description. * `metafields` `[CreateMetafieldInput!]` **optional** — Any metafields to be created and assigned to the new override. * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Prefer lowercase values such as `string`. Catalog rejects uppercase `STRING`; Tax currently accepts both. * `value` `String!` **required** * `name` `String` **optional** — A unique human-friendly identifier. If omitted, a name will be generated from the `label` value. * `references` `[CreateReferenceInput!]` **optional** — Any references to be created and assigned to the new override. * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. * `status` `OverrideStatusEnum` **optional** — The desired status. * `targetRateId` `ID` **optional** — The ID of the target rate that this override references. * `updatedAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # createReferencesForOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/createReferencesForOverride) *** title: createReferencesForOverride description: "Create references for an existing override." full: true ---------- mutation Requires `commerce.tax:create`. Create references for an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationCreateReferencesForOverrideInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # deactivateOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/deactivateOverride) *** title: deactivateOverride description: "Deactivate an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Deactivate an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # deleteOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/deleteOverride) *** title: deleteOverride description: "Delete an existing override." full: true ---------- mutation Requires `commerce.tax:delete`. Delete an existing override. Returns the deleted `Override`. Selecting no subfields is a GraphQL validation error. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # deleteReferencesFromOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/deleteReferencesFromOverride) *** title: deleteReferencesFromOverride description: "Delete references from an existing override." full: true ---------- mutation Requires `commerce.tax:delete`. Delete references from an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationDeleteReferencesFromOverrideInput!` **required** * `referenceIds` `[ID!]!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # removeListsFromOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/removeListsFromOverride) *** title: removeListsFromOverride description: "Remove existing lists from an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing lists from an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationRemoveListsFromOverrideInput!` **required** * `listIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # removeRatesFromOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/removeRatesFromOverride) *** title: removeRatesFromOverride description: "Remove existing rates from an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing rates from an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationRemoveRatesFromOverrideInput!` **required** * `rateIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # removeSkusFromOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/removeSkusFromOverride) *** title: removeSkusFromOverride description: "Remove existing SKUs from an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing SKUs from an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationRemoveSkusFromOverrideInput!` **required** * `skuIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # removeSkusGroupsFromOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/removeSkusGroupsFromOverride) *** title: removeSkusGroupsFromOverride description: "Remove existing SKU groups from an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Remove existing SKU groups from an existing override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationRemoveSkusGroupsFromOverrideInput!` **required** * `skuGroupIds` `[ID!]!` **required** * `overrideId` `ID!` **required** ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # updateOverride (https://developer.godaddy.com/en/docs/references/rest/taxes/override/mutations/updateOverride) *** title: updateOverride description: "Update an existing override." full: true ---------- mutation Requires `commerce.tax:write`. Update an existing override. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationUpdateOverrideInput!` **required** * `createdAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. * `customRate` `OverrideCustomRateUpdateInput` **optional** — A custom rate to be applied by the override. * `value` `RateValueInput!` **required** — The custom rate's value. * `calculationMethod` `OverrideCalculationMethodEnum` **optional** — The method to be used when applying the custom rate to a purchase amount. * `description` `String` **optional** — A human-friendly description. * `label` `String` **optional** — A label for display. * `name` `String` **optional** — A unique human-friendly identifier. * `status` `OverrideStatusEnum` **optional** — The desired status. * `targetRateId` `ID` **optional** — The ID of the target rate that this override references. * `updatedAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # activateRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/activateRate) *** title: activateRate description: "Activate an existing rate." full: true ---------- mutation Requires `commerce.tax:write`. Activate an existing rate. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # createRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/createRate) *** title: createRate description: "Create a new rate." full: true ---------- mutation Requires `commerce.tax:create`. Create a new rate. `value` is a union. Select `value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } }`. There is no `value { rate }` field. `metafields` and `references` are optional — omit them. If you send `metafields`, the array must be nonempty; `[]` is rejected. Prefer `type: "string"` (lowercase). For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `input` `MutationCreateRateInput!` **required** * `label` `String!` **required** — A label for display. * `value` `RateValueInput!` **required** — The rate's value. Set `percentage` or `amount`, not both. For `amount.value` use integer minor units. * `amount` `SimpleMoneyInput` **optional** — The rate value represented as a fixed money amount. Required if `percentage` is not provided. * `percentage` `String` **optional** — The percentage applied by the rate, out of 100. Required if `amount` is not provided. * `calculationMethod` `RateCalculationMethodEnum` **optional** — The method to be used when applying the rate to a purchase amount. * `createdAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. * `description` `String` **optional** — A human-friendly description. * `jurisdictionId` `ID` **optional** — The ID of the jurisdiction in which this rate applies. * `metafields` `[CreateMetafieldInput!]` **optional** — Any metafields to be created and assigned to the new rate. * `key` `String!` **required** * `namespace` `String!` **required** * `type` `String!` **required** — Metafield value type. Prefer lowercase values such as `string`. Catalog rejects uppercase `STRING`; Tax currently accepts both. * `value` `String!` **required** * `name` `String` **optional** — A unique human-friendly identifier. If omitted, a name will be generated from the `label` value. * `references` `[CreateReferenceInput!]` **optional** — Any references to be created and assigned to the new rate. * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. * `status` `RateStatusEnum` **optional** — The desired status. * `updatedAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # createReferencesForRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/createReferencesForRate) *** title: createReferencesForRate description: "Create references for an existing rate." full: true ---------- mutation Requires `commerce.tax:create`. Create references for an existing rate. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationCreateReferencesForRateInput!` **required** * `references` `[CreateReferenceInput!]!` **required** * `origin` `String!` **required** — The origin of the reference. * `value` `String!` **required** — The value of the reference. ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # deactivateRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/deactivateRate) *** title: deactivateRate description: "Deactivate an existing rate." full: true ---------- mutation Requires `commerce.tax:write`. Deactivate an existing rate. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # deleteRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/deleteRate) *** title: deleteRate description: "Delete an existing rate." full: true ---------- mutation Requires `commerce.tax:delete`. Delete an existing rate. Returns the deleted `Rate`. Selecting no subfields is a GraphQL validation error. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # deleteReferencesFromRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/deleteReferencesFromRate) *** title: deleteReferencesFromRate description: "Delete references from an existing rate." full: true ---------- mutation Requires `commerce.tax:delete`. Delete references from an existing rate. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationDeleteReferencesFromRateInput!` **required** * `referenceIds` `[ID!]!` **required** ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # updateRate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/mutations/updateRate) *** title: updateRate description: "Update an existing rate." full: true ---------- mutation Requires `commerce.tax:write`. Update an existing rate. For `SimpleMoneyInput.value`, send `1999` for $19.99 USD, not `19.99`. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** * `input` `MutationUpdateRateInput!` **required** * `calculationMethod` `RateCalculationMethodEnum` **optional** — The method to be used when applying the rate to a purchase amount. * `createdAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. * `description` `String` **optional** — A human-friendly description. * `jurisdictionId` `ID` **optional** — The ID of the jurisdiction in which this rate applies. * `label` `String` **optional** — A label for display. * `name` `String` **optional** — A unique human-friendly identifier. * `status` `RateStatusEnum` **optional** — The desired status. * `updatedAt` `DateTime` **optional** — WARNING: DO NOT USE. Deprecated: This field is deprecated and only used for Tax v1 to v2 migration syncs. * `value` `RateValueInput` **optional** — The rate's value. * `amount` `SimpleMoneyInput` **optional** — The rate value represented as a fixed money amount. Required if `percentage` is not provided. * `percentage` `String` **optional** — The percentage applied by the rate, out of 100. Required if `amount` is not provided. ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # rate (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/queries/rate) *** title: rate description: "Get a single rate." full: true ---------- query Requires `commerce.tax:read`. Get a single rate. `value` is a union. Select `value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } }`. There is no `value { rate }` field. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The rate ID. ## Possible returns * `Rate` `Rate` — An individual tax rate. - `activatedAt` `DateTime` **nullable** — The data & time at which the rate was first activated. - `calculationMethod` `RateCalculationMethodEnum!` **non-null** — The method to be used when applying the rate to a purchase amount. - `classifications` `RateClassificationsConnection` **nullable** — The classifications associated with the rate. - `createdAt` `DateTime!` **non-null** — The data & time at which the rate was created. - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `jurisdiction` `Jurisdiction` **nullable** — The jurisdiction in which this rate applies. - `label` `String!` **non-null** — The label for display. - `metafields` `RateMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `references` `RateReferencesConnection` **nullable** — A reference to the resource in an external service. - `status` `RateStatusEnum!` **non-null** — The current status. - `updatedAt` `DateTime!` **non-null** — The data & time at which the rate was last updated. - `value` `RateValue!` **non-null** — The rate's value # rates (https://developer.godaddy.com/en/docs/references/rest/taxes/rate/queries/rates) *** title: rates description: "Get a collection of rates." full: true ---------- query Requires `commerce.tax:read`. Get a collection of rates. `orderBy` is one key only (`id`, `name`, `createdAt`, or `updatedAt`). Direction must be `ASC` or `DESC`. Sending two keys, or `"desc"`, fails validation. `value` is a union. Select `value { __typename ... on RatePercentage { percentage } ... on RateAmount { amount { value currencyCode } } }`. There is no `value { rate }` field. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `first` `Int` **optional** * `id` `RateIdFilter` **optional** * `in` `[ID!]` **optional** * `last` `Int` **optional** * `orderBy` `RateOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `name` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `referenceValue` `ReferenceValueFilter` **optional** * `in` `[String!]` **optional** * `status` `RateStatusFilter` **optional** * `eq` `RateStatusEnum` **optional** * `in` `[RateStatusEnum!]` **optional** ## Possible returns * `QueryRatesConnection` `QueryRatesConnection` - `edges` `[QueryRatesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null** # override (https://developer.godaddy.com/en/docs/references/rest/taxes/override/queries/override) *** title: override description: "Get a single override." full: true ---------- query Requires `commerce.tax:read`. Get a single override. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `id` `ID!` **required** — The override ID. ## Possible returns * `Override` `Override` — A rule to override any other taxation criteria for the associated skus, groups, or lists. - `activatedAt` `DateTime` **nullable** — The data & time at which the override was last activated. - `createdAt` `DateTime!` **non-null** — The data & time at which the override was created. - `customRate` `OverrideCustomRate` **nullable** - `description` `String` **nullable** — The human-friendly description. - `id` `ID!` **non-null** — The globally-unique ID. - `label` `String!` **non-null** — The label for display. - `lists` `OverrideListsConnection` **nullable** — The catalog lists to which the override applies. - `metafields` `OverrideMetafieldsConnection` **nullable** - `name` `String!` **non-null** — The unique human-friendly identifier. - `rates` `OverrideRatesConnection` **nullable** — The rates associated with the override. - `references` `OverrideReferencesConnection` **nullable** — A reference to a resource in an external service. - `skuGroups` `OverrideSkuGroupsConnection` **nullable** — The catalog SKU groups to which the override applies. - `skus` `OverrideSkusConnection` **nullable** — The catalog SKUs to which the override applies. - `status` `OverrideStatusEnum!` **non-null** — The current status. - `targetRate` `Rate` **nullable** — The rate that this override targets. - `updatedAt` `DateTime!` **non-null** — The data & time at which the override was last updated. # overrides (https://developer.godaddy.com/en/docs/references/rest/taxes/override/queries/overrides) *** title: overrides description: "Get a collection of overrides." full: true ---------- query Requires `commerce.tax:read`. Get a collection of overrides. `orderBy` is one key only (`id`, `createdAt`, or `updatedAt` — no `name`). Direction must be `ASC` or `DESC`. Sending two keys, or `"desc"`, fails validation. ## Required headers | Header | Required | Description | | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `x-store-id` | Yes | ID of the store the operation targets. Omitting it returns HTTP 200 with a GraphQL error: `extensions.code: "UNAUTHENTICATED"`. | Go to [Authentication](https://developer.godaddy.com/docs/api-users/auth) for credential setup. ## Arguments * `after` `String` **optional** * `before` `String` **optional** * `first` `Int` **optional** * `id` `OverrideIdFilter` **optional** * `in` `[ID!]` **optional** * `last` `Int` **optional** * `orderBy` `OverrideOrderBy` **optional** * `createdAt` `OrderByDirectionEnum` **optional** * `id` `OrderByDirectionEnum` **optional** * `updatedAt` `OrderByDirectionEnum` **optional** * `referenceValue` `ReferenceValueFilter` **optional** * `in` `[String!]` **optional** ## Possible returns * `QueryOverridesConnection` `QueryOverridesConnection` - `edges` `[QueryOverridesConnectionEdge]` **nullable** - `pageInfo` `PageInfo!` **non-null**