Check the domain's DNS records now
Team admins (`team.manage`); the console's *Check status*. Enqueues a `domain_verify` job and answers at once with `verification.status` `checking`; follow `domain.updated` or poll the domain. Another check of the same domain within 10 seconds is 429. Only the TXT record verifies. A verified domain is checked again: without its TXT record it stays verified, but `verification.txt_missing_since` is set and it lapses at `verification.lapses_at`; a check that finds the record clears both and verifies a `lapsed` domain again. Core also re-checks every verified domain daily.
openapi/harthelm.yaml at v1.5.0__Host-harthelm_session<token>Browser session of the UI (12 h idle, 7 days absolute). State-changing requests also need the header
Harthelm-CSRF: 1 and a matching Origin.
team*integerNumeric resource id.
int641 <= valuedomain*stringA custom domain's name, e.g. shop.example.com.
3 <= length <= 253The check is queued.
application/json- response
id*stringuuidteam_id*IDNumeric resource id.
int641 <= valuename*DomainNameValueA host name of at least two labels (letters, digits, hyphens; IDNs in their xn-- form), compared in lower
case; no wildcard, no IP address, no trailing dot.
3 <= length <= 253url*stringThe domain's HTTPS URL, from its name.
restricted*booleanuse_regex*booleanmax_body_bytes*integerThe effective limit (the installation default when none is set).
int64timeout_seconds*integerThe effective limit.
verification*tls*records*array<>The DNS records to set, in the order the console shows them.
routes*array<>created_by?IDNumeric resource id.
int641 <= valuecreated_at*stringdate-timeupdated_at*stringdate-timeexpires_at?stringAn unverified domain (never verified): when the claim is released and the domain removed (its creation plus
customDomains.claimDays). Absent once verified, and from an older core.
date-timecurl -X POST 'https://console.example.com/api/v1/teams/1/domains/string/verify'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "team_id": 1, "name": "string", "url": "string", "restricted": true, "use_regex": true, "max_body_bytes": 0, "timeout_seconds": 0, "verification": { "status": "unchecked", "method": "txt", "checked_at": "2019-08-24T14:15:22Z", "verified_at": "2019-08-24T14:15:22Z", "reason": "string", "txt_missing_since": "2019-08-24T14:15:22Z", "lapses_at": "2019-08-24T14:15:22Z" }, "tls": { "mode": "automated", "status": "pending", "reason": "string", "not_after": "2019-08-24T14:15:22Z", "covered_by": "string" }, "records": [ { "type": "CNAME", "name": "string", "value": "string", "purpose": "verification" } ], "routes": [ { "path": "string", "workspace_ids": [ 1 ] } ], "created_by": 1, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "expires_at": "2019-08-24T14:15:22Z"}Use an uploaded certificate
Team admins (`team.manage`). Switches the domain to `tls.mode` `self-managed`: the chain must parse, cover the domain's name, not be expired, and match the private key (422 at `/certificate_pem` or `/private_key_pem`). The key is stored sealed and rendered into the edge object's TLS Secret; it is never returned.
Get the workspace env vars
Variables every terminal, `prepare`, `test` and every service see. They are not secret; use the vault for secrets. Needs `workspace.view`.