Atualizar Domínio do Projeto

Altera o subdomain do projeto na plataforma Zenifra.

Esta operação só se aplica a projetos HTTP com exposure: "public". Projetos privados não possuem domínio público; altere a exposição do projeto para pública antes de configurar subdomain ou domínios personalizados.

Permissões necessárias

O scope mínimo para alterar subdomain ou domínios personalizados é project.domain.update em project:<project-id>. A sessão owner tem acesso completo; assistant, member e API Keys da organização precisam desse grant.

PATCH /v1/project/:id/domain

Limite de requisições: 10 por minuto (contado por IP de origem).

Parâmetros de Path

ParâmetroTipoDescrição
idstringID do projeto

Headers

HeaderObrigatórioDescrição
x-api-key ou AuthorizationSimAPI Key da organização ou token de usuário
x-organization-idCom token de usuárioOrganização ativa do projeto. Dispensável com API Key da organização
Content-Type: application/jsonSimNecessário por haver body JSON

Body

CampoTipoObrigatórioDescrição
domainstringSimNovo subdomain (de 3 a 54 caracteres, letras minúsculas, números e hífens internos)

Exemplo

{
  "domain": "meu-subdomain"
}

Resposta

{
  "status": "success",
  "message": "updated with success"
}

Erros

StatusQuando ocorre
400domain inválido (tamanho, caracteres ou hífen no início/fim)
401O plano do projeto não permite subdomain personalizado
404Projeto não encontrado
409O projeto é privado, ou o subdomain solicitado não está disponível
503Não foi possível atribuir o endereço agora; tente novamente em instantes

Domínios personalizados

Define a lista de domínios personalizados do projeto.

PATCH /v1/project/:id/custom-domains

Aceita sessão de usuário ou API Key da organização e exige project.domain.update em project:<project-id>. Limite de requisições: 10 por minuto (contado por IP de origem).

Body

CampoTipoObrigatórioDescrição
custom_domainsarray de stringsSimLista completa de domínios do projeto (máximo 20). Domínios que não estiverem na lista são removidos
{
  "custom_domains": ["www.exemplo.com"]
}

Cada chamada pode adicionar no máximo um domínio novo. Nomes reservados da plataforma são rejeitados.

Resposta

{
  "status": "success",
  "message": "custom domains updated with success",
  "custom_domains": ["www.exemplo.com"],
  "custom_domain_setup": [
    {
      "hostname": "www.exemplo.com",
      "status": "pending",
      "ssl_status": "pending_validation",
      "dns_records": []
    }
  ]
}

custom_domain_setup traz, para cada domínio adicionado, o status da configuração, o status do certificado e os registros DNS que você precisa criar no seu provedor de DNS.

Erros

StatusQuando ocorre
400Corpo inválido, domínio reservado, ou mais de um domínio novo na mesma chamada
404Projeto não encontrado
409O projeto é privado (project is not publicly exposed), ou o domínio não está disponível

Exemplos

curl -X PATCH "https://api.zenifra.com/v1/project/507f1f77bcf86cd799439011/domain" \
  -H "x-api-key: sua-api-key" \
  -H "x-organization-id: sua-organization-id" \
  -H "Content-Type: application/json" \
  -d '{"domain": "meu-subdomain"}'

Python

import requests

API_KEY = "sua-api-key"
ORGANIZATION_ID = "sua-organization-id"
PROJECT_ID = "507f1f77bcf86cd799439011"

response = requests.patch(
    f"https://api.zenifra.com/v1/project/{PROJECT_ID}/domain",
    headers={"x-api-key": API_KEY, "x-organization-id": ORGANIZATION_ID},
    json={"domain": "meu-subdomain"}
)
print(response.json())

Regras do Domínio

  • Mínimo de 3 caracteres
  • Máximo de 54 caracteres
  • Apenas letras minúsculas, números e hífens internos
  • Não pode começar ou terminar com hífen
  • O subdomain solicitado é reservado exatamente como informado; se já estiver em uso, a API retorna 409 e não o renomeia silenciosamente
  • O domínio padrão resultante da Zenifra usa a zona clients.zenifra.com
  • Projetos HTTP privados (exposure: "private") não recebem subdomain nem aceitam atualização de domínio público

Última atualização em

Nessa página