Visão Geral da API
Referência da API HTTP do Potato — endpoints administrativos para gerenciar anotadores, acionar exportações, consultar estatísticas de progresso e integrar com pipelines externos.
O Potato fornece endpoints de API HTTP para integração com frontends personalizados, scripts de automação ou sistemas externos.
Visão Geral
URL Base
http://localhost:8000
Autenticação
A maioria dos endpoints exige uma sessão ativa, estabelecida pelos endpoints de login e mantida por cookies.
Para acesso programático:
- Use cookies de sessão de um navegador
- Use o modo de depuração com criação automática de usuário
- Implemente o fluxo de login programaticamente
Formato da Resposta
Todos os endpoints da API retornam respostas em JSON. As respostas de erro incluem um campo error.
Gerenciamento de Sessão
Login
POST /auth
Content-Type: application/x-www-form-urlencoded
username=your_username&password=your_passwordVerificar Sessão
GET /api/current_instanceResposta:
{
"instance_id": "item_001",
"current_index": 0,
"total_instances": 100
}Logout
POST /logoutEndpoints de Anotação
Obter Instância Atual
GET /api/current_instanceRetorna informações sobre a instância de anotação atual do usuário.
Obter Conteúdo da Instância
GET /api/spans/{instance_id}Retorna o conteúdo de texto e as anotações de span existentes.
Resposta:
{
"instance_id": "item_001",
"text": "The quick brown fox jumps over the lazy dog.",
"spans": [
{
"id": "span_123",
"schema": "entities",
"label": "ANIMAL",
"start": 16,
"end": 19,
"text": "fox",
"color": "#ff6b6b"
}
]
}Obter Anotações
GET /get_annotations?instance_id={instance_id}Retorna todas as anotações de uma instância específica.
Enviar Anotação
POST /updateinstance
Content-Type: application/json
{
"instance_id": "item_001",
"annotations": {
"sentiment:positive": "1"
},
"span_annotations": [
{
"schema": "entities",
"name": "PERSON",
"start": 0,
"end": 5,
"value": "true"
}
]
}Resposta (Sucesso):
{
"status": "success",
"processing_time_ms": 15
}Resposta (Com Controle de Qualidade):
{
"status": "success",
"qc_result": {
"type": "gold_standard",
"correct": false,
"gold_label": {"sentiment": "positive"}
}
}Navegar até uma Instância
POST /go_to
Content-Type: application/json
{"go_to": "item_005"}Ou por ação:
{"action": "next_instance"}Informações de Esquema
Obter Esquemas de Anotação
GET /api/schemasObter Cores dos Rótulos
GET /api/colorsObter Destaques de Palavras-Chave
GET /api/keyword_highlights/{instance_id}Endpoints da API de Administração
Os endpoints de administração exigem privilégios de administrador.
Verificação de Saúde
GET /admin/healthVisão Geral do Painel
GET /admin/api/overviewResposta:
{
"total_items": 1000,
"total_annotations": 5000,
"total_users": 25,
"completion_rate": 0.45
}Obter Anotadores
GET /admin/api/annotatorsObter Instâncias
GET /admin/api/instances?status=completed&limit=100Obter Configuração
GET /admin/api/configAtualizar Configuração
POST /admin/api/config
Content-Type: application/json
{"setting_name": "value"}API de Controle de Qualidade
Métricas de Controle de Qualidade
GET /admin/api/quality_controlRetorna estatísticas de verificações de atenção e padrões de referência.
Métricas de Concordância
GET /admin/api/agreementRetorna o alfa de Krippendorff por esquema.
API do Assistente de IA
Obter Sugestão de IA
GET /get_ai_suggestion?instance_id={instance_id}Obter Ajuda do Assistente de IA
GET /api/ai_assistant?instance_id={instance_id}&schema={schema_name}Exemplo: Fluxo Completo de Anotação
import requests
BASE_URL = "http://localhost:8000"
session = requests.Session()
# 1. Login
session.post(f"{BASE_URL}/auth", data={
"username": "annotator1",
"password": "password123"
})
# 2. Get current instance
response = session.get(f"{BASE_URL}/api/current_instance")
instance_id = response.json()["instance_id"]
# 3. Get instance content
response = session.get(f"{BASE_URL}/api/spans/{instance_id}")
print(f"Text: {response.json()['text']}")
# 4. Submit annotation
session.post(f"{BASE_URL}/updateinstance", json={
"instance_id": instance_id,
"annotations": {"sentiment:positive": "1"}
})
# 5. Navigate to next instance
session.post(f"{BASE_URL}/go_to", json={"action": "next_instance"})Exemplo: Monitoramento Administrativo
import requests
BASE_URL = "http://localhost:8000"
# Get overview
overview = requests.get(f"{BASE_URL}/admin/api/overview").json()
print(f"Progress: {overview['completion_rate']*100:.1f}%")
# Get agreement metrics
agreement = requests.get(f"{BASE_URL}/admin/api/agreement").json()
print(f"Agreement: alpha = {agreement['overall']['average_krippendorff_alpha']:.3f}")Respostas de Erro
Todos os endpoints podem retornar respostas de erro:
{"error": "Description of the error"}Códigos de status HTTP comuns:
400- Requisição Inválida (parâmetros inválidos)401- Não Autorizado (sem sessão)403- Proibido (permissões insuficientes)404- Não Encontrado500- Erro Interno do Servidor
Leitura Complementar
- Painel de Administração - Interface administrativa baseada na web
- Controle de Qualidade - API de métricas de qualidade
- Rastreamento Comportamental - API de rastreamento de interações
Para detalhes de implementação, consulte a documentação de origem.