Automatize o OrbitPage sem compartilhar uma sessão do painel.
Crie tokens com escopo definido e gerencie o painel OrbitPage de ponta a ponta a partir de scripts, n8n, backends ou CI.
Revisão mais recente: 4 de agosto de 2026Gira o OrbitPage com tokens pessoais: edite e publique páginas e use média, domínios, análises, IA, Shop, newsletters e faturação.
Três limites de credenciais abrangem três tarefas diferentes.
Esta página documenta o limite REST versionado. Um token OrbitPage não é uma chave de provedor OpenAI e nunca autentica endpoints de painel privado.
| Superfície | Credencial | Finalidade e suporte |
|---|---|---|
| API REST de automação | op_pat_... | API externa suportada para scripts, n8n, backends de servidor e CI. Ele gerencia o espaço de trabalho vinculado ao token por meio de /api/v1. |
| OrbitPage AI | op_pat_... + ai:read/ai:write | O fluxo de plano/compromisso público prepara e aplica propostas de IA validadas. Qualquer credencial de provedor OpenAI permanece uma preocupação separada do lado do servidor e nunca é um token de portador OrbitPage. |
| APIs do painel | Sessão do Firebase em SaaS; sessão de administração no OSS | Rotas privadas do navegador para o aplicativo. Eles não são um contrato de integração externa estável e não devem receber tokens de API pessoais. |
Recursos versionados cobrem o painel; os pontos finais do link mostram o loop de atualização segura.
Cada solicitação está vinculada ao espaço de trabalho selecionado quando o token foi criado. Um token não pode escolher outro locatário na URL ou no corpo da solicitação, e as permissões atuais do espaço de trabalho são verificadas novamente em cada chamada.
O contrato usa operações HTTPS JSON padrão — GET, POST, PUT, PATCH e DELETE — e suporta curl, nó de solicitação HTTP do n8n e clientes OpenAPI gerados.
GET/api/v1/linksLer cada bloco de página
Retorna a coleção ordenada, a identidade do espaço de trabalho e a revisão atual.
Escopo:links:readPATCH/api/v1/links/{linkId}Alterar um bloco existente
Mescla campos editáveis, valida a página inteira e publica a nova revisão.
Escopo:links:writePUT/api/v1/linksSubstitua a coleção completa
Use isto para adicionar, remover ou reordenar blocos após ler e preservar a coleção atual.
Escopo:links:write| Superfície do painel | Caminhos de API | Escopos |
|---|---|---|
| Espaço de trabalho e rascunho completo | /workspace · /draft | workspace:read |
| Perfil, tema e subpáginas | /profile · /theme · /pages | profile:* · theme:* · pages:* |
| Configurações gerais, de privacidade e de menu | /settings/* | settings:* |
| Publicação, versões e backup | /publication · /versions · /backup | publication:* · backup:* |
| Mídia e domínios personalizados | /media/* · /domains/* | media:* · domains:* |
| Análise e alterações revisadas na IA | /analytics · /ai/* | analytics:read · ai:* |
| Loja e newsletter | /shop/* · /newsletter/* | shop:* · newsletter:* |
| Equipe e faturamento | /team/* · /billing/* | team:* · billing:* |
Cada operação de painel suportada, agrupada pela superfície que controla.
Os caminhos abaixo são relativos a https://orbitpage.com/api/v1. Método, caminho e escopo são o contrato de integração estável; esquemas de solicitação, formatos, valores enum e modelos de resposta residem no documento OpenAPI 3.1 vinculado. Rotas desconhecidas retornam 404 e métodos não suportados nunca são convertidos silenciosamente.
01Espaço de trabalho, conteúdo e aparênciaInspecione a área de trabalho vinculada ao token e gerencie seu rascunho completo, perfil, blocos, tema e subpáginas.11 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/workspace | Ler espaço de trabalho, plano, acesso, uso e revisão | workspace:read | — |
GET/draft | Leia o rascunho completo da página editável | workspace:read | — |
GET/links | Listar blocos de páginas e a revisão atual | links:read | — |
PUT/links | Substitua a coleção completa de blocos ordenados | links:write | LinksReplaceRequest · If-Match |
PATCH/links/{linkId} | Atualizar campos editáveis em um bloco | links:write | LinkPatch · If-Match |
GET/profile | Ler identidade e metadados do perfil | profile:read | — |
PATCH/profile | Atualizar campos de perfil | profile:write | JSON · If-Match · ?publish=1 |
GET/theme | Leia o rascunho do tema ativo | theme:read | — |
PUT/theme | Substituir o tema de rascunho | theme:write | JSON · If-Match · ?publish=1 |
GET/pages | Listar subpáginas configuradas | pages:read | — |
PUT/pages | Substituir subpáginas configuradas | pages:write | array | { pages } · If-Match · ?publish=1 |
02Configurações e publicaçãoMenus de controle, privacidade, arquivos públicos gerenciados, geração de mapas de sites e ciclo de vida explícito de rascunho para público.9 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/settings | Ler configurações de menu, privacidade, arquivo de texto e mapa do site | settings:read | — |
PUT/settings/menu | Atualizar configurações do menu | settings:write | JSON · If-Match · ?publish=1 |
PUT/settings/privacy | Atualizar configurações de consentimento e privacidade | settings:write | JSON · If-Match · ?publish=1 |
POST/settings/text-files | Criar um arquivo de texto público gerenciado | settings:write | TextFileCreateRequest · If-Match |
PUT/settings/text-files/{key} | Atualizar um arquivo de texto público gerenciado | settings:write | TextFileUpdateRequest · If-Match |
DELETE/settings/text-files/{key} | Excluir um arquivo de texto público gerenciado | settings:write | If-Match |
POST/settings/sitemap | Gerar novamente o mapa do site gerenciado | settings:write | If-Match |
GET/publication | Ler rascunho e status de publicação | publication:read | — |
POST/publication | Publicar o último rascunho validado | publication:write | — |
03Versões, backups e mídiaRestaure o conteúdo revisado, exporte ou importe dados do espaço de trabalho e execute o ciclo de vida de mídia de reserva-upload-finalização.9 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/versions | Listar versões publicadas e restauráveis das páginas | backup:read | — |
POST/versions/{revision}/restore | Restaurar uma versão histórica e publicá-la imediatamente | backup:write | If-Match |
GET/backup | Exportar um backup de espaço de trabalho gerenciado | backup:read | ?sections=profile,links,… |
POST/backup/restore | Validar e restaurar um backup gerenciado e publicá-lo imediatamente | backup:write | BackupRestoreRequest · If-Match |
GET/media | Listar metadados e uso de mídia do espaço de trabalho | media:read | — |
POST/media/cleanup | Visualizar ou excluir mídia não referenciada | media:write | MediaCleanupRequest |
POST/media/uploads/reserve | Reservar um upload direto de mídia | media:write | MediaUploadReserveRequest |
POST/media/uploads/finalize | Finalizar e registrar um objeto carregado | media:write | UploadTokenRequest |
DELETE/media/uploads | Anular um upload de mídia reservada | media:write | UploadTokenRequest |
04Domínios, análises e IAGerencie a ativação de DNS, leia relatórios de desempenho limitados ao plano e aplique alterações de IA somente após uma visualização validada.8 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/domains | Leia o status do domínio e os requisitos de DNS | domains:read | — |
POST/domains | Conectar um domínio personalizado | domains:write | DomainConnectRequest |
POST/domains/refresh | Atualizar verificação e ativação | domains:write | — |
DELETE/domains | Desconectar o domínio personalizado | domains:write | — |
GET/analytics | Leia o relatório analítico do painel | analytics:read | ?days=7|30|90 |
GET/ai/allowance | Leia a permissão de IA e o uso atual | ai:read | — |
POST/ai/plan | Gere uma visualização validada da mudança de IA | ai:write | AiPlanRequest |
POST/ai/commit | Confirmar uma visualização de IA previamente validada | ai:write | AiCommitRequest |
05ShopConecte o comércio, gerencie produtos e aparência, carregue arquivos protegidos e publique ou cancele a publicação do bloco Shop sincronizado.10 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/shop | Ler produtos, pedidos, clientes e o estado da Shop; a operação pode inicializar dados privados da Shop e atualizar o estado do Stripe | shop:read | ?refresh=0|1 |
POST/shop/connect | Criar ou continuar a integração do Stripe Connect | shop:write | — |
POST/shop/products | Criar ou atualizar um produto da Loja | shop:write | ShopProductRequest |
DELETE/shop/products/{productId} | Excluir um produto da Loja | shop:write | — |
PUT/shop/appearance | Substituir toda a aparência da loja | shop:write | ShopAppearanceRequest |
POST/shop/publish | Publicar Shop e o bloco de página sincronizado | shop:write | — |
POST/shop/unpublish | Cancelar publicação da loja | shop:write | — |
POST/shop/uploads/reserve | Reservar um upload de arquivo de produto | shop:write | ShopFileUploadReserveRequest |
POST/shop/uploads/finalize | Finalizar o upload de um arquivo de produto | shop:write | ShopUploadTokenRequest |
DELETE/shop/uploads | Cancelar o carregamento reservado de um ficheiro de produto | shop:write | ShopUploadTokenRequest |
06Boletim InformativoConfigure a entrega SMTP criptografada, gerencie assinantes consentidos e controle o ciclo de vida completo da campanha.9 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/newsletter | Ler assinantes, campanhas e estado SMTP | newsletter:read | — |
PUT/newsletter/settings | Atualizar configurações SMTP criptografadas | newsletter:write | NewsletterSmtpRequest |
POST/newsletter/settings/test | Envie um teste de configuração | newsletter:write | EmailRecipientRequest |
POST/newsletter/subscribers | Adicionar ou atualizar um assinante consentido | newsletter:write | NewsletterSubscriberRequest |
DELETE/newsletter/subscribers/{subscriberId} | Remover um assinante | newsletter:write | — |
POST/newsletter/campaigns | Criar ou atualizar uma campanha | newsletter:write | NewsletterCampaignRequest |
DELETE/newsletter/campaigns/{campaignId} | Excluir uma campanha | newsletter:write | — |
POST/newsletter/campaigns/{campaignId}/send | Enfileirar ou agendar uma campanha | newsletter:write | NewsletterSendRequest |
DELETE/newsletter/campaigns/{campaignId}/send | Cancelar uma campanha na fila | newsletter:write | — |
07Equipe e faturamentoGerencie colaboradores e convites, inspecione assinaturas e abra check-out autenticado do Stripe ou sessões do portal.9 operações
| Método e caminho | Operação | Escopo necessário | Entrada e controles |
|---|---|---|---|
GET/team | Listar membros e convites pendentes | team:read | — |
POST/team/invitations | Crie um link de convite para o espaço de trabalho sem enviar e-mail | team:write | TeamInvitationRequest |
PATCH/team/members/{memberUid} | Atualizar uma função de membro | team:write | TeamRoleRequest |
DELETE/team/members/{memberUid} | Remover um membro da área de trabalho | team:write | — |
DELETE/team/invitations/{invitationId} | Revogar um convite pendente | team:write | — |
GET/billing | Leia o plano e o estado da assinatura | billing:read | — |
POST/billing/checkout | Criar um checkout do plano Stripe | billing:write | BillingCheckoutRequest |
POST/billing/portal | Criar uma sessão do portal de cobrança Stripe | billing:write | BillingPortalRequest |
POST/billing/promotion-code | Resgatar um código promocional e sincronizar os benefícios do plano | billing:write | PromotionCodeRedeemRequest |
Crie um token para uma automação e um ambiente.
Abra Painel > Conta > Tokens de API pessoais. Dê ao token um nome que identifique seu proprietário e finalidade, escolha espaço de trabalho completo, espaço de trabalho somente leitura, somente links ou escopos de recursos individuais e, em seguida, selecione uma expiração de 30, 90 ou 365 dias — ou nenhuma expiração quando já existir um processo de rotação documentado.
Confirme sua identidade
A criação de token é uma ação confidencial da conta e requer uma autenticação recente do Google ou de senha.
Escolha o menor escopo
Os escopos de leitura e gravação são separados para cada recurso — por exemplo theme:read, theme:write, shop:read e shop:write. Um escopo de gravação inclui automaticamente seu escopo de leitura correspondente.
Copie o segredo uma vez
OrbitPage armazena um hash SHA-256, não o segredo recuperável. Se for perdido, revogue-o e crie outro token.
Armazene-o fora do código
Use uma variável de ambiente ou um armazenamento secreto de CI. Nunca coloque o token em uma URL, repositório, captura de tela, pacote de navegador ou log de construção.
export ORBITPAGE_TOKEN='op_pat_...'
curl --silent --show-error --include \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
https://orbitpage.com/api/v1/links$env:ORBITPAGE_TOKEN = 'op_pat_...'
$headers = @{ Authorization = "Bearer $env:ORBITPAGE_TOKEN" }
Invoke-RestMethod -Uri 'https://orbitpage.com/api/v1/links' -Headers $headersLeia a coleção e capture sua revisão antes de cada alteração.
O corpo da resposta contém os blocos ordenados nos dados e a revisão numérica atual. A mesma revisão aparece em X-OrbitPage-Revision e como uma ETag fraca. Salve qualquer valor para If-Match; não adivinhe ou armazene em cache em execuções não relacionadas.
HTTP/2 200
etag: W/"42"
x-orbitpage-revision: 42
content-type: application/json; charset=utf-8
{
"object": "list",
"data": [
{
"id": "portfolio-main",
"type": "link",
"title": "Selected work",
"description": "Recent projects and case studies",
"url": "https://example.com/work",
"isActive": true,
"status": "live",
"availability": "available",
"clickCount": 18,
"position": 0
}
],
"revision": 42,
"workspace": {
"tenantId": "tenant_...",
"pageId": "page_...",
"username": "your-page"
}
}dataA coleção completa de blocos ordenados. A ordem da matriz é a ordem visual das páginas.revisionA versão de simultaneidade otimista usada por cada gravação.workspaceO locatário, a página e o nome de usuário permanentemente vinculados a esse token.ETagO valor mais seguro para passar diretamente como o próximo cabeçalho If-Match.Use PATCH para a menor alteração em um bloco existente.
Codifique em URL o ID retornado por GET e envie apenas os campos que devem ser alterados. OrbitPage mescla o patch no bloco existente, protege os campos de identidade e análise, valida a página completa em relação ao seu esquema e plano e publica imediatamente.
curl --request PATCH \
--url https://orbitpage.com/api/v1/links/portfolio-main \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
--header 'Content-Type: application/json' \
--header 'If-Match: W/"42"' \
--data '{
"title": "Book a consultation",
"url": "https://example.com/book",
"isActive": true
}'| Grupo de campos | Exemplos | Comportamento |
|---|---|---|
| Conteúdo | title, description, url, content, textItems | Editável quando válido para o tipo de bloco existente. |
| Visibilidade e tempo | isActive, status, availability, startDate, endDate, timezone | Validado juntamente com regras de agendamento e plano. |
| Aparência e mídia | icon, coverImage, backgroundColor, alignment, size | Aceito somente quando os valores correspondem ao esquema da página. |
| Protegido | id, type, clickCount, ctaClicks, systemKey | Ignorado ou rejeitado. Os blocos gerenciados pelo sistema não podem ser corrigidos. |
Use PUT somente quando a própria coleção precisar ser alterada.
PUT substitui a coleção ordenada completa. É a operação para adicionar um bloco, remover um bloco ou alterar a ordem das páginas. Não é um atalho para atualizar um título: omitir um bloco o remove da página.
const token = process.env.ORBITPAGE_TOKEN;
if (!token) throw new Error("ORBITPAGE_TOKEN is missing");
const endpoint = "https://orbitpage.com/api/v1/links";
const authorization = { Authorization: `Bearer ${token}` };
const read = await fetch(endpoint, { headers: authorization });
if (!read.ok) throw new Error(`GET failed: ${read.status} ${await read.text()}`);
const current = await read.json();
const revision = read.headers.get("etag") ?? String(current.revision);
// Preserve the full collection and change only the intended block.
const links = current.data.map((block) =>
block.id === "portfolio-main"
? { ...block, title: "Work and case studies" }
: block
);
const write = await fetch(endpoint, {
method: "PUT",
headers: {
...authorization,
"Content-Type": "application/json",
"If-Match": revision
},
body: JSON.stringify({ links })
});
if (!write.ok) throw new Error(`PUT failed: ${write.status} ${await write.text()}`);
console.log(await write.json());Use o nó n8n nativo ou o mesmo contrato de um cliente HTTP, cliente gerado, backend ou executor de CI.
OrbitPage não requer um SDK: qualquer cliente HTTPS que possa enviar JSON, autenticação de portador e solicitações GET, POST, PUT, PATCH e DELETE padrão é compatível. Os padrões abaixo cobrem as partes com estado que uma integração deve tratar explicitamente.
Nó n8n nativo
Instale o n8n-nodes-orbitpage e crie uma credencial da OrbitPage API com o token pessoal e a Base URL. O teste de ligação faz uma leitura segura do espaço de trabalho; depois, as ações guiadas gerem caminhos, permissões, ligações entre itens e escritas com controlo de revisão sem guardar o segredo no JSON do workflow.
Rascunho e publicação
As gravações de perfil, tema, páginas e configurações suportadas exigem If-Match e atualizam o rascunho por padrão. Adicione ?publish=1 para uma publicação imediata elegível ou revise diversas alterações adiadas e chame POST /publication uma vez. Link PATCH e PUT são publicados imediatamente.
Upload direto de mídia
Reserve primeiro, faça upload dos bytes para o URL de armazenamento retornado e finalize. Envie o token do portador OrbitPage apenas para orbitpage.com; use apenas o método e os cabeçalhos temporários retornados para a solicitação de armazenamento.
Comprometimento de IA revisado
O plano retorna uma visualização validada sem alterar a página. Armazene e revise seu previewToken e, em seguida, confirme exatamente essa proposta. Defina a publicação no corpo do commit somente quando a automação estiver autorizada a tornar o resultado público.
Install community node: n8n-nodes-orbitpage
Credential: OrbitPage API
OrbitPage API Token: op_pat_...
OrbitPage Base URL: https://orbitpage.com
Connection test: GET /api/v1/workspace
First safe workflow step:
Node: OrbitPage
Resource: Workspace & Draft
Operation: Get Workspace Overview
First revision-controlled write:
Resource: Theme
Operation: Replace Entire Theme Draft
Revision Check: Use Latest Automatically (Recommended)# 1. Reserve an upload and receive uploadUrl, slot and uploadToken
POST /api/v1/media/uploads/reserve
{ "filename": "cover.jpg", "contentType": "image/jpeg", "sizeBytes": 245760 }
# 2. Upload the bytes directly using the returned URL, method and headers
# Do not forward the OrbitPage Authorization header to the storage URL.
# 3. Register the uploaded object in the workspace
POST /api/v1/media/uploads/finalize
{ "slot": "<slot>", "uploadToken": "<uploadToken>" }# 1. Generate a validated preview without changing the page
POST /api/v1/ai/plan
{ "message": "Make the primary CTA clearer" }
# 2. Review the returned operations and previewToken
# 3. Apply the exact reviewed preview; publishing remains explicit
POST /api/v1/ai/commit
{ "previewToken": "<previewToken>", "publish": false }Use a Base URL https://orbitpage.com, sem /api/v1. Um guardado bem-sucedido lê /api/v1/workspace e confirma o token, a associação ao espaço de trabalho e a permissão workspace:read sem alterar dados.
Um erro 401 requer um token de substituição válido; um 403, a permissão em falta. Se os redirecionamentos se repetirem, verifique a Base URL ou o proxy inverso. Partilhe com o suporte o estado e o código JSON, nunca o segredo.
Trate as credenciais de automação como ciclos de vida curtos e observáveis.
Uma área de trabalho suporta até dez tokens pessoais ativos por usuário. A lista Conta mostra o prefixo, escopos, datas de criação e expiração de cada token e uso recente. Os carimbos de data/hora usados pela última vez são escritos intencionalmente no máximo uma vez a cada cinco minutos.
name: Update OrbitPage
on: workflow_dispatch
jobs:
update:
runs-on: ubuntu-latest
env:
ORBITPAGE_TOKEN: ${{ secrets.ORBITPAGE_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: node scripts/update-orbitpage.mjs- Nomeie os tokens por sistema e ambiente — por exemplo, “Ações do GitHub · produção”.
- Faça a rotação criando o substituto, atualizando o armazenamento secreto, testando uma leitura e, em seguida, revogando o token antigo.
- Revogar imediatamente após suspeita de divulgação, mudança de propriedade ou desativação do fluxo de trabalho. A revogação entra em vigor na próxima solicitação.
- Não crie um token compartilhado de longa duração. Credenciais separadas tornam os registros, a rotação e a resposta a incidentes compreensíveis.
Ramificação no status HTTP e código legível por máquina.
Erros usam JSON com erro e código. Não analise a sentença humana para controlar um fluxo de trabalho. A maioria das respostas 4xx exige a alteração da solicitação ou credencial; apenas conflitos de revisão e limites de taxa pertencem a um caminho de nova tentativa automática.
INVALID_JSON · LINKS_REQUIRED · LINK_PATCH_INVALIDCorrija o corpo da solicitação ou os campos rejeitados pelo esquema da página.PERSONAL_TOKEN_*Substitua um token ausente, inválido, expirado ou revogado. Não tente novamente com o mesmo segredo.PERSONAL_TOKEN_SCOPE_DENIED · SYSTEM_LINK_PROTECTEDUse o escopo ou parada necessária: a identidade atual não tem permissão para executar esta operação.LINK_NOT_FOUNDAtualize a coleção; o ID do bloco pode ter sido removido ou substituído.revision_conflictGET novamente, aplique novamente a alteração pretendida ao novo estado e tente novamente com a nova revisão.REQUEST_TOO_LARGEMantenha o corpo JSON igual ou inferior a 768 KiB.UNSUPPORTED_CONTENT_ENCODINGEnvie um corpo de solicitação JSON descompactado.revision_requiredAdicione If-Match usando a revisão ou ETag retornada pelo GET mais recente.RATE_LIMITEDAguarde Retry-After e tente novamente com espera exponencial e jitter.As proteções atuais permitem 120 solicitações por minuto e 5.000 solicitações por dia por token. Os limites podem tornar-se mais rigorosos durante a proteção contra abuso; sempre honre Retry-After.
Uma integração segura é estreita, secreta e reconhece revisão.
Privilégio mínimo
Use somente leitura, a menos que a tarefa precise ser publicada. Os recursos de token nunca podem exceder a função atual do espaço de trabalho do proprietário.
Somente no lado do servidor
Chame a API a partir de um script confiável, back-end ou executor de CI. Um pacote de navegador, cliente móvel ou repositório público não pode manter o segredo do portador.
Nenhuma gravação cega
Faça um pedido GET imediatamente antes de escrever e use If-Match. Se um erro 409 devolver revision_conflict, leia novamente o recurso e reaplique a alteração pretendida; para qualquer outro código, resolva a condição de negócio documentada.
Validar resultados
Verifique o status da resposta, revisão e dados retornados. Para alterações importantes, abra a página pública após a publicação e alerte sobre falhas sem registrar o token.
A API REST de automação de token pessoal é um recurso SaaS gerenciado.
O repositório de código aberto contém uma API Express usada por seu painel integrado, mas essa API de sessão administrativa interna não é o mesmo contrato de automação com versão. Não envie um token op_pat para um servidor auto-hospedado e não envie um JWT de administrador auto-hospedado para orbitpage.com/api/v1.
Utilize este guia, o contrato OpenAPI e os tokens pessoais criados em Conta.
Use o painel incluído na mesma origem confiável. A documentação do repositório explica os limites internos para contribuidores e mantenedores.