No serviço hospedado, organizações, membros, chaves de API, créditos e licenças de implantação são gerenciados pela API de organizações em https://ephemer.al/v1. O portal do cliente e o painel a usam por você; esta página é para scripts e integrações.
Autenticação
Estes endpoints agem em nome de uma pessoa. Entre com POST /v1/auth/login e envie o token retornado como token bearer. As sessões duram 30 dias; POST /v1/auth/logout encerra uma antes do prazo.
curl https://ephemer.al/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"…"}'A resposta é {"token": "...", "user": {...}, "organizations": [...]}. Cada organização tem id, name e a sua role. Tudo o que vem abaixo, exceto listar e criar organizações e aceitar um convite, exige a função de proprietário ou administrador na organização indicada no caminho.
Organizações
/v1/organizationsid, name e role./v1/organizations{"name": "..."} e faz de você o proprietário. Retorna 201 com {"id": "org_...", "name": "...", "role": "owner"}./v1/organizations/{id}{"name": "..."}. O nome é aparado e deve ter de 1 a 200 caracteres. Retorna {"id": "org_...", "name": "...", "role": "owner"}. Membros recebem 403.Membros
/v1/organizations/{id}/membersid, email, name, role e avatar_url./v1/organizations/{id}/members/{user_id}/v1/organizations/{id}/members/{user_id}{"role": "admin"} ou {"role": "member"}./v1/organizations/{id}/ownership{"user_id": "..."}. Você passa a ser administrador.Convites
/v1/organizations/{id}/invitations{"email": "...", "role": "member"}. role é admin ou member. Retorna 201 com token, url e email_delivery.email_delivery é accepted quando o provedor de e-mail aceitou a mensagem, o que não garante que ela chegou à caixa de entrada. Se for unavailable ou failed, compartilhe a url retornada de forma privada. Os convites expiram após 7 dias. A pessoa convidada aceita com POST /v1/invitations/accept e {"token": "..."}, conectada com o endereço de e-mail convidado.
Chaves de API
/v1/organizations/{id}/keysid, name, role e created_at. Os segredos nunca são listados./v1/organizations/{id}/keys{"name": "...", "role": "member"}. role é member ou admin e assume por padrão member.{
"id": "key_0b7e4c2a9d1f8356e4a2c7b9d0f1e3a5",
"name": "production-server",
"role": "member",
"key": "eak_…"
}key é retornado apenas uma vez. Guarde-o antes de fechar a resposta./v1/organizations/{id}/keys/{key_id}Perfil
Estes exigem uma sessão de usuário conectado; as chaves de API são recusadas. Os usuários, e cada entrada de membros, trazem avatar_url: um caminho como /v1/users/usr_…/avatar?v=3f2a…, ou null.
/v1/me/avatarContent-Type image/png, image/jpeg ou image/webp, até 256 KiB. Retorna o mesmo corpo de GET /v1/auth/me. No máximo 20 envios por hora./v1/me/avatar/v1/me/password{"current_password": "...", "new_password": "..."}. A nova senha tem de 12 a 72 bytes. As suas outras sessões são encerradas; a que fez a requisição continua conectada. No máximo 10 tentativas por hora./v1/users/{user_id}/avatar404. A URL muda quando a foto muda, então pode ser armazenada em cache indefinidamente.Faturamento
Os valores nestes endpoints usam centavos para os montantes do Stripe e micros para os da carteira. Veja orçamentos e faturamento.
/v1/organizations/{id}/balance{"balance_micros": ..., "reserved_micros": ..., "available_micros": ...}: créditos mantidos, reservados para execuções não liquidadas e disponíveis para novas execuções. Compare available_micros com o orçamento de uma execução antes de iniciá-la./v1/organizations/{id}/billingbalance_micros, reserved_micros, available_microsintegerledgerarrayamount_micros, description, created_at e, quando se aplicam, run_id, payment_id e topup_id.purchase_limitsobjectmin_amount_cents, max_amount_cents e min_threshold_cents. Valide com base nestes valores em vez de fixar limites no código.auto_topupobjectenabled, threshold_cents, amount_cents, payment_method_saved e last_topup_status.payment_methodobject | nullbrand, last4, exp_month, exp_year e source.payment_method_syncstringsynced ou unavailable quando não foi possível acessar o Stripe. Uma consulta que falha não significa que não há cartão.stripe_configuredboolean/v1/organizations/{id}/billing/checkout{"amount_cents": 2500} e retorna {"url": "..."} para o Stripe Checkout. Adicione "save_payment_method": true para salvar o cartão para recargas automáticas. Os valores vão de 500 a 1.000.000 de centavos./v1/organizations/{id}/billing/portal{"url": "..."} para o portal do cliente do Stripe, onde os cartões são gerenciados./v1/organizations/{id}/billing/auto-topup{"enabled": true, "threshold_cents": 1000, "amount_cents": 5000, "consent": true} ou a desativa com {"enabled": false}. Para ativar, é preciso ter um cartão salvo./v1/organizations/{id}/billing/paymentslimit (de 1 a 100, padrão 25) e cursor e retorna {"payments": [...], "next_cursor": "..."}. Cada pagamento tem amount_cents, refunded_cents, disputed_cents, refund_status, created_at, topup_id e receipt_endpoint./v1/organizations/{id}/billing/payments/{payment_id}/receipt{"url": "..."} para o recibo do Stripe, ou 404 se o Stripe não forneceu um.Licenças de implantação
/v1/organizations/{id}/license{"entitlement": null}./v1/organizations/{id}/deployments/v1/organizations/{id}/deployments{"name": "..."} e retorna o token da licença uma única vez, com o ID de máquina gerado pelo Ephemeral (ou o machine_id que você enviar)./v1/organizations/{id}/deployments/{deployment_id}