UNPKG

@hasna/domains

Version:

Domain portfolio, registrar, marketplace, and DNS management for AI agents — CLI + MCP + HTTP API + SDK, shared account API and PostgreSQL

383 lines • 13.6 kB
export interface Error { "error": string; "reason"?: string; } export interface HealthResponse { "status": string; "version": string; "latencyMs"?: number; } export interface ReadyResponse { "status": string; "version": string; "pendingMigrations"?: Array<string>; } export interface VersionResponse { "status": string; "version": string; } export interface DeleteResult { "id": string; "deleted": boolean; } export interface AvailabilityInput { "name": string; } export interface AvailabilityQuote { "name": string; "available": boolean; "price_usd"?: number; "registration_price_usd"?: number; "renewal_price_usd"?: number; "currency"?: string; "is_premium"?: boolean; } export interface DomainProvisioningRequest { "name": string; "max_price_usd": number; "years": number; "auto_renew": boolean; "registrar"?: "route53"; "dns_provider"?: "cloudflare"; "target"?: "shortlinks" | "website_origin"; "worker_name"?: string | null; "origin_hostname"?: string | null; "origin_tls_mode"?: "strict" | "full" | null; } export interface DomainAdoptionRequest { "name": string; "dns_provider"?: "cloudflare"; "target": "shortlinks" | "website_origin"; "worker_name"?: string | null; "origin_hostname"?: string | null; "origin_tls_mode"?: "strict" | "full" | null; } export interface DomainProvisioningProviderState { "route53_account_ref"?: string; "route53_account_binding_sha256"?: string; "quoted_price_usd"?: number; "currency"?: string; "registration_operation_id"?: string; "nameserver_operation_id"?: string; "cloudflare_zone_id"?: string; "cloudflare_nameservers"?: Array<string>; "route53_zone_ids_before_registration"?: Array<string>; "route53_hosted_zone_id"?: string; "route53_hosted_zone_cleaned"?: boolean; "worker_domain_bound"?: boolean; "website_origin_configured"?: boolean; "origin_tls_mode_configured"?: "strict" | "full" | "origin_pull"; "origin_tls_mode_checked_at"?: string; "web_records"?: Array<ProvisionedWebRecord>; "target_checked_at"?: string; "last_provider_status"?: string; "registration_submitted_at"?: string; "nameservers_submitted_at"?: string; "delegation_dns_preserved_count"?: number; "delegation_dns_preserved_sha256"?: string; "delegation_dns_preserved_at"?: string; } export interface DomainProvisioningJob { "id": string; "domain_id": string; "name": string; "idempotency_key": string; "request_hash": string; "status": "requested" | "quoted" | "registration_submitting" | "registration_submitted" | "registered" | "zone_ready" | "nameservers_submitted" | "delegated" | "worker_bound" | "ready" | "manual_review" | "failed"; "max_price_usd": number; "years": number; "auto_renew": boolean; "acquisition_mode": "purchase" | "adopt"; "registrar": "route53" | "brandsight"; "dns_provider": string; "target": string; "worker_name": string | null; "origin_hostname": string | null; "origin_tls_mode": "strict" | "full" | null; "provider_state": DomainProvisioningProviderState; "result": DomainProvisioningResult | null; "attempts": number; "error"?: string | null; "lease_until"?: string | null; "created_at": string; "updated_at": string; } export interface ProvisionedWebRecord { "type": "CNAME"; "name": string; "value": string; "proxied": true; "ttl": number; } export interface DomainProvisioningResult { "zone_ref": string; "nameservers": Array<string>; "web_records": Array<ProvisionedWebRecord>; "origin_tls_mode": "strict" | "full" | null; "checked_at": string; } export interface HostedDnsRecord { "type": "TXT" | "CNAME" | "MX"; "name": string; "value": string; "ttl": number; "priority"?: number | null; } export interface ReconciliationDnsRecord { "type": "TXT" | "CNAME" | "MX"; "name": string; "value": string; "ttl": number | 1; "priority"?: number | null; } export interface EffectiveHostedDnsRecord { "type": "TXT" | "CNAME" | "MX"; "name": string; "value": string; "ttl": number | 1; "priority"?: number | null; "semantic_value"?: string; } export interface DomainDnsRecordState { "hash_scheme": "domains-dns-group-v1"; "domain_name": string; "provisioning_job_id": string; "zone_id": string; "record_name": string; "record_type": "TXT" | "CNAME" | "MX"; "records_sha256": string; "records": Array<{ "id": string; "type": string; "name": string; "value": string; "ttl": number; "priority": number | null; "proxied": boolean | null; }>; } export interface DomainDnsReconciliationRequest { "records": Array<ReconciliationDnsRecord>; "expected_current_records_sha256"?: string; } export interface DomainDnsReconciliation { "id": string; "provisioning_job_id": string; "domain_name": string; "idempotency_key": string; "request_hash": string; "status": "requested" | "applying" | "ready" | "manual_review"; "records": Array<ReconciliationDnsRecord>; "result": { "records": Array<EffectiveHostedDnsRecord>; "checked_at": string; } | null; "error": string | null; "lease_until": string | null; "created_at": string; "updated_at": string; } export interface Domain { "id": string; "name": string; "registrar"?: string | null; "status": string; "registered_at"?: string | null; "expires_at"?: string | null; "auto_renew": boolean; "is_premium": boolean; "premium_price"?: number | null; "standard_price"?: number | null; "purchase_price"?: number | null; "purchase_date"?: string | null; "nameservers"?: Array<string>; "whois"?: Record<string, unknown>; "ssl_expires_at"?: string | null; "ssl_issuer"?: string | null; "notes"?: string | null; "metadata"?: Record<string, unknown>; "created_at": string; "updated_at": string; } export interface DomainList { "domains": Array<Domain>; "count": number; } export interface CreateDomainInput { "name": string; "registrar"?: string; "status"?: string; "registered_at"?: string; "expires_at"?: string; "auto_renew"?: boolean; "is_premium"?: boolean; "premium_price"?: number; "standard_price"?: number; "purchase_price"?: number; "purchase_date"?: string; "nameservers"?: Array<string>; "whois"?: Record<string, unknown>; "ssl_expires_at"?: string; "ssl_issuer"?: string; "notes"?: string; "metadata"?: Record<string, unknown>; } export interface UpdateDomainInput { "name"?: string; "registrar"?: string | null; "status"?: string; "registered_at"?: string | null; "expires_at"?: string | null; "auto_renew"?: boolean; "is_premium"?: boolean; "premium_price"?: number | null; "standard_price"?: number | null; "purchase_price"?: number | null; "purchase_date"?: string | null; "nameservers"?: Array<string>; "whois"?: Record<string, unknown>; "ssl_expires_at"?: string | null; "ssl_issuer"?: string | null; "notes"?: string | null; "metadata"?: Record<string, unknown>; } export interface DnsRecord { "id": string; "domain_id": string; "type": string; "name": string; "value": string; "ttl": number; "priority"?: number | null; "created_at": string; } export interface DnsRecordList { "records": Array<DnsRecord>; "count": number; } export interface CreateDnsRecordInput { "type": "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS" | "SRV"; "name": string; "value": string; "ttl"?: number; "priority"?: number; } export interface DomainOffer { "id": string; "domain_id": string; "our_offer"?: number | null; "their_ask"?: number | null; "status": string; "notes"?: string | null; "created_at": string; } export interface OfferList { "offers": Array<DomainOffer>; "count": number; } export interface CreateOfferInput { "our_offer"?: number; "their_ask"?: number; "status"?: string; "notes"?: string; } export interface DomainStats { "total": number; "active"?: number; "expired"?: number; "transferring"?: number; "redemption"?: number; "auto_renew_enabled"?: number; "expiring_30_days"?: number; "ssl_expiring_30_days"?: number; } export interface DomainsClientOptions { /** Base URL, e.g. process.env.APP_API_URL. */ baseUrl: string; /** API key, e.g. process.env.APP_API_KEY. Sent as the 'x-api-key' header. */ apiKey?: string; /** Custom fetch (defaults to global fetch). */ fetch?: typeof fetch; /** Extra headers merged into every request. */ headers?: Record<string, string>; } export declare class ApiError extends Error { readonly status: number; readonly body: unknown; constructor(status: number, message: string, body: unknown); } export declare class DomainsClient { private readonly baseUrl; private readonly apiKey; private readonly fetchImpl; private readonly baseHeaders; constructor(options: DomainsClientOptions); private request; /** Liveness probe (DB reachable). */ getHealth(init?: RequestInit): Promise<HealthResponse>; /** Readiness probe (DB reachable and schema migrated). */ getReady(init?: RequestInit): Promise<ReadyResponse>; /** Check live registrar availability and current price. */ checkDomainAvailability(body: AvailabilityInput, init?: RequestInit): Promise<AvailabilityQuote>; /** Get a DNS record by id. */ getDnsRecord(id: string, init?: RequestInit): Promise<DnsRecord>; /** Delete a DNS record. */ deleteDnsRecord(id: string, init?: RequestInit): Promise<DeleteResult>; /** List domains. */ listDomains(query?: { "search"?: string; "status"?: string; "limit"?: number; "offset"?: number; }, init?: RequestInit): Promise<DomainList>; /** Create a domain. */ createDomain(body: CreateDomainInput, init?: RequestInit): Promise<Domain>; /** Get a domain by id. */ getDomain(id: string, init?: RequestInit): Promise<Domain>; /** Delete a domain. */ deleteDomain(id: string, init?: RequestInit): Promise<DeleteResult>; /** Update a domain. */ updateDomain(id: string, body: UpdateDomainInput, init?: RequestInit): Promise<Domain>; /** List DNS records for a domain. */ listDnsRecords(id: string, init?: RequestInit): Promise<DnsRecordList>; /** Create a DNS record for a domain. */ createDnsRecord(id: string, body: CreateDnsRecordInput, init?: RequestInit): Promise<DnsRecord>; /** List marketplace offers for a domain. */ listOffers(id: string, init?: RequestInit): Promise<OfferList>; /** Create a marketplace offer for a domain. */ createOffer(id: string, body: CreateOfferInput, init?: RequestInit): Promise<DomainOffer>; /** Reserve, cap the total charge, purchase, delegate and bind a domain through the hosted Domains authority. */ requestDomainProvisioning(body: DomainProvisioningRequest, init?: RequestInit): Promise<DomainProvisioningJob>; /** Adopt an existing portfolio domain into hosted provisioning without a registrar purchase. */ adoptOwnedDomainProvisioning(body: DomainAdoptionRequest, init?: RequestInit): Promise<DomainProvisioningJob>; /** Read the durable provisioning job for a canonical domain name. */ getDomainProvisioningByName(name: string, init?: RequestInit): Promise<DomainProvisioningJob>; /** Idempotently reconcile bounded TXT, CNAME, and MX record groups for a ready hosted domain. */ reconcileProvisionedDomainDns(name: string, body: DomainDnsReconciliationRequest, init?: RequestInit): Promise<DomainDnsReconciliation>; /** Ensure email authorization while preserving existing DMARC and unrelated mail records. Result records are effective provider values, which may differ from requested defaults. */ reconcileProvisionedDomainEmailDns(name: string, body: DomainDnsReconciliationRequest, init?: RequestInit): Promise<DomainDnsReconciliation>; /** Read durable DNS receipts without claiming leases or replaying provider writes. Follow next_offset until null. */ listProvisionedDomainDnsReconciliations(name: string, query?: { "id"?: string; "idempotency_key"?: string; "limit"?: number; "offset"?: number; }, init?: RequestInit): Promise<{ "reconciliations": Array<DomainDnsReconciliation>; "next_offset": number | null; }>; /** Read a complete selected DNS group and its exact-state guard under the zone lock. */ getProvisionedDomainDnsState(name: string, query?: { "record_name": string; "record_type": "TXT" | "CNAME" | "MX"; }, init?: RequestInit): Promise<DomainDnsRecordState>; /** Read a domain provisioning job. */ getDomainProvisioning(id: string, init?: RequestInit): Promise<DomainProvisioningJob>; /** Advance one idempotent hosted provisioning step (operator recovery path). */ advanceDomainProvisioning(id: string, init?: RequestInit): Promise<DomainProvisioningJob>; /** Portfolio statistics. */ getDomainStats(init?: RequestInit): Promise<DomainStats>; /** Service version and mode. */ getVersion(init?: RequestInit): Promise<VersionResponse>; } //# sourceMappingURL=client.d.ts.map