## Custom Hostname Details `client.CustomHostnames.Get(ctx, customHostnameID, query) (*CustomHostnameGetResponse, error)` **get** `/zones/{zone_id}/custom_hostnames/{custom_hostname_id}` Retrieves detailed information about a specific custom hostname, including SSL certificate status, ownership verification, and origin configuration. ### Parameters - `customHostnameID string` Identifier. - `query CustomHostnameGetParams` - `ZoneID param.Field[string]` Identifier. ### Returns - `type CustomHostnameGetResponse struct{…}` - `ID string` Identifier. - `Hostname string` The custom hostname that will point to your hostname via CNAME. - `CreatedAt Time` This is the time the hostname was created. - `CustomMetadata map[string, string]` Unique key/value metadata for this hostname. These are per-hostname (customer) settings. - `CustomOriginServer string` a valid hostname that’s been added to your DNS zone as an A, AAAA, or CNAME record. - `CustomOriginSNI string` A hostname that will be sent to your custom origin server as SNI for TLS handshake. This can be a valid subdomain of the zone or custom origin server name or the string ':request_host_header:' which will cause the host header in the request to be used as SNI. Not configurable with default/fallback origin server. - `OwnershipVerification CustomHostnameGetResponseOwnershipVerification` This is a record which can be placed to activate a hostname. - `Name string` DNS Name for record. - `Type CustomHostnameGetResponseOwnershipVerificationType` DNS Record type. - `const CustomHostnameGetResponseOwnershipVerificationTypeTXT CustomHostnameGetResponseOwnershipVerificationType = "txt"` - `Value string` Content for the record. - `OwnershipVerificationHTTP CustomHostnameGetResponseOwnershipVerificationHTTP` This presents the token to be served by the given http url to activate a hostname. - `HTTPBody string` Token to be served. - `HTTPURL string` The HTTP URL that will be checked during custom hostname verification and where the customer should host the token. - `SSL CustomHostnameGetResponseSSL` - `ID string` Custom hostname SSL identifier tag. - `BundleMethod BundleMethod` A ubiquitous bundle has the highest probability of being verified everywhere, even by clients using outdated or unusual trust stores. An optimal bundle uses the shortest chain and newest intermediates. And the force bundle verifies the chain, but does not otherwise modify it. - `const BundleMethodUbiquitous BundleMethod = "ubiquitous"` - `const BundleMethodOptimal BundleMethod = "optimal"` - `const BundleMethodForce BundleMethod = "force"` - `CertificateAuthority CertificateCA` The Certificate Authority that will issue the certificate - `const CertificateCADigicert CertificateCA = "digicert"` - `const CertificateCAGoogle CertificateCA = "google"` - `const CertificateCALetsEncrypt CertificateCA = "lets_encrypt"` - `const CertificateCASSLCom CertificateCA = "ssl_com"` - `CustomCertificate string` If a custom uploaded certificate is used. - `CustomCsrID string` The identifier for the Custom CSR that was used. - `CustomKey string` The key for a custom uploaded certificate. - `DCVDelegationRecords []CustomHostnameGetResponseSsldcvDelegationRecord` DCV Delegation records for domain validation. - `CNAME string` The CNAME record hostname for DCV delegation. - `CNAMETarget string` The CNAME record target value for DCV delegation. - `Emails []string` The set of email addresses that the certificate authority (CA) will use to complete domain validation. - `HTTPBody string` The content that the certificate authority (CA) will expect to find at the http_url during the domain validation. - `HTTPURL string` The url that will be checked during domain validation. - `Status string` Status of the validation record. - `TXTName string` The hostname that the certificate authority (CA) will check for a TXT record during domain validation . - `TXTValue string` The TXT record that the certificate authority (CA) will check during domain validation. - `ExpiresOn Time` The time the custom certificate expires on. - `Hosts []string` A list of Hostnames on a custom uploaded certificate. - `Issuer string` The issuer on a custom uploaded certificate. - `Method DCVMethod` Domain control validation (DCV) method used for this hostname. - `const DCVMethodHTTP DCVMethod = "http"` - `const DCVMethodTXT DCVMethod = "txt"` - `const DCVMethodEmail DCVMethod = "email"` - `SerialNumber string` The serial number on a custom uploaded certificate. - `Settings CustomHostnameGetResponseSSLSettings` - `Ciphers []string` An allowlist of ciphers for TLS termination. These ciphers must be in the BoringSSL format. - `EarlyHints CustomHostnameGetResponseSSLSettingsEarlyHints` Whether or not Early Hints is enabled. - `const CustomHostnameGetResponseSSLSettingsEarlyHintsOn CustomHostnameGetResponseSSLSettingsEarlyHints = "on"` - `const CustomHostnameGetResponseSSLSettingsEarlyHintsOff CustomHostnameGetResponseSSLSettingsEarlyHints = "off"` - `HTTP2 CustomHostnameGetResponseSSLSettingsHTTP2` Whether or not HTTP2 is enabled. - `const CustomHostnameGetResponseSSLSettingsHTTP2On CustomHostnameGetResponseSSLSettingsHTTP2 = "on"` - `const CustomHostnameGetResponseSSLSettingsHTTP2Off CustomHostnameGetResponseSSLSettingsHTTP2 = "off"` - `MinTLSVersion CustomHostnameGetResponseSSLSettingsMinTLSVersion` The minimum TLS version supported. - `const CustomHostnameGetResponseSSLSettingsMinTLSVersion1_0 CustomHostnameGetResponseSSLSettingsMinTLSVersion = "1.0"` - `const CustomHostnameGetResponseSSLSettingsMinTLSVersion1_1 CustomHostnameGetResponseSSLSettingsMinTLSVersion = "1.1"` - `const CustomHostnameGetResponseSSLSettingsMinTLSVersion1_2 CustomHostnameGetResponseSSLSettingsMinTLSVersion = "1.2"` - `const CustomHostnameGetResponseSSLSettingsMinTLSVersion1_3 CustomHostnameGetResponseSSLSettingsMinTLSVersion = "1.3"` - `TLS1_3 CustomHostnameGetResponseSSLSettingsTLS1_3` Whether or not TLS 1.3 is enabled. - `const CustomHostnameGetResponseSSLSettingsTLS1_3On CustomHostnameGetResponseSSLSettingsTLS1_3 = "on"` - `const CustomHostnameGetResponseSSLSettingsTLS1_3Off CustomHostnameGetResponseSSLSettingsTLS1_3 = "off"` - `Signature string` The signature on a custom uploaded certificate. - `Status CustomHostnameGetResponseSSLStatus` Status of the hostname's SSL certificates. - `const CustomHostnameGetResponseSSLStatusInitializing CustomHostnameGetResponseSSLStatus = "initializing"` - `const CustomHostnameGetResponseSSLStatusPendingValidation CustomHostnameGetResponseSSLStatus = "pending_validation"` - `const CustomHostnameGetResponseSSLStatusDeleted CustomHostnameGetResponseSSLStatus = "deleted"` - `const CustomHostnameGetResponseSSLStatusPendingIssuance CustomHostnameGetResponseSSLStatus = "pending_issuance"` - `const CustomHostnameGetResponseSSLStatusPendingDeployment CustomHostnameGetResponseSSLStatus = "pending_deployment"` - `const CustomHostnameGetResponseSSLStatusPendingDeletion CustomHostnameGetResponseSSLStatus = "pending_deletion"` - `const CustomHostnameGetResponseSSLStatusPendingExpiration CustomHostnameGetResponseSSLStatus = "pending_expiration"` - `const CustomHostnameGetResponseSSLStatusExpired CustomHostnameGetResponseSSLStatus = "expired"` - `const CustomHostnameGetResponseSSLStatusActive CustomHostnameGetResponseSSLStatus = "active"` - `const CustomHostnameGetResponseSSLStatusInitializingTimedOut CustomHostnameGetResponseSSLStatus = "initializing_timed_out"` - `const CustomHostnameGetResponseSSLStatusValidationTimedOut CustomHostnameGetResponseSSLStatus = "validation_timed_out"` - `const CustomHostnameGetResponseSSLStatusIssuanceTimedOut CustomHostnameGetResponseSSLStatus = "issuance_timed_out"` - `const CustomHostnameGetResponseSSLStatusDeploymentTimedOut CustomHostnameGetResponseSSLStatus = "deployment_timed_out"` - `const CustomHostnameGetResponseSSLStatusDeletionTimedOut CustomHostnameGetResponseSSLStatus = "deletion_timed_out"` - `const CustomHostnameGetResponseSSLStatusPendingCleanup CustomHostnameGetResponseSSLStatus = "pending_cleanup"` - `const CustomHostnameGetResponseSSLStatusStagingDeployment CustomHostnameGetResponseSSLStatus = "staging_deployment"` - `const CustomHostnameGetResponseSSLStatusStagingActive CustomHostnameGetResponseSSLStatus = "staging_active"` - `const CustomHostnameGetResponseSSLStatusDeactivating CustomHostnameGetResponseSSLStatus = "deactivating"` - `const CustomHostnameGetResponseSSLStatusInactive CustomHostnameGetResponseSSLStatus = "inactive"` - `const CustomHostnameGetResponseSSLStatusBackupIssued CustomHostnameGetResponseSSLStatus = "backup_issued"` - `const CustomHostnameGetResponseSSLStatusHoldingDeployment CustomHostnameGetResponseSSLStatus = "holding_deployment"` - `Type DomainValidationType` Level of validation to be used for this hostname. Domain validation (dv) must be used. - `const DomainValidationTypeDv DomainValidationType = "dv"` - `UploadedOn Time` The time the custom certificate was uploaded. - `ValidationErrors []CustomHostnameGetResponseSSLValidationError` Domain validation errors that have been received by the certificate authority (CA). - `Message string` A domain validation error. - `ValidationRecords []CustomHostnameGetResponseSSLValidationRecord` - `CNAME string` The CNAME record hostname for DCV delegation. - `CNAMETarget string` The CNAME record target value for DCV delegation. - `Emails []string` The set of email addresses that the certificate authority (CA) will use to complete domain validation. - `HTTPBody string` The content that the certificate authority (CA) will expect to find at the http_url during the domain validation. - `HTTPURL string` The url that will be checked during domain validation. - `Status string` Status of the validation record. - `TXTName string` The hostname that the certificate authority (CA) will check for a TXT record during domain validation . - `TXTValue string` The TXT record that the certificate authority (CA) will check during domain validation. - `Wildcard bool` Indicates whether the certificate covers a wildcard. - `Status CustomHostnameGetResponseStatus` Status of the hostname's activation. - `const CustomHostnameGetResponseStatusActive CustomHostnameGetResponseStatus = "active"` - `const CustomHostnameGetResponseStatusPending CustomHostnameGetResponseStatus = "pending"` - `const CustomHostnameGetResponseStatusActiveRedeploying CustomHostnameGetResponseStatus = "active_redeploying"` - `const CustomHostnameGetResponseStatusMoved CustomHostnameGetResponseStatus = "moved"` - `const CustomHostnameGetResponseStatusPendingDeletion CustomHostnameGetResponseStatus = "pending_deletion"` - `const CustomHostnameGetResponseStatusDeleted CustomHostnameGetResponseStatus = "deleted"` - `const CustomHostnameGetResponseStatusPendingBlocked CustomHostnameGetResponseStatus = "pending_blocked"` - `const CustomHostnameGetResponseStatusPendingMigration CustomHostnameGetResponseStatus = "pending_migration"` - `const CustomHostnameGetResponseStatusPendingProvisioned CustomHostnameGetResponseStatus = "pending_provisioned"` - `const CustomHostnameGetResponseStatusTestPending CustomHostnameGetResponseStatus = "test_pending"` - `const CustomHostnameGetResponseStatusTestActive CustomHostnameGetResponseStatus = "test_active"` - `const CustomHostnameGetResponseStatusTestActiveApex CustomHostnameGetResponseStatus = "test_active_apex"` - `const CustomHostnameGetResponseStatusTestBlocked CustomHostnameGetResponseStatus = "test_blocked"` - `const CustomHostnameGetResponseStatusTestFailed CustomHostnameGetResponseStatus = "test_failed"` - `const CustomHostnameGetResponseStatusProvisioned CustomHostnameGetResponseStatus = "provisioned"` - `const CustomHostnameGetResponseStatusBlocked CustomHostnameGetResponseStatus = "blocked"` - `VerificationErrors []string` These are errors that were encountered while trying to activate a hostname. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/custom_hostnames" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customHostname, err := client.CustomHostnames.Get( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", custom_hostnames.CustomHostnameGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customHostname.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "hostname": "app.example.com", "created_at": "2020-02-06T18:11:23.531995Z", "custom_metadata": { "foo": "string" }, "custom_origin_server": "origin2.example.com", "custom_origin_sni": "sni.example.com", "ownership_verification": { "name": "_cf-custom-hostname.app.example.com", "type": "txt", "value": "5cc07c04-ea62-4a5a-95f0-419334a875a4" }, "ownership_verification_http": { "http_body": "5cc07c04-ea62-4a5a-95f0-419334a875a4", "http_url": "http://custom.test.com/.well-known/cf-custom-hostname-challenge/0d89c70d-ad9f-4843-b99f-6cc0252067e9" }, "ssl": { "id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9", "bundle_method": "ubiquitous", "certificate_authority": "google", "custom_certificate": "-----BEGIN CERTIFICATE-----\nMIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O\nOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7\n-----END CERTIFICATE-----\n", "custom_csr_id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", "custom_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----\n", "dcv_delegation_records": [ { "cname": "_acme-challenge.example.com", "cname_target": "dcv.cloudflare.com", "emails": [ "administrator@example.com", "webmaster@example.com" ], "http_body": "ca3-574923932a82475cb8592200f1a2a23d", "http_url": "http://app.example.com/.well-known/pki-validation/ca3-da12a1c25e7b48cf80408c6c1763b8a2.txt", "status": "pending", "txt_name": "_acme-challenge.app.example.com", "txt_value": "810b7d5f01154524b961ba0cd578acc2" } ], "expires_on": "2021-02-06T18:11:23.531995Z", "hosts": [ "app.example.com", "*.app.example.com" ], "issuer": "DigiCertInc", "method": "http", "serial_number": "6743787633689793699141714808227354901", "settings": { "ciphers": [ "ECDHE-RSA-AES128-GCM-SHA256", "AES128-SHA" ], "early_hints": "on", "http2": "on", "min_tls_version": "1.2", "tls_1_3": "on" }, "signature": "SHA256WithRSA", "status": "pending_validation", "type": "dv", "uploaded_on": "2020-02-06T18:11:23.531995Z", "validation_errors": [ { "message": "SERVFAIL looking up CAA for app.example.com" } ], "validation_records": [ { "cname": "_acme-challenge.example.com", "cname_target": "dcv.cloudflare.com", "emails": [ "administrator@example.com", "webmaster@example.com" ], "http_body": "ca3-574923932a82475cb8592200f1a2a23d", "http_url": "http://app.example.com/.well-known/pki-validation/ca3-da12a1c25e7b48cf80408c6c1763b8a2.txt", "status": "pending", "txt_name": "_acme-challenge.app.example.com", "txt_value": "810b7d5f01154524b961ba0cd578acc2" } ], "wildcard": false }, "status": "pending", "verification_errors": [ "None of the A or AAAA records are owned by this account and the pre-generated ownership verification token was not found." ] } } ```