{
  "info": {
    "_postman_id": "cep-api-collection",
    "name": "CEP API",
    "description": "Coleção da API CEP com os endpoints de Login e consulta de CEP.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://cep.inf.br",
      "type": "string",
      "description": "URL base da API. Altere para o seu domínio se necessário."
    },
    {
      "key": "token",
      "value": "",
      "type": "string",
      "description": "Token de autenticação. Preenchido automaticamente pelo script do endpoint de Login."
    }
  ],
  "item": [
    {
      "name": "Login",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "const json = pm.response.json();",
              "if (json && json.token) {",
              "    pm.collectionVariables.set('token', json.token);",
              "} else if (json && json.data && json.data.token) {",
              "    pm.collectionVariables.set('token', json.data.token);",
              "}"
            ],
            "type": "text/javascript"
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          { "key": "Content-Type", "value": "application/json" },
          { "key": "Accept", "value": "application/json" }
        ],
        "url": {
          "raw": "{{base_url}}/api/login",
          "host": ["{{base_url}}"],
          "path": ["api", "login"]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"joao@exemplo.com\",\n  \"password\": \"minhasenha123\"\n}",
          "options": { "raw": { "language": "json" } }
        },
        "description": "Autentica o usuário e retorna um token Bearer. O token é salvo automaticamente na variável {{token}} da coleção. Limite: 10 req/min."
      },
      "response": [
        {
          "name": "Login com sucesso",
          "status": "OK",
          "code": 200,
          "body": "{\n  \"success\": true,\n  \"token\": \"1|abcdefghijklmnopqrstuvwxyz\",\n  \"message\": \"Login realizado com sucesso\"\n}"
        },
        {
          "name": "Credenciais inválidas",
          "status": "Unauthorized",
          "code": 401,
          "body": "{\n  \"success\": false,\n  \"message\": \"Credenciais inválidas\"\n}"
        }
      ]
    },
    {
      "name": "Consultar Créditos",
      "request": {
        "method": "GET",
        "header": [
          { "key": "Authorization", "value": "Bearer {{token}}" },
          { "key": "Accept", "value": "application/json" }
        ],
        "url": {
          "raw": "{{base_url}}/api/credits",
          "host": ["{{base_url}}"],
          "path": ["api", "credits"]
        },
        "description": "Retorna os créditos totais, utilizados e o saldo restante do usuário autenticado. Requer autenticação. Limite: 60 req/min."
      },
      "response": [
        {
          "name": "Créditos consultados com sucesso",
          "status": "OK",
          "code": 200,
          "body": "{\n  \"success\": true,\n  \"data\": {\n    \"credits\": 1000,\n    \"used_credits\": 42,\n    \"remaining\": 958\n  }\n}"
        },
        {
          "name": "Não autenticado",
          "status": "Unauthorized",
          "code": 401,
          "body": "{\n  \"message\": \"Unauthenticated.\"\n}"
        }
      ]
    },
    {
      "name": "Consultar CEP",
      "request": {
        "method": "GET",
        "header": [
          { "key": "Authorization", "value": "Bearer {{token}}" },
          { "key": "Accept", "value": "application/json" }
        ],
        "url": {
          "raw": "{{base_url}}/api/cep/01001000",
          "host": ["{{base_url}}"],
          "path": ["api", "cep", "01001000"]
        },
        "description": "Retorna informações de endereço para o CEP informado. Aceita com ou sem hífen (ex.: 01001-000 ou 01001000). Requer autenticação. Limite: 60 req/min."
      },
      "response": [
        {
          "name": "CEP encontrado",
          "status": "OK",
          "code": 200,
          "body": "{\n  \"success\": true,\n  \"data\": {\n    \"zipcode\": \"01001-000\",\n    \"street\": \"Praça da Sé\",\n    \"complement\": \"lado ímpar\",\n    \"neighborhood\": \"Sé\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\"\n  },\n  \"message\": \"CEP encontrado com sucesso\"\n}"
        },
        {
          "name": "CEP não encontrado",
          "status": "Not Found",
          "code": 404,
          "body": "{\n  \"success\": false,\n  \"message\": \"CEP não encontrado\"\n}"
        },
        {
          "name": "Não autenticado",
          "status": "Unauthorized",
          "code": 401,
          "body": "{\n  \"message\": \"Unauthenticated.\"\n}"
        }
      ]
    }
  ]
}
