Add a custom domain to one of the caller's instances. It starts pending, with the DNS records to publish. Customers only.
Input
application/jsonhostname
string
Required
The hostname, such as app.example.com. No scheme, port or path.
idempotencyKey
string
Required
A UUID the client generates once per intended change and resends on every retry of it, so a retry gets the original reply instead of acting twice.
instanceId
string
Required
The instance's UUID.
Output
application/jsondomain
ref#domain
Required
No description available.
Errors
AuthRequired
This endpoint requires an authenticated caller. Forbidden
The caller is not a HappyProto customer, or the provisioner refused them. InvalidRequest
instanceId or idempotencyKey is not a UUID, or hostname is missing or too long. NotFound
No such instance or domain, or it is not the caller's. The cases are indistinguishable. NotAvailable
Custom domains are not switched on yet. InvalidSlug
Passed through from the provisioner. SlugTaken
Passed through from the provisioner. NotEntitled
Passed through from the provisioner. InstanceLimit
Passed through from the provisioner. NoCapacity
Passed through from the provisioner. OperationInProgress
Passed through from the provisioner: the instance is already changing, or a request with this idempotencyKey is still running. InvalidHostname
The hostname is not a valid public hostname: no scheme, port, path, wildcard or IP address. PlatformHostname
The hostname is HappyProto's own, or under one of its domains. DomainExists
The instance already has this hostname. DomainLimit
The instance already has as many custom domains as it may. TooSoon
Passed through from the provisioner. DomainIsPrimary
Passed through from the provisioner. NotVerified
Passed through from the provisioner. CertificateNotReady
Passed through from the provisioner. VersionTooOld
Passed through from the provisioner. Upstream
The provisioner is unreachable, not configured, or answered with an error it does not explain to callers, or the job could not be started. Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"description": "Add a custom domain to one of the caller's instances. It starts pending, with the DNS records to publish. Customers only.",
"errors": [
{
"description": "This endpoint requires an authenticated caller.",
"name": "AuthRequired"
},
{
"description": "The caller is not a HappyProto customer, or the provisioner refused them.",
"name": "Forbidden"
},
{
"description": "instanceId or idempotencyKey is not a UUID, or hostname is missing or too long.",
"name": "InvalidRequest"
},
{
"description": "No such instance or domain, or it is not the caller's. The cases are indistinguishable.",
"name": "NotFound"
},
{
"description": "Custom domains are not switched on yet.",
"name": "NotAvailable"
},
{
"description": "Passed through from the provisioner.",
"name": "InvalidSlug"
},
{
"description": "Passed through from the provisioner.",
"name": "SlugTaken"
},
{
"description": "Passed through from the provisioner.",
"name": "NotEntitled"
},
{
"description": "Passed through from the provisioner.",
"name": "InstanceLimit"
},
{
"description": "Passed through from the provisioner.",
"name": "NoCapacity"
},
{
"description": "Passed through from the provisioner: the instance is already changing, or a request with this idempotencyKey is still running.",
"name": "OperationInProgress"
},
{
"description": "The hostname is not a valid public hostname: no scheme, port, path, wildcard or IP address.",
"name": "InvalidHostname"
},
{
"description": "The hostname is HappyProto's own, or under one of its domains.",
"name": "PlatformHostname"
},
{
"description": "The instance already has this hostname.",
"name": "DomainExists"
},
{
"description": "The instance already has as many custom domains as it may.",
"name": "DomainLimit"
},
{
"description": "Passed through from the provisioner.",
"name": "TooSoon"
},
{
"description": "Passed through from the provisioner.",
"name": "DomainIsPrimary"
},
{
"description": "Passed through from the provisioner.",
"name": "NotVerified"
},
{
"description": "Passed through from the provisioner.",
"name": "CertificateNotReady"
},
{
"description": "Passed through from the provisioner.",
"name": "VersionTooOld"
},
{
"description": "The provisioner is unreachable, not configured, or answered with an error it does not explain to callers, or the job could not be started.",
"name": "Upstream"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"hostname": {
"description": "The hostname, such as app.example.com. No scheme, port or path.",
"type": "string"
},
"idempotencyKey": {
"description": "A UUID the client generates once per intended change and resends on every retry of it, so a retry gets the original reply instead of acting twice.",
"type": "string"
},
"instanceId": {
"description": "The instance's UUID.",
"type": "string"
}
},
"required": [
"instanceId",
"hostname",
"idempotencyKey"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"domain": {
"ref": "#domain",
"type": "ref"
}
},
"required": [
"domain"
],
"type": "object"
}
},
"type": "procedure"
}