#!/usr/bin/env bash
# velik.ai Platform API — curl examples (every call below was run against production).
# Usage: VELIK_API_KEY=vk_… ORDER_ID=<uuid> ./curl.sh
set -euo pipefail
BASE="${VELIK_BASE_URL:-https://velik.ai}"
KEY="${VELIK_API_KEY:?set VELIK_API_KEY (Settings → Integrations → API keys)}"
AUTH=(-H "Authorization: Bearer $KEY")
JSON=(-H "Content-Type: application/json")

# 1. New orders, 2 per page (keyset pagination: follow next_cursor)
curl -sS "${AUTH[@]}" "$BASE/api/v1/orders?status=new&limit=2"

# 2. Orders changed since a timestamp (polling without webhooks)
curl -sS "${AUTH[@]}" "$BASE/api/v1/orders?since=2026-09-05T00:00:00Z&limit=50"

# 3. One order
ORDER_ID="${ORDER_ID:-00000000-0000-4000-8000-000000000001}"
curl -sS "${AUTH[@]}" "$BASE/api/v1/orders/$ORDER_ID"

# 4. Dry run: what would happen if we set status=processing (nothing is written)
curl -sS -X PATCH "${AUTH[@]}" "${JSON[@]}" -H "X-Velik-Dry-Run: 1" \
  "$BASE/api/v1/orders/$ORDER_ID" -d '{"status":"processing"}'

# 5. Accept the order
curl -sS -X PATCH "${AUTH[@]}" "${JSON[@]}" \
  "$BASE/api/v1/orders/$ORDER_ID" -d '{"status":"processing"}'

# 6. Ship with your own tracking number (fires the merchant's "shipped" email/SMS unless notify_customer=false)
curl -sS -X PATCH "${AUTH[@]}" "${JSON[@]}" "$BASE/api/v1/orders/$ORDER_ID" -d '{
  "tracking_number": "WMS-2026-000123",
  "tracking_url": "https://tracking.example-wms.com/WMS-2026-000123",
  "courier": "Speedy",
  "status": "shipped"
}'

# 7. Or: create a waybill through the merchant's courier integration (dry run first)
curl -sS -X POST "${AUTH[@]}" "${JSON[@]}" -H "X-Velik-Dry-Run: 1" \
  "$BASE/api/v1/shipments" -d "{\"order_id\":\"$ORDER_ID\"}"
# curl -sS -X POST "${AUTH[@]}" "${JSON[@]}" "$BASE/api/v1/shipments" -d "{\"order_id\":\"$ORDER_ID\"}"

# 8. Label PDF of a shipment
SHIPMENT_ID="${SHIPMENT_ID:-00000000-0000-4000-8000-000000000002}"
curl -sS "${AUTH[@]}" -o "label_$SHIPMENT_ID.pdf" "$BASE/api/v1/shipments/$SHIPMENT_ID/label"

# 9. Stock levels and a delivery of 12 units (with purchase price)
curl -sS "${AUTH[@]}" "$BASE/api/v1/inventory/stock"
PRODUCT_ID="${PRODUCT_ID:-00000000-0000-4000-8000-000000000003}"
curl -sS -X POST "${AUTH[@]}" "${JSON[@]}" "$BASE/api/v1/inventory/movements" \
  -d "{\"product_id\":\"$PRODUCT_ID\",\"type\":\"delivery\",\"qty\":12,\"unit_cost\":2.5,\"note\":\"PO-4411\"}"

# 10. Webhooks: subscribe (the secret is returned ONCE), test, list deliveries
curl -sS -X POST "${AUTH[@]}" "${JSON[@]}" "$BASE/api/v1/webhooks" -d '{
  "url": "https://wms.example.com/velik-webhook",
  "events": ["order.created", "order.status_changed", "shipment.status_changed"],
  "description": "WMS"
}'
WEBHOOK_ID="${WEBHOOK_ID:-00000000-0000-4000-8000-000000000004}"
curl -sS -X POST "${AUTH[@]}" "$BASE/api/v1/webhooks/$WEBHOOK_ID/test"
curl -sS "${AUTH[@]}" "$BASE/api/v1/webhooks/$WEBHOOK_ID/deliveries?limit=10"

# 11. MCP over plain HTTP (JSON-RPC 2.0, no sessions): list the tools this key can use
curl -sS -X POST "${AUTH[@]}" "${JSON[@]}" "$BASE/api/mcp" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
