Autenticação OTIMUS¶
O OTIMUS usa autenticação por token fixo em header, com um segundo header
sistema que identifica o cliente integrador (no caso, AGENTPRO).
Headers obrigatórios¶
POST /api/v1/... HTTP/1.1
Host: <clinica>.otimusclinic.com
sistema: AGENTPRO
token: <token-da-clinica>
Content-Type: application/json
Accept: */*
Base URL por clínica¶
Cada clínica possui um subdomínio (e às vezes porta) próprio:
| Clínica | Base URL |
|---|---|
| MEDCENTER | https://medcenteracai-node.otimusclinic.com/api/v1 |
| CLINFETO | https://clinfeto.otimusclinic.com:9100/api/v1 |
A porta :9100 do Clinfeto
Algumas instâncias OTIMUS expõem a API em porta alternativa. Configure via
env OTIMUS_API_URL incluindo a porta. Não presuma 443.
Implementação recomendada (config.py + wts_client.py / scheduling.py)¶
# config.py
import os
OTIMUS_API_URL = os.getenv("OTIMUS_API_URL", "")
OTIMUS_TOKEN = os.getenv("OTIMUS_TOKEN", "")
# scheduling.py (ou cliente equivalente)
from config import OTIMUS_API_URL, OTIMUS_TOKEN
def _otimus_headers() -> dict:
return {
"sistema": "AGENTPRO",
"token": OTIMUS_TOKEN,
"Content-Type": "application/json",
"Accept": "*/*",
}
Anti-padrão encontrado no MEDCENTER¶
No projeto MEDCENTER a base URL e o token estão hardcoded no código:
# scheduling.py:26-32 (MEDCENTER)
OTIMUS_BASE_URL = "https://medcenteracai-node.otimusclinic.com/api/v1"
OTIMUS_HEADERS = {
"sistema": "AGENTPRO",
"token": "aWqBPKOwKwMZW8iyuiHb7A5SDtccTDwESrDEJ697774a4b1e96",
"Content-Type": "application/json",
"Accept": "*/*",
}
Nunca replicar
Isto não é o padrão. Foi um atalho histórico do MEDCENTER. Em projetos novos sempre carregue de env vars. Ver Hardcoding crítico.
Rotação de token¶
Para revogar/rotacionar:
- Pedir à clínica novo token no OTIMUS.
- Atualizar secret store (GitHub Secrets / ambiente Docker).
docker compose up -d --force-recreate <container>para recarregar.-
Testar com
curl:
TLS / verificação¶
Tanto MEDCENTER quanto CLINFETO chamam o OTIMUS com requests sem desabilitar
verificação TLS. Mantenha assim. Se aparecer erro de certificado em uma
instância nova, exija à clínica um certificado válido — não use verify=False
em produção.
Tempo limite (timeout)¶
Padrão do projeto: 30 segundos para todas as chamadas OTIMUS.
Se OTIMUS estiver lento e causar timeout, a estratégia é retry duas vezes
antes de retornar FALHA_CONSULTA. Ver Cliente OTIMUS.