Domains overview

The Storefront API lets you manage your customers' domain portfolio programmatically without needing to log in to Storefront Manager. This is useful if you have your own platform or control panel and want to automate renewals, run bulk operations across a portfolio, or keep domain data in sync with your own systems.

📘

Shopco nameservers required for DNS management

DNS template and DNS record management only work for domains using Storefront's default Shopco nameservers (a.ns.shopco.com, b.ns.shopco.com, c.ns.shopco.com). Domains using custom nameservers manage their own DNS outside of Storefront — see Nameservers below.

Domain object reference

A domain object returned by the API includes:

FieldDescription
nameThe domain name
registration_dateRegistration date (null for some states)
expiry_dateCurrent expiry date
statusOne of active, renewing, expiring, expired, redemption, suspended, verifying
has_whois_privacyWHOIS privacy state. null if the TLD doesn't support it
is_lock_enableRegistrar lock state. null if the TLD doesn't support it
is_auto_renewAuto-renew state. null if the TLD doesn't support it
managed_dnsWhether DNS is served by Storefront (manageable via the DNS endpoints)
domain_auth_infoTransfer auth code, where the TLD uses one
tld_supports_* flagsWhich settings this domain's TLD actually allows — check before calling an endpoint that would otherwise be rejected
tld_dataTLD-specific registrant data where applicable (e.g. .se/.be registration numbers)
customerThe owning customer (id, email, username, name, status)

Settings a TLD doesn't support come back as null rather than false. Requesting a domain outside your account returns 403 (belongs to another reseller) or 404 (not in your storefront). Domains mid-transfer-in aren't visible until the transfer completes.

WHOIS contacts

Retrieve or update the registrant, admin, tech, and billing contacts for a domain. registrant is always present; the other three are omitted (not null) when the registry doesn't hold a separate contact for that role. Registrant records for some TLDs carry extra required fields (for example a Swedish organization number for .se) — only the fields that apply to this domain's TLD are returned.

Updating the registrant is validated at the registry level; a rejection returns an error with the reason. Some TLDs treat a registrant change as a trade requiring approval, so the change may not be visible immediately.

Nameservers and DNS template

Two related but distinct capabilities:

  • DNS template assignment records which of your DNS zone templates a domain should follow. It doesn't rewrite the zone by itself — applying it requires a separate reset call. Assigning an invalid template returns an error, and null removes the association.
  • Nameservers are the domain's actual delegation, read live from the registry. Updating them replaces the full set (minimum two, no duplicates) at the registry level. Moving a domain off Shopco nameservers stops Storefront from serving its DNS — the records are kept, so pointing nameservers back restores them. If the domain is locked and its TLD allows locking, Storefront unlocks it for the update and re-locks it afterward automatically.

These are domain-level settings, distinct from the DNS record management covered in DNS overview, which operates within a domain's zone once it's on Shopco nameservers.

Reassigning a domain between customers

Sometimes called "push transfer" in the spec, but it's not a transfer to another reseller: it reassigns a domain from one customer to another customer within your own storefront. Both customers must already belong to you, and a domain with a transfer already in progress isn't eligible for another.

This is asynchronous — the request queues the move and responds immediately; check the outcome with a separate status call. Status is one of pending, completed, or failed. Requesting status for a domain with no transfer ever initiated returns an error rather than an empty result.

Domain settings

Auto-renew, registrar lock, and WHOIS privacy update together through a single sparse request — only the fields you include change, and not every TLD supports every setting (check the domain object's tld_supports_* flags first). A dedicated bulk endpoint updates the same three settings across up to 100 domains in one call, processing each domain independently so one failure doesn't block the rest.

Domain import

Pulls domains you already hold at OpenSRS into this storefront so they show up in your portfolio and can be managed through the API. This is asynchronous and returns a batch ID immediately. Duplicates are collapsed, and importing a domain already in the storefront is a no-op rather than an error. If your reseller account hasn't completed required onboarding, the request is rejected. See Importing OpenSRS domains for the equivalent UI-based flow.

Domain portfolio and filtering

Retrieve your full domain portfolio as a filterable, sortable list using a ?column=operator.value syntax (eq, gt, lt, in, and similar), for example filtering domains expiring before a date, belonging to a given customer, or matching a status.

Pagination uses offset and limit (default 25, capped at 100) with a Content-Range response header carrying the total count — there's no page-cursor token.

📘

Column names differ between endpoints. The filterable list columns don't all match the single-domain object's field names: lock_enabled on the list is is_lock_enable on the domain object, whois_privacy is has_whois_privacy, and autorenew is is_auto_renew.