{
  "info": {
    "name": "Dikebut API — Shipping + Maps Gateway",
    "description": "Open API Dikebut. Service A = Shipping (recreate Komship/RajaOngkir): /v1/shipping/*. Service B = Maps (OSM/Google): /v1/maps/*. Auth: Bearer {{apiKey}} (sk_test_… / sk_live_…). Ongkir pass-through at-cost; revenue = langganan. Set variable baseUrl & apiKey di tab Variables.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://dikebut.zenenta.net/api/v1" },
    { "key": "apiKey", "value": "sk_test_xxxxxxxx" },
    { "key": "orderId", "value": "" },
    { "key": "destinationId", "value": "" }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{apiKey}}", "type": "string" }]
  },
  "item": [
    {
      "name": "Getting Started",
      "item": [
        {
          "name": "Authorization — cek akun & kuota",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/account", "host": ["{{baseUrl}}"], "path": ["account"] },
          "description": "Validasi API key + lihat plan, kuota & saldo." }
        },
        {
          "name": "3PL Availability — daftar kurir",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/couriers?origin=&destination={{destinationId}}&weight=1000", "host": ["{{baseUrl}}"], "path": ["shipping", "couriers"], "query": [ { "key": "origin", "value": "", "description": "destinationId asal (opsional, default gudang utama)" }, { "key": "destination", "value": "{{destinationId}}", "description": "destinationId tujuan (opsional → ketersediaan rute REAL)" }, { "key": "weight", "value": "1000", "description": "gram" } ] },
          "description": "Tanpa rute → daftar kurir didukung. Dengan origin+destination+weight → ketersediaan & layanan nyata per-kurir." }
        }
      ]
    },
    {
      "name": "Store Order (Shipping)",
      "item": [
        {
          "name": "Search Destination",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/destinations?q=bandung", "host": ["{{baseUrl}}"], "path": ["shipping", "destinations"], "query": [{ "key": "q", "value": "bandung" }] } }
        },
        {
          "name": "Calculate Delivery Price",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"shipperDestinationId\": \"\",\n  \"receiverDestinationId\": \"{{destinationId}}\",\n  \"weightGram\": 1000,\n  \"itemValue\": 50000,\n  \"cod\": false\n}" }, "url": { "raw": "{{baseUrl}}/shipping/rates", "host": ["{{baseUrl}}"], "path": ["shipping", "rates"] } }
        },
        {
          "name": "About Insurance",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/insurance", "host": ["{{baseUrl}}"], "path": ["shipping", "insurance"] } }
        },
        {
          "name": "About Commodity",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/commodities", "host": ["{{baseUrl}}"], "path": ["shipping", "commodities"] } }
        },
        {
          "name": "Create Order",
          "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "var j = pm.response.json();", "if (j && j.id) pm.collectionVariables.set('orderId', j.id);" ] } } ],
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"warehouseId\": \"\",\n  \"receiver\": {\n    \"name\": \"Budi\",\n    \"phone\": \"08120000000\",\n    \"address\": \"Jl. Mawar No. 1, Bandung\",\n    \"destinationId\": \"{{destinationId}}\"\n  },\n  \"courier\": \"jne\",\n  \"service\": \"REG\",\n  \"weightGram\": 1000,\n  \"itemValue\": 50000,\n  \"insurance\": false,\n  \"cod\": false,\n  \"items\": [{ \"name\": \"Produk A\", \"price\": 50000, \"qty\": 1 }]\n}" }, "url": { "raw": "{{baseUrl}}/shipping/orders", "host": ["{{baseUrl}}"], "path": ["shipping", "orders"] }, "description": "Buat order → cek kuota → potong saldo at-cost → order ke kurir. Menyimpan orderId ke variable." }
        },
        {
          "name": "History Order",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/orders?page=1&limit=20&status=", "host": ["{{baseUrl}}"], "path": ["shipping", "orders"], "query": [ { "key": "page", "value": "1" }, { "key": "limit", "value": "20" }, { "key": "status", "value": "", "description": "pending|picked|in_transit|delivered|cancelled" } ] } }
        },
        {
          "name": "Detail Order",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/orders/{{orderId}}", "host": ["{{baseUrl}}"], "path": ["shipping", "orders", "{{orderId}}"] } }
        },
        {
          "name": "Track Order",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/orders/{{orderId}}/track", "host": ["{{baseUrl}}"], "path": ["shipping", "orders", "{{orderId}}", "track"] } }
        },
        {
          "name": "Label Order",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/shipping/orders/{{orderId}}/label", "host": ["{{baseUrl}}"], "path": ["shipping", "orders", "{{orderId}}", "label"] } }
        },
        {
          "name": "Pickup Order",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"date\": \"\",\n  \"time\": \"09:00\",\n  \"vehicle\": \"Motor\"\n}" }, "url": { "raw": "{{baseUrl}}/shipping/orders/{{orderId}}/pickup", "host": ["{{baseUrl}}"], "path": ["shipping", "orders", "{{orderId}}", "pickup"] } }
        },
        {
          "name": "Cancel Order",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{}" }, "url": { "raw": "{{baseUrl}}/shipping/orders/{{orderId}}/cancel", "host": ["{{baseUrl}}"], "path": ["shipping", "orders", "{{orderId}}", "cancel"] } }
        }
      ]
    },
    {
      "name": "Maps",
      "item": [
        {
          "name": "Geocode",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/maps/geocode?q=Monas Jakarta", "host": ["{{baseUrl}}"], "path": ["maps", "geocode"], "query": [{ "key": "q", "value": "Monas Jakarta" }] } }
        },
        {
          "name": "Reverse",
          "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/maps/reverse?lat=-6.1754&lng=106.8272", "host": ["{{baseUrl}}"], "path": ["maps", "reverse"], "query": [ { "key": "lat", "value": "-6.1754" }, { "key": "lng", "value": "106.8272" } ] } }
        },
        {
          "name": "Distance",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"origin\": { \"lat\": -6.2441, \"lng\": 106.7976 },\n  \"dest\":   { \"lat\": -6.3088, \"lng\": 106.7979 }\n}" }, "url": { "raw": "{{baseUrl}}/maps/distance", "host": ["{{baseUrl}}"], "path": ["maps", "distance"] } }
        },
        {
          "name": "Route",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"points\": [ { \"lat\": -6.24, \"lng\": 106.79 }, { \"lat\": -6.31, \"lng\": 106.80 } ],\n  \"geometry\": true\n}" }, "url": { "raw": "{{baseUrl}}/maps/route", "host": ["{{baseUrl}}"], "path": ["maps", "route"] } }
        },
        {
          "name": "Matrix",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"origins\":      [ { \"lat\": -6.24, \"lng\": 106.79 } ],\n  \"destinations\": [ { \"lat\": -6.31, \"lng\": 106.80 }, { \"lat\": -6.20, \"lng\": 106.81 } ]\n}" }, "url": { "raw": "{{baseUrl}}/maps/matrix", "host": ["{{baseUrl}}"], "path": ["maps", "matrix"] } }
        }
      ]
    },
    {
      "name": "Kurir Per Jarak (kurir sendiri)",
      "item": [
        {
          "name": "Distance Rates",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"receiver\": { \"lat\": -6.3088, \"lng\": 106.7979 }\n}" }, "url": { "raw": "{{baseUrl}}/distance-rates", "host": ["{{baseUrl}}"], "path": ["distance-rates"] } }
        },
        {
          "name": "Distance Shipment",
          "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n  \"courierId\": \"\",\n  \"receiver\": { \"name\": \"Budi\", \"phone\": \"08120000000\", \"address\": \"Jl. Mawar 1\", \"lat\": -6.3088, \"lng\": 106.7979 }\n}" }, "url": { "raw": "{{baseUrl}}/distance-shipments", "host": ["{{baseUrl}}"], "path": ["distance-shipments"] } }
        }
      ]
    }
  ]
}
