{"openapi":"3.1.0","info":{"title":"PrismaData — Prisões","version":"1.0.0","termsOfService":"https://prismadata.io/terms","contact":{"name":"PrismaData Support Team","url":"https://prismadata.io/contact","email":"suporte.api@prismadata.io"},"license":{"name":"Proprietary","url":"https://api.prismadata.io/license"},"description":"Os dados do sistema penitenciário avalia a proximidade de determinada\ncoordenada geográfica à um presídio do sistema penitenciário brasileiro. Além da\nindicação de proximidade do sinal de localização à um presídio, também são\nfornecidas informações que indicam o porte do presídio e a quantidade de\nestelionatários cumprindo pena no local.\n\nMaiores informações podem ser encontradas na [documentação de produto](https://prismadata.io/doc-comercial/presidios/). Testes manuais com o fim de se compreender melhor o dado podem ser feitos [aqui](https://prismadata.io/testador-de-api/api-de-localizacao/).\n"},"servers":[{"url":"https://api.prismadata.io/v1","description":"Ambiente de Produção"}],"security":[{"X-Apikey":[]},{"api_key":[]},{"BearerAuth":[]}],"tags":[{"name":"Prisões","description":"Os dados do sistema penitenciário avalia a proximidade de determinada\ncoordenada geográfica à um presídio do sistema penitenciário brasileiro. Além da\nindicação de proximidade do sinal de localização à um presídio, também são\nfornecidas informações que indicam o porte do presídio e a quantidade de\nestelionatários cumprindo pena no local.\n\nMaiores informações podem ser encontradas na [documentação de produto](https://prismadata.io/doc-comercial/presidios/). Testes manuais com o fim de se compreender melhor o dado podem ser feitos [aqui](https://prismadata.io/testador-de-api/api-de-localizacao/).\n"}],"paths":{"/location/batch/prison":{"post":{"tags":["Prisões"],"summary":"Proximidade a estabelecimentos prisionais em lote","description":"Consulta em lote a proximidade a estabelecimentos prisionais do sistema\npenitenciário brasileiro. Cada ponto é identificado por um id próprio e\nrecebe a mesma resposta do endpoint unitário. A cobrança é feita por\ncoordenada do lote.","operationId":"batch_prison","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationDict"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/PrisonResponse"},"type":"object","title":"PrisonResponseBatch","description":"Dicionário onde as chaves são identificadores únicos para cada ponto consultado"},"example":{"1":{"prismadata__prison__ambito":"ESTADUAL","prismadata__prison__area_m2":9235.269698947668,"prismadata__prison__distancia_borda_m":1212.36,"prismadata__prison__distancia_centroide_m":1251.05,"prismadata__prison__indice_lotacao_feminino":0.0,"prismadata__prison__indice_lotacao_masculino":3.6650485436893203,"prismadata__prison__indice_lotacao_total":0.2728476821192053,"prismadata__prison__municipio":"Belo Horizonte","prismadata__prison__nome_estabelecimento":"CENTRO DE REMAN. DO SIST. PRISIONAL - GAMELEIRA","prismadata__prison__frac_estelionato_feminino":0.0,"prismadata__prison__frac_estelionato_masculino":0.006622516556291391,"prismadata__prison__frac_estelionato_total":0.006622516556291391,"prismadata__prison__perimetro_m":399.26833501976216,"prismadata__prison__ponto_dentro_presidio":false,"prismadata__prison__pop_feminino_total":0.0,"prismadata__prison__pop_masculino_total":1510.0,"prismadata__prison__tipo_estabelecimento":"PRESOS_PROVISORIOS","prismadata__prison__total_terceirizacoes":1,"prismadata__prison__uf":"MG"},"2":{"prismadata__prison__ambito":"ESTADUAL","prismadata__prison__area_m2":8985.493765362538,"prismadata__prison__distancia_borda_m":4167.4,"prismadata__prison__distancia_centroide_m":4232.06,"prismadata__prison__indice_lotacao_feminino":1.033734939759036,"prismadata__prison__indice_lotacao_masculino":0.0,"prismadata__prison__indice_lotacao_total":0.9673659673659674,"prismadata__prison__municipio":"Belo Horizonte","prismadata__prison__nome_estabelecimento":"Complexo Penitenciário Feminino Estevão Pinto","prismadata__prison__frac_estelionato_feminino":0.011655011655011656,"prismadata__prison__frac_estelionato_masculino":0.0,"prismadata__prison__frac_estelionato_total":0.011655011655011656,"prismadata__prison__perimetro_m":444.5365921456703,"prismadata__prison__ponto_dentro_presidio":false,"prismadata__prison__pop_feminino_total":429.0,"prismadata__prison__pop_masculino_total":0.0,"prismadata__prison__tipo_estabelecimento":"REGIME_FECHADO","prismadata__prison__total_terceirizacoes":1,"prismadata__prison__uf":"MG"}}}},"headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Unauthorized - Missing or invalid API key (X-Apikey header or api_key query parameter)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"Forbidden - Missing privileges to retrieve data","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"Validation Error","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"$ref":"#/components/responses/RateLimitExceeded"}},"x-codeSamples":[{"lang":"curl","source":"curl -X POST \"https://api.prismadata.io/v1/location/batch/prison\" \\\n  -H \"X-Apikey: ak_xxxxxxxxxxxxxxxx\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"1\": [-23.55, -46.63], \"2\": [-22.90, -43.17]}'"},{"lang":"Python","source":"import httpx\n\nresp = httpx.post(\n    \"https://api.prismadata.io/v1/location/batch/prison\",\n    json={\"1\": [-23.55, -46.63], \"2\": [-22.90, -43.17]},\n    headers={\"X-Apikey\": \"ak_xxxxxxxxxxxxxxxx\"},\n)\ndados = resp.json()"},{"lang":"Python SDK","source":"from prismadata import Client\n\nclient = Client(api_key=\"ak_xxxxxxxxxxxxxxxx\")\nresult = client.prison_batch(points={\n    \"p1\": [-23.55, -46.63],\n    \"p2\": [-22.90, -43.17],\n})\nprint(result)"},{"lang":"R SDK","source":"library(prismadata)\n\nclient <- prismadata_client(api_key = \"ak_xxxxxxxxxxxxxxxx\")\npoints <- list(\n  \"p1\" = c(-23.5505, -46.6333),\n  \"p2\" = c(-22.9068, -43.1729),\n  \"p3\" = c(-15.7942, -47.8822)\n)\n\nresults <- client$prison_batch(points = points)\nprint(results)"},{"lang":"TypeScript SDK","source":"import { PrismaDataClient } from \"prismadata\";\n\nconst client = new PrismaDataClient({ apiKey: \"ak_xxxxxxxxxxxxxxxx\" });\nconst result = await client.prisonBatch({\n  p1: [-23.55, -46.63],\n  p2: [-22.90, -43.17],\n});\nconsole.log(result);"}]}},"/location/prison":{"get":{"tags":["Prisões"],"summary":"Proximidade de um ponto a estabelecimentos prisionais","description":"Consulta a proximidade de um ponto a estabelecimentos prisionais do sistema\npenitenciário brasileiro, num raio de até 5 km. Informa se o ponto está\ndentro de um presídio e as distâncias, em metros, até o centroide e até a\nborda do estabelecimento mais próximo.","operationId":"query_prison","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","exclusiveMaximum":90,"exclusiveMinimum":-90,"description":"Latitude do ponto de\n                   consulta.","title":"Lat"},"description":"Latitude do ponto de\n                   consulta.","example":-25.52568655357868},{"name":"lng","in":"query","required":true,"schema":{"type":"number","exclusiveMaximum":180,"exclusiveMinimum":-180,"description":"Longitude do ponto de consulta.","title":"Lng"},"description":"Longitude do ponto de consulta.","example":-54.59273323017718}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrisonResponse"},"example":{"prismadata__prison__ambito":"ESTADUAL","prismadata__prison__area_m2":13732.882376760244,"prismadata__prison__distancia_borda_m":1010.79,"prismadata__prison__distancia_centroide_m":1076.73,"prismadata__prison__indice_lotacao_feminino":0.0,"prismadata__prison__indice_lotacao_masculino":2.0308641975308643,"prismadata__prison__indice_lotacao_total":0.49240121580547114,"prismadata__prison__municipio":"Ponta Porã","prismadata__prison__nome_estabelecimento":"Unidade Penal \"Ricardo Brandão\"","prismadata__prison__frac_estelionato_feminino":0.0,"prismadata__prison__frac_estelionato_masculino":0.001519756838905775,"prismadata__prison__frac_estelionato_total":0.001519756838905775,"prismadata__prison__perimetro_m":473.57341193471495,"prismadata__prison__ponto_dentro_presidio":false,"prismadata__prison__pop_feminino_total":0.0,"prismadata__prison__pop_masculino_total":658.0,"prismadata__prison__tipo_estabelecimento":"PRESOS_PROVISORIOS","prismadata__prison__total_terceirizacoes":5,"prismadata__prison__uf":"MS"}}},"headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Unauthorized - Missing or invalid API key (X-Apikey header or api_key query parameter)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"Forbidden - Missing privileges to retrieve data","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"Validation Error","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"$ref":"#/components/responses/RateLimitExceeded"}},"x-codeSamples":[{"lang":"curl","source":"curl \"https://api.prismadata.io/v1/location/prison?lat=-25.52568655357868&lng=-54.59273323017718\" \\\n  -H \"X-Apikey: ak_xxxxxxxxxxxxxxxx\""},{"lang":"Python","source":"import httpx\n\nresp = httpx.get(\n    \"https://api.prismadata.io/v1/location/prison\",\n    params={\"lat\": -25.52568655357868, \"lng\": -54.59273323017718},\n    headers={\"X-Apikey\": \"ak_xxxxxxxxxxxxxxxx\"},\n)\ndados = resp.json()"},{"lang":"Python SDK","source":"from prismadata import Client\n\nclient = Client(api_key=\"ak_xxxxxxxxxxxxxxxx\")\nresult = client.prison(lat=-23.55, lng=-46.63)\nprint(result)"},{"lang":"R SDK","source":"library(prismadata)\n\nclient <- prismadata_client(api_key = \"ak_xxxxxxxxxxxxxxxx\")\nresult <- client$prison(lat = -23.55, lng = -46.63)\nprint(result)"},{"lang":"TypeScript SDK","source":"import { PrismaDataClient } from \"prismadata\";\n\nconst client = new PrismaDataClient({ apiKey: \"ak_xxxxxxxxxxxxxxxx\" });\nconst result = await client.prison(-23.55, -46.63);\nconsole.log(result);"}]}}},"components":{"securitySchemes":{"X-Apikey":{"type":"apiKey","in":"header","name":"X-Apikey","description":"Token de acesso via header."},"api_key":{"type":"apiKey","in":"query","name":"api_key","description":"Token de acesso via query parameter."},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Token JWT obtido via POST /auth/token"}},"headers":{"X-RateLimit-Limit":{"description":"Número máximo de requisições permitidas por minuto para o usuário.","schema":{"type":"integer","example":60}},"X-RateLimit-Remaining":{"description":"Número de requisições restantes na janela de rate limit atual.","schema":{"type":"integer","example":57}},"X-RateLimit-Reset":{"description":"Unix timestamp (segundos) indicando quando a janela de rate limit será reiniciada.","schema":{"type":"integer","example":1738281600}}},"responses":{"RateLimitExceeded":{"description":"Too Many Requests - Rate limit ou quota excedidos.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"text/plain":{"schema":{"type":"string"},"examples":{"rate_limit":{"summary":"Rate limit excedido","value":"rate limit exceeded"},"quota":{"summary":"Quota excedida","value":"limit exceeded: 1000 requests used, limit is 1000"}}}}}},"schemas":{"Coordinates":{"items":{"type":"number"},"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Encapsula as coordenadas geográficas","example":[-23.5505,-46.6333]},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LocationDict":{"additionalProperties":{"$ref":"#/components/schemas/Coordinates"},"type":"object","maxProperties":1024,"title":"LocationDict","description":"Modelo da entrada em batch","example":{"point1":[-23.5505,-46.6333],"point2":[40.7128,-74.006]}},"PrisonResponse":{"description":"Modelo com a resposta esperada da API de presídios","properties":{"prismadata__prison__ambito":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Âmbito do estabelecimento prisional (ESTADUAL, FEDERAL).","title":"Prismadata  Prison  Ambito"},"prismadata__prison__area_m2":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Área do estabelecimento prisional em metros quadrados.","title":"Prismadata  Prison  Area M2"},"prismadata__prison__distancia_borda_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Distância em metros do ponto consultado até a borda do presídio mais próximo.","title":"Prismadata  Prison  Distancia Borda M"},"prismadata__prison__distancia_centroide_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Distância em metros do ponto consultado até o centroide do presídio mais próximo.","title":"Prismadata  Prison  Distancia Centroide M"},"prismadata__prison__indice_lotacao_feminino":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Índice de lotação da população carcerária feminina.","title":"Prismadata  Prison  Indice Lotacao Feminino"},"prismadata__prison__indice_lotacao_masculino":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Índice de lotação da população carcerária masculina.","title":"Prismadata  Prison  Indice Lotacao Masculino"},"prismadata__prison__indice_lotacao_total":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Índice de lotação total do estabelecimento prisional.","title":"Prismadata  Prison  Indice Lotacao Total"},"prismadata__prison__municipio":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Nome do município onde o presídio está localizado.","title":"Prismadata  Prison  Municipio"},"prismadata__prison__nome_estabelecimento":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Nome do estabelecimento prisional.","title":"Prismadata  Prison  Nome Estabelecimento"},"prismadata__prison__frac_estelionato_feminino":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Fração de presas cumprindo pena por estelionato. Valor em [0,1].","title":"Prismadata  Prison  Frac Estelionato Feminino"},"prismadata__prison__frac_estelionato_masculino":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Fração de presos cumprindo pena por estelionato. Valor em [0,1].","title":"Prismadata  Prison  Frac Estelionato Masculino"},"prismadata__prison__frac_estelionato_total":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Fração total de detentos cumprindo pena por estelionato. Valor em [0,1].","title":"Prismadata  Prison  Frac Estelionato Total"},"prismadata__prison__perimetro_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Perímetro do estabelecimento prisional em metros.","title":"Prismadata  Prison  Perimetro M"},"prismadata__prison__ponto_dentro_presidio":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Indica se o ponto consultado está dentro do perímetro do presídio.","title":"Prismadata  Prison  Ponto Dentro Presidio"},"prismadata__prison__pop_feminino_total":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"População carcerária feminina total.","title":"Prismadata  Prison  Pop Feminino Total"},"prismadata__prison__pop_masculino_total":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"População carcerária masculina total.","title":"Prismadata  Prison  Pop Masculino Total"},"prismadata__prison__tipo_estabelecimento":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Tipo do estabelecimento prisional (PRESOS_PROVISORIOS, REGIME_FECHADO, etc.).","title":"Prismadata  Prison  Tipo Estabelecimento"},"prismadata__prison__total_terceirizacoes":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Quantidade de serviços terceirizados no estabelecimento.","title":"Prismadata  Prison  Total Terceirizacoes"},"prismadata__prison__uf":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Unidade Federativa onde o presídio está localizado.","title":"Prismadata  Prison  Uf"}},"title":"PrisonResponse","type":"object"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
