Os arquivos da cidade
Tudo que a delegacia sabe está nestes arquivos. Cada um tem um endereço na API, aceita alguns filtros e se liga aos outros por IDs. Um bom detetive vai de um arquivo pro outro seguindo esses IDs.
Toda rota abaixo exige o seu distintivo no header X-Detective-Key
(veja Autenticação).
Como tudo se liga
┌──────────────┐
│ CASOS │ te dão a data e a cidade de partida
└──────┬───────┘
│ date + city
▼
┌──────────────┐
│CENAS DE CRIME│ o que aconteceu, onde e quando
└──────────────┘
· a descrição cita pessoas, ruas, pistas
▼
┌──────────────┐ owner_id ┌──────────────┐ person_id ┌──────────────┐
│ VEÍCULOS │──────────▶ │ PESSOAS │ ◀────────── │ ENTREVISTAS │
└──────────────┘ └──────────────┘ └──────────────┘
A cidade tem milhares de pessoas, carros e ocorrências que não têm nada a ver com o seu caso. É por isso que você precisa de filtros.
A cidade
São seis cidades: Porto Velho, Itaperuna, Rio Verde, Campina Alta, Santa Luzia e Vila Serena.
Nos filtros, maiúsculas e acentos não importam, mas o espaço precisa ser codificado
(Rio%20Verde, veja URL-encoding).
Casos
O ponto de partida. Cada caso conta o que aconteceu e diz por onde começar.
| Listar | GET /api/v1/cases |
| Abrir um | GET /api/v1/cases/{number} |
| Campos | number, title, summary, start (data, cidade e dica), tools (caderno e acusação) |
Cenas de crime
Toda ocorrência registrada na cidade: furtos, brigas, vandalismo... e assassinatos.
| Procurar | GET /api/v1/crime-scenes |
| Uma só | GET /api/v1/crime-scenes/{id} |
| Filtros | date (AAAA-MM-DD), city, type |
| Campos | id, date, city, type, description |
Pessoas
Todo morador da cidade, com endereço e profissão.
| Procurar | GET /api/v1/people |
| Uma só | GET /api/v1/people/{id} |
| Filtros | name_contains (parte do nome), street, city |
| Campos | id, name, birth_date, occupation, address (street, number, city) |
Veículos
Todo carro registrado, com placa, modelo, cor e o dono.
| Procurar | GET /api/v1/vehicles |
| Um só | GET /api/v1/vehicles/{id} |
| Filtros | plate_contains (parte da placa), color, make (marca), owner_id |
| Campos | id, plate, make, model, color, year, owner_id |
O owner_id é o ID de uma pessoa: use em GET /api/v1/people/{id} pra saber quem é o dono.
Entrevistas
Depoimentos que a delegacia colheu. Testemunhas, suspeitos, curiosos.
| Procurar | GET /api/v1/interviews |
| Uma só | GET /api/v1/interviews/{id} |
| Filtros | person_id (quem deu o depoimento), date |
| Campos | id, person_id, date, transcript |
Achou uma testemunha em /people? Pegue o id dela e procure as entrevistas com person_id.
Seu caderno
Só seu: nenhum outro detetive vê as suas notas. Use pra não perder pistas e IDs.
| Anotar | POST /api/v1/notebook com {"text": "...", "tags": ["..."], "refs": [...]} |
| Ler | GET /api/v1/notebook (filtros tag e q) |
| Uma nota | GET /api/v1/notebook/{id} |
Em refs você pode ligar a nota a uma entidade:
{"type": "person", "id": 123456}. Os tipos são person, vehicle, interview e crime_scene.
Se o ID não existir, a delegacia avisa.
Listas e páginas
Toda busca devolve no máximo 50 resultados por vez. Veja Paginação. E todo filtro pode ser combinado com os outros: quanto mais filtros, menor a lista.