Ana içeriğe geç

cURL Komutları ile Test

Bu sayfa, MuditaKurye API uç noktalarını hızlıca test etmek için kullanılabilecek cURL komutlarını içerir. Komutlar bash uyumludur ve Fish shell kullanıcıları için küçük farklar not edilmiştir.

Değişkenlerle çalışın

API_KEY, RESTAURANT_ID gibi değerleri değişken olarak tanımlamak komut tekrarını azaltır.

export API_BASE=https://api.muditakurye.com.tr
export API_KEY=yk_sizin_api_anahtariniz
export RESTAURANT_ID=rest_xxxxx

Fish shell kullanıyorsanız:

set -x API_BASE https://api.muditakurye.com.tr
set -x API_KEY yk_sizin_api_anahtariniz
set -x RESTAURANT_ID rest_xxxxx

1. Sağlık Kontrolü

curl "$API_BASE/webhook/third-party/health"

Beklenen yanıt:

{"status":"ok"}

2. Sipariş Oluşturma

Aşağıdaki örnek X-API-Key başlığı ile kimlik doğrulaması yapar.

curl -X POST "$API_BASE/webhook/third-party/order" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "curl_demo_001",
    "restaurantId": "'$RESTAURANT_ID'",
    "customerName": "Mehmet Kara",
    "deliveryAddress": "Cumhuriyet Mah. 123. Sk. No:45, İzmir",
    "paymentMethod": "CASH",
    "paymentCaptured": false,
    "total": 79.90,
    "currency": "TRY",
    "items": [
      {
        "productCode": "LAHMACUN",
        "productName": "Lahmacun",
        "quantity": 2,
        "unitPrice": 19.95,
        "totalAmount": 39.90
      },
      {
        "productCode": "AYRAN",
        "productName": "Ayran",
        "quantity": 2,
        "unitPrice": 10,
        "totalAmount": 20
      }
    ],
    "notes": "Bol limon"
  }'

Basic Auth ile Gönderim

curl -X POST "$API_BASE/webhook/third-party/order" \
  -u "kullanici_adiniz:parolaniz" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "curl_basic_auth",
    "restaurantId": "'$RESTAURANT_ID'"
  }'

3. Webhook Testi

Örnek Payload Gönderme

Webhook alıcınızı test etmek için MuditaKurye'nin göndereceği payload formatını taklit edin.

curl -X POST http://localhost:3000/webhook/muditakurye/status \
  -H "Content-Type: application/json" \
  -d '{
    "event": "order.status_changed",
    "orderId": "curl_demo_001",
    "yemekKuryeOrderId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "PREPARED",
    "previousStatus": "VALIDATED",
    "timestamp": "2025-11-10T17:45:00+03:00"
  }'

İmza Başlığı ile Test

X-MuditaKurye-Signature doğrulamasını simüle etmek için HMAC hesaplayın.

SECRET=whsec_sizin_gizliniz
BODY='{"event":"order.status_changed","orderId":"curl_demo_001"}'
SIGNATURE=$(printf "%s" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')

curl -X POST http://localhost:3000/webhook/muditakurye/status \
  -H "Content-Type: application/json" \
  -H "X-MuditaKurye-Signature: $SIGNATURE" \
  -d "$BODY"

4. Hata Senaryoları

Eksik Alan

curl -X POST "$API_BASE/webhook/third-party/order" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"restaurantId": "'$RESTAURANT_ID'"}'

Beklenen yanıt: 400 Missing orderId

Geçersiz Anahtar

curl -X POST "$API_BASE/webhook/third-party/order" \
  -H "X-API-Key: hatali" \
  -H "Content-Type: application/json" \
  -d '{"orderId": "bad_key", "restaurantId": "'$RESTAURANT_ID'"}'

Beklenen yanıt: 401 Authentication failed

5. cURL Çıktılarını İnceleme

  • -i flag'i ile HTTP başlıklarını görün: curl -i ...
  • -v flag'i ile detaylı log alın.
  • -o response.json ile yanıtı dosyaya kaydedin, jq ile formatlayın: jq '.' response.json

6. Fish Shell için Fonksiyon Örneği

function mk-create-order --argument-names order_id
    set payload '{"orderId":"'$order_id'","restaurantId":"'$RESTAURANT_ID'"}'
    curl -X POST "$API_BASE/webhook/third-party/order" \
      -H "X-API-Key: $API_KEY" \
      -H "Content-Type: application/json" \
      -d $payload
end

mk-create-order demo_fish_001

Son Notlar

  • Test ortamlarında https://staging-api.muditakurye.com.tr adresini kullanın.
  • Üretim öncesi rate limit, hata kodları ve webhook retry davranışını görmek için api/errors.md ve api/webhooks.md sayfalarına göz atın.
  • Manuel cURL testlerini CI/CD pipeline'ında otomatikleştirmek için curl-to-Go veya Postman CLI gibi araçlardan yararlanabilirsiniz.