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.