{
  "info": {
    "name": "Lokalisa Public API v1",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "1. Generate Token",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Accept", "value": "application/json"},
          {"key": "X-API-Key", "value": "{{api_key}}"},
          {"key": "X-API-Secret", "value": "{{api_secret}}"}
        ],
        "url": {"raw": "{{base_url}}/api/v1/auth/token", "host": ["{{base_url}}"], "path": ["api","v1","auth","token"]}
      },
      "event": [{"listen":"test","script":{"type":"text/javascript","exec":["const res = pm.response.json();","if (res && res.access_token) pm.environment.set('access_token', res.access_token);"]}}]
    },
    {
      "name": "2. Catalog Addresses",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Accept", "value": "application/json"},
          {"key": "Authorization", "value": "Bearer {{access_token}}"}
        ],
        "url": {"raw": "{{base_url}}/api/v1/catalog/addresses", "host": ["{{base_url}}"], "path": ["api","v1","catalog","addresses"]}
      }
    },
    {
      "name": "3. Quote",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Content-Type", "value": "application/json"},
          {"key": "Accept", "value": "application/json"},
          {"key": "Authorization", "value": "Bearer {{access_token}}"}
        ],
        "body": {"mode": "raw", "raw": "{\n  \"pickup_address_id\": 12,\n  \"dropoff_lat\": 19.39,\n  \"dropoff_lng\": -99.17\n}"},
        "url": {"raw": "{{base_url}}/api/v1/quotes", "host": ["{{base_url}}"], "path": ["api","v1","quotes"]}
      }
    },
    {
      "name": "4. Catalog Products (FULL)",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Accept", "value": "application/json"},
          {"key": "Authorization", "value": "Bearer {{access_token}}"}
        ],
        "url": {"raw": "{{base_url}}/api/v1/catalog/products", "host": ["{{base_url}}"], "path": ["api","v1","catalog","products"]}
      }
    },
    {
      "name": "5. Create Order",
      "event": [{"listen":"prerequest","script":{"type":"text/javascript","exec":["const payload = {","  external_id: pm.environment.get('external_id'),","  pickup_address_id: 12,","  dropoff_name: 'Ana Lopez',","  dropoff_phone: '5511112233',","  dropoff_address: 'Napoles 21, CDMX',","  dropoff_lat: 19.39,","  dropoff_lng: -99.17,","  delivery_date: '2026-02-07',","  payment_mode: 'ONLINE',","  items: [{ product_id: 15, name: 'Playera Negra', quantity: 1, unit_price: 299 }]","};","pm.variables.set('request_body', JSON.stringify(payload));"]}}],
      "request": {
        "method": "POST",
        "header": [
          {"key": "Content-Type", "value": "application/json"},
          {"key": "Accept", "value": "application/json"},
          {"key": "Authorization", "value": "Bearer {{access_token}}"},
          {"key": "Idempotency-Key", "value": "{{idempotency_key}}"}
        ],
        "body": {"mode": "raw", "raw": "{{request_body}}"},
        "url": {"raw": "{{base_url}}/api/v1/orders", "host": ["{{base_url}}"], "path": ["api","v1","orders"]}
      }
    }
  ]
}
