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/domainLimite de requisições: 10 por minuto (contado por IP de origem).
Parâmetros de Path
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID do projeto |
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
x-api-key ou Authorization | Sim | API Key da organização ou token de usuário |
x-organization-id | Com token de usuário | Organização ativa do projeto. Dispensável com API Key da organização |
Content-Type: application/json | Sim | Necessário por haver body JSON |
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain | string | Sim | Novo 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
| Status | Quando ocorre |
|---|---|
400 | domain inválido (tamanho, caracteres ou hífen no início/fim) |
401 | O plano do projeto não permite subdomain personalizado |
404 | Projeto não encontrado |
409 | O projeto é privado, ou o subdomain solicitado não está disponível |
503 | Nã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-domainsAceita 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
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
custom_domains | array de strings | Sim | Lista 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
| Status | Quando ocorre |
|---|---|
400 | Corpo inválido, domínio reservado, ou mais de um domínio novo na mesma chamada |
404 | Projeto não encontrado |
409 | O 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
409e 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