{
  "info": {
    "name": "i-go API",
    "description": "Coleção da API i-go (busca, rota, matriz, agrupamento). Guia: https://igo-api.dev.brigtec.com.br/docs\n\nAntes de usar, preencha a variável `chave` da coleção com a sua credencial (igo_…). Coordenadas fictícias em João Pessoa.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{chave}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://igo-api.dev.brigtec.com.br"
    },
    {
      "key": "chave",
      "value": "",
      "type": "secret"
    }
  ],
  "item": [
    {
      "name": "Cobertura",
      "item": [
        {
          "name": "Área, versão do dado e limites",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coverage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coverage"
              ]
            },
            "description": "Confere a credencial e mostra a área atendida."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Busca",
      "item": [
        {
          "name": "Busca por nome (com ponto de referência)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/search?q=mercado central&lat=-7.12&lon=-34.88&limit=5",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "search"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "mercado central"
                },
                {
                  "key": "lat",
                  "value": "-7.12"
                },
                {
                  "key": "lon",
                  "value": "-34.88"
                },
                {
                  "key": "limit",
                  "value": "5"
                }
              ]
            },
            "description": ""
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Busca pela metade (autocompletar)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/search?q=interm&limit=5",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "search"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "interm"
                },
                {
                  "key": "limit",
                  "value": "5"
                }
              ]
            },
            "description": ""
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Endereço de um ponto (reverso)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/reverse?lat=-7.1153&lon=-34.8641",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "reverse"
              ],
              "query": [
                {
                  "key": "lat",
                  "value": "-7.1153"
                },
                {
                  "key": "lon",
                  "value": "-34.8641"
                }
              ]
            },
            "description": ""
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Roteamento",
      "item": [
        {
          "name": "Rota: só tempo e distância",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/route",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "route"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"points\": [\n    {\n      \"lat\": -7.1195,\n      \"lon\": -34.845\n    },\n    {\n      \"lat\": -7.1469,\n      \"lon\": -34.7975\n    }\n  ],\n  \"geometry\": \"none\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Rota com geometria e tempo por trecho",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/route",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "route"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"points\": [\n    {\n      \"lat\": -7.1195,\n      \"lon\": -34.845\n    },\n    {\n      \"lat\": -7.1469,\n      \"lon\": -34.7975\n    }\n  ],\n  \"segment_durations\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Rota com parada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/route",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "route"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"points\": [\n    {\n      \"lat\": -7.1195,\n      \"lon\": -34.845\n    },\n    {\n      \"lat\": -7.092,\n      \"lon\": -34.833\n    },\n    {\n      \"lat\": -7.1469,\n      \"lon\": -34.7975\n    }\n  ],\n  \"geometry\": \"none\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "Matriz 1 × 2",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/matrix",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "matrix"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sources\": [\n    {\n      \"lat\": -7.1195,\n      \"lon\": -34.845\n    }\n  ],\n  \"destinations\": [\n    {\n      \"lat\": -7.1469,\n      \"lon\": -34.7975\n    },\n    {\n      \"lat\": -7.092,\n      \"lon\": -34.833\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Agrupamento",
      "item": [
        {
          "name": "Plano de turno (ida, com base)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/experimental/pooling/plan",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "experimental",
                "pooling",
                "plan"
              ]
            },
            "description": "Atualize arrive_by para uma data futura antes de enviar.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"direction\": \"inbound\",\n  \"common\": {\n    \"lat\": -7.176,\n    \"lon\": -34.904\n  },\n  \"arrive_by\": \"2026-10-28T07:00:00-03:00\",\n  \"fleet\": {\n    \"vehicles\": 2,\n    \"capacity\": 4,\n    \"base\": {\n      \"lat\": -7.145,\n      \"lon\": -34.88\n    }\n  },\n  \"fare\": {\n    \"base\": 5,\n    \"per_km\": 2.5,\n    \"per_min\": 0.4,\n    \"charge_from\": \"base\"\n  },\n  \"requests\": [\n    {\n      \"id\": \"p1\",\n      \"location\": {\n        \"lat\": -7.1195,\n        \"lon\": -34.845\n      }\n    },\n    {\n      \"id\": \"p2\",\n      \"location\": {\n        \"lat\": -7.13,\n        \"lon\": -34.86\n      }\n    },\n    {\n      \"id\": \"p3\",\n      \"location\": {\n        \"lat\": -7.092,\n        \"lon\": -34.833\n      }\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"responde 200\", () => pm.response.to.have.status(200));",
                  "pm.test(\"traz meta.data_version\", () => pm.expect(pm.response.json().meta.data_version).to.be.a(\"string\"));"
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}
