cloudflare
Version:
The official TypeScript library for the Cloudflare API
523 lines • 23.7 kB
text/typescript
import { APIResource } from "../../core/resource.mjs";
import * as RegistrarAPI from "./registrar.mjs";
import { APIPromise } from "../../core/api-promise.mjs";
import { RequestOptions } from "../../internal/request-options.mjs";
export declare class BaseTransferIn extends APIResource {
static readonly _key: readonly ['registrar', 'transferIn'];
/**
* Starts a domain transfer-in workflow. This is typically a billable operation —
* successful transfers charge the account's default payment method, except for
* extensions with zero transfer pricing (e.g. UK extensions). All successful
* domain transfers are non-refundable.
*
* ### How transfers work
*
* Domain transfers move a domain from another registrar to Cloudflare. Transfers
* typically take 1-10 days due to ICANN-mandated approval windows.
*
* ### Prerequisites
*
* - The domain must already have a zone in the Cloudflare account (added through
* the dashboard or zone API).
* - The zone must have DNSSec disabled.
* - For billable transfers (i.e. extensions with non-zero transfer pricing), the
* account must have a billing profile with a valid default payment method. Set
* this up at `https://dash.cloudflare.com/{account_id}/billing/payment-info`.
* - The domain must be unlocked at the current registrar.
* - An authorization/EPP code from the current registrar is required, except for
* UK extensions — see Auth code below.
*
* ### Auth code
*
* An authorization code (also called EPP code, transfer key, or auth-info code) is
* required for most extensions, with the exception of UK extensions. Obtain this
* from your current registrar's control panel.
*
* The auth code in the request body must be base64-encoded per RFC 4648 §4
* (standard alphabet, no line breaks).
*
* ### Response behavior
*
* Successful transfer initiation returns `202 Accepted`. Validation or initiation
* failures return the documented `4XX` responses. Poll
* `GET /accounts/{account_id}/registrar/registrations/{domain_name}/transfer-in-status`
* to track progress.
*
* ### Premium domains
*
* Premium domain transfers are not currently supported by this API. Please use the
* [dashboard](https://dash.cloudflare.com/) for now.
*
* ### Billing
*
* The account's default payment method is charged upon successful transfer
* completion, unless the extension has zero transfer pricing (e.g. UK extensions).
* The transfer adds time to the domain's existing expiration date (typically 1
* year).
*
* @example
* ```ts
* const workflowStatus =
* await client.registrar.transferIn.create('example.com', {
* account_id: '023e105f4ecef8ad9ca31a8372d0c353',
* auth_code: 'bml4b3M+Pj5hcmNoLWxpbnV4',
* });
* ```
*/
create(domainName: string, params: TransferInCreateParams, options?: RequestOptions): APIPromise<RegistrarAPI.WorkflowStatus>;
}
export declare class TransferIn extends BaseTransferIn {
}
export interface TransferInCreateParams {
/**
* Path param: Cloudflare account ID. Required for all Registrar API operations.
*/
account_id: string;
/**
* Body param: The EPP/authorization code from your current registrar,
* base64-encoded per RFC 4648 §4. Obtain this from your current registrar's
* control panel. Required for all extensions, except for UK.
*/
auth_code?: string;
/**
* Body param: Enable or disable automatic renewal after transfer. Defaults to
* `false` if omitted.
*/
auto_renew?: boolean;
/**
* Body param: Registry-specific contact extension values for the registrant.
* `GET /accounts/{account_id}/registrar/extensions/{extension}` documents the
* required keys and allowed values for each extension in the
* `transfer_schema.properties.contact_extensions` object.
*
* Examples include `.us` nexus fields, `.uk` registrant type fields, and `.ca`
* legal type fields. Include this object only when the extension's transfer schema
* defines `contact_extensions`.
*/
contact_extensions?: {
[]: unknown;
};
/**
* Body param: Provides contact data for the registration request.
*
* The per-extension schema from
* `GET /accounts/{account_id}/registrar/extensions/{extension}` defines the
* accepted contact roles. Every currently supported extension requires only
* `contacts.registrant` from API callers. Callers may provide additional roles
* such as `technical`, `administrator`, and `billing` when the extension schema
* includes them. When a registry requires an omitted role, Cloudflare may derive
* that contact from `contacts.registrant`.
*
* When the request omits either the entire `contacts` object or
* `contacts.registrant`, the system uses the account's default address book entry
* as the registrant contact. The account owner must configure this default at
* `https://dash.cloudflare.com/{account_id}/domains/registrations`, where they can
* create or update the address book entry and accept the required agreement.
* Dashboard settings currently provide the only way to manage address book
* entries.
*
* Without either a default address book entry or a registrant contact, the
* registration request fails validation.
*/
contacts?: TransferInCreateParams.Contacts;
/**
* Body param: WHOIS privacy mode to apply after transfer completes. Defaults to
* the extension's default privacy mode (typically `redaction`).
*/
privacy_mode?: 'off' | 'redaction';
/**
* Header param: Set to `respond-async` to indicate a preference for asynchronous
* processing (RFC 7240).
*/
Prefer?: string;
}
export declare namespace TransferInCreateParams {
/**
* Provides contact data for the registration request.
*
* The per-extension schema from
* `GET /accounts/{account_id}/registrar/extensions/{extension}` defines the
* accepted contact roles. Every currently supported extension requires only
* `contacts.registrant` from API callers. Callers may provide additional roles
* such as `technical`, `administrator`, and `billing` when the extension schema
* includes them. When a registry requires an omitted role, Cloudflare may derive
* that contact from `contacts.registrant`.
*
* When the request omits either the entire `contacts` object or
* `contacts.registrant`, the system uses the account's default address book entry
* as the registrant contact. The account owner must configure this default at
* `https://dash.cloudflare.com/{account_id}/domains/registrations`, where they can
* create or update the address book entry and accept the required agreement.
* Dashboard settings currently provide the only way to manage address book
* entries.
*
* Without either a default address book entry or a registrant contact, the
* registration request fails validation.
*/
interface Contacts {
/**
* Optional administrator contact. Accepted only when the extension schema includes
* this role. When the registry requires an omitted contact, Cloudflare may derive
* it from `contacts.registrant`.
*/
administrator?: Contacts.Administrator;
/**
* Optional billing contact. Accepted only when the extension schema includes this
* role. When the registry requires an omitted contact, Cloudflare may derive it
* from `contacts.registrant`.
*/
billing?: Contacts.Billing;
/**
* Optional registrant contact. If omitted, the account's default address book
* entry is used instead.
*/
registrant?: Contacts.Registrant;
/**
* Optional technical contact. Accepted only when the extension schema includes
* this role. When the registry requires an omitted contact, Cloudflare may derive
* it from `contacts.registrant`.
*/
technical?: Contacts.Technical;
}
namespace Contacts {
/**
* Optional administrator contact. Accepted only when the extension schema includes
* this role. When the registry requires an omitted contact, Cloudflare may derive
* it from `contacts.registrant`.
*/
interface Administrator {
/**
* Email address for the registrant. Used for domain-related communications from
* the registry, including ownership verification and renewal notices.
*/
email: string;
/**
* Phone number in E.164 format: `+{country_code}.{number}` without spaces or
* dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678`
* (Japan).
*/
phone: string;
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
postal_info: Administrator.PostalInfo;
/**
* Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations
* do not require a fax number.
*/
fax?: string;
}
namespace Administrator {
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
interface PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
address: PostalInfo.Address;
/**
* Full legal name of the contact, including all required name components for an
* individual or authorized representative. Some registries require a complete
* personal name that includes a family or last name where applicable. Provide the
* complete name in this single field, for example `Ada Lovelace`; do not send
* separate first-name or last-name fields.
*/
name: string;
/**
* Organization or company name. Optional for individual registrants.
*/
organization?: string;
}
namespace PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
interface Address {
/**
* City or locality name.
*/
city: string;
/**
* Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`).
*/
country_code: string;
/**
* Postal or ZIP code.
*/
postal_code: string;
/**
* State, province, or region. Use the standard abbreviation where applicable
* (e.g., `TX` for Texas, `ON` for Ontario).
*/
state: string;
/**
* Street address including building/suite number.
*/
street: string;
}
}
}
/**
* Optional billing contact. Accepted only when the extension schema includes this
* role. When the registry requires an omitted contact, Cloudflare may derive it
* from `contacts.registrant`.
*/
interface Billing {
/**
* Email address for the registrant. Used for domain-related communications from
* the registry, including ownership verification and renewal notices.
*/
email: string;
/**
* Phone number in E.164 format: `+{country_code}.{number}` without spaces or
* dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678`
* (Japan).
*/
phone: string;
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
postal_info: Billing.PostalInfo;
/**
* Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations
* do not require a fax number.
*/
fax?: string;
}
namespace Billing {
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
interface PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
address: PostalInfo.Address;
/**
* Full legal name of the contact, including all required name components for an
* individual or authorized representative. Some registries require a complete
* personal name that includes a family or last name where applicable. Provide the
* complete name in this single field, for example `Ada Lovelace`; do not send
* separate first-name or last-name fields.
*/
name: string;
/**
* Organization or company name. Optional for individual registrants.
*/
organization?: string;
}
namespace PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
interface Address {
/**
* City or locality name.
*/
city: string;
/**
* Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`).
*/
country_code: string;
/**
* Postal or ZIP code.
*/
postal_code: string;
/**
* State, province, or region. Use the standard abbreviation where applicable
* (e.g., `TX` for Texas, `ON` for Ontario).
*/
state: string;
/**
* Street address including building/suite number.
*/
street: string;
}
}
}
/**
* Optional registrant contact. If omitted, the account's default address book
* entry is used instead.
*/
interface Registrant {
/**
* Email address for the registrant. Used for domain-related communications from
* the registry, including ownership verification and renewal notices.
*/
email: string;
/**
* Phone number in E.164 format: `+{country_code}.{number}` without spaces or
* dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678`
* (Japan).
*/
phone: string;
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
postal_info: Registrant.PostalInfo;
/**
* Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations
* do not require a fax number.
*/
fax?: string;
}
namespace Registrant {
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
interface PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
address: PostalInfo.Address;
/**
* Full legal name of the contact, including all required name components for an
* individual or authorized representative. Some registries require a complete
* personal name that includes a family or last name where applicable. Provide the
* complete name in this single field, for example `Ada Lovelace`; do not send
* separate first-name or last-name fields.
*/
name: string;
/**
* Organization or company name. Optional for individual registrants.
*/
organization?: string;
}
namespace PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
interface Address {
/**
* City or locality name.
*/
city: string;
/**
* Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`).
*/
country_code: string;
/**
* Postal or ZIP code.
*/
postal_code: string;
/**
* State, province, or region. Use the standard abbreviation where applicable
* (e.g., `TX` for Texas, `ON` for Ontario).
*/
state: string;
/**
* Street address including building/suite number.
*/
street: string;
}
}
}
/**
* Optional technical contact. Accepted only when the extension schema includes
* this role. When the registry requires an omitted contact, Cloudflare may derive
* it from `contacts.registrant`.
*/
interface Technical {
/**
* Email address for the registrant. Used for domain-related communications from
* the registry, including ownership verification and renewal notices.
*/
email: string;
/**
* Phone number in E.164 format: `+{country_code}.{number}` without spaces or
* dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678`
* (Japan).
*/
phone: string;
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
postal_info: Technical.PostalInfo;
/**
* Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations
* do not require a fax number.
*/
fax?: string;
}
namespace Technical {
/**
* Postal/mailing information for the contact. The `name` field is the complete
* contact name in one string. Some registries require a complete personal name,
* including a family or last name where applicable, but this API does not accept
* separate first-name and last-name fields for registration contacts.
*/
interface PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
address: PostalInfo.Address;
/**
* Full legal name of the contact, including all required name components for an
* individual or authorized representative. Some registries require a complete
* personal name that includes a family or last name where applicable. Provide the
* complete name in this single field, for example `Ada Lovelace`; do not send
* separate first-name or last-name fields.
*/
name: string;
/**
* Organization or company name. Optional for individual registrants.
*/
organization?: string;
}
namespace PostalInfo {
/**
* Physical mailing address for the registrant contact.
*/
interface Address {
/**
* City or locality name.
*/
city: string;
/**
* Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`).
*/
country_code: string;
/**
* Postal or ZIP code.
*/
postal_code: string;
/**
* State, province, or region. Use the standard abbreviation where applicable
* (e.g., `TX` for Texas, `ON` for Ontario).
*/
state: string;
/**
* Street address including building/suite number.
*/
street: string;
}
}
}
}
}
export declare namespace TransferIn {
export { type TransferInCreateParams as TransferInCreateParams };
}
//# sourceMappingURL=transfer-in.d.mts.map