Autenticação
A autenticação envolve a criação de um token de ID OpenID Connect assinado pelo Google. Para gerar o token, você precisa ter uma Conta de Serviço.
Aqui está um exemplo de como obter uma Conta de Serviço:
Através do frontend em https://app.santoid.com.br, navegue até o menu lateral "Identity" e depois "Service Accounts":

Figura 1: Abrir listagem de Contas de Serviço.
Após clicar em "+ Add" e criar uma nova Conta de Serviço, clique em download para obter o arquivo JSON account-data.json:

Figura 2: Baixar arquivo account-data.json.
Nota: Tokens de ID são JSON Web Tokens (JWT) que expiram aproximadamente uma hora após a criação. Decodifique o token e verifique o tempo exp (unix epoch em segundos) para ver se precisa atualizá-lo.
Exemplo da estrutura do JWT decodificado
{
"iss": <string>,
"azp": <string>,
"aud": <string>,
"sub": <string>,
"hd": <string>,
"email": <string>,
"email_verified": <bool>,
"at_hash": <string>,
"iat": <int>,
"exp": <int>
}
Como decodificar o token
Via Shell
sudo apt install jq -y
jq -R 'split(".") | .[1] | @base64d | fromjson' <<< "<substitua pelo seu token aqui>"
Via Python (requer pacote PyJWT)
import jwt
decoded = jwt.decode(<token>, options={"verify_signature": False})
# exp é o tempo de expiração do token em inteiro no formato Unix Epoch
exp = decoded["exp"]
Gerando um Token de Acesso
Para realizar requisições na API, você precisa trocar as credenciais da sua Conta de Serviço (account-data.json) por um token de acesso.
1. Codificar o arquivo JSON em Base64
O conteúdo do arquivo account-data.json deve ser codificado em Base64 (sem quebras de linha).
Exemplo via Shell (Linux/Mac):
base64 -w 0 account-data.json
Exemplo via Python:
import base64
with open('account-data.json', 'rb') as f:
encoded_string = base64.b64encode(f.read()).decode('utf-8')
print(encoded_string)
2. Solicitar o Token
Envie uma requisição POST para o endpoint de autenticação com o conteúdo codificado.
Endpoint
POST https://api.santoid.com.br/api/v1/service-account/refresh-token
Exemplo de Requisição (cURL)
curl --location 'https://api.santoid.com.br/api/v1/service-account/refresh-token' \
--header 'Content-Type: application/json' \
--data '{
"service_account_base64": "<SEU_JSON_EM_BASE64>"
}'
Resposta de Sucesso (200)
A API retornará uma string contendo o token JWT.
"eyJhbGciOiJSUzI1NiIsImtpZCI6..."
Este token deve ser enviado no header Authorization de todas as requisições subsequentes:
Authorization: Bearer <SEU_TOKEN>
Para mais detalhes técnicos e outros códigos de resposta, consulte a Referência da API.