Comvo API

Davet oluşturun, yanıtları ve metrikleri okuyun, organizasyonu eşitleyin, olayları webhook ile alın.

OpenAPI 3.1 (JSON)

Hızlı başlangıç

  1. Panelde Ayarlar > API Anahtarları'ndan bir anahtar oluşturun. Önce sk_test_ anahtarıyla deneyin: test anahtarıyla oluşan davet ve yanıtlar canlı veriden ayrı tutulur, raporlara girmez.
  2. Anahtarı doğrulayın:
curl https://my.comvo.com.tr/api/v1/me \
  -H "Authorization: Bearer sk_test_..."
  1. Bir işlem (sipariş, servis kaydı) için kişiye özel anket bağlantısı alın:
curl -X POST https://my.comvo.com.tr/api/v1/invitations \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: siparis-98123" \
  -d '{
    "survey": "srv_...",
    "org_unit": "IST-034",
    "transaction_ref": "98123",
    "contact": { "external_id": "C-5521", "name": "Ayşe Yılmaz", "email": "[email protected]" }
  }'
# 201 { "id": "inv_...", "url": "https://my.comvo.com.tr/s/...", ... }

url kişiye gönderilecek tek kullanımlık bağlantıdır; yalnız bu yanıtta döner. Bağlamdaki her alan (birim, işlem no, müşteri no, iletişim bilgisi, özel alanlar) markanın yürürlükteki aydınlatma metninde yer almalıdır; yoksa istek privacy_notice_not_covering hatasıyla reddedilir.

Kurallar

Webhook'lar

Olayları almak için panelde Ayarlar > Webhook'lar'dan ya da /webhook-endpoints ile adres ekleyin. Her istek Webhook-Signature: t=<zaman>,v1=<HMAC-SHA256(anahtar, "zaman.gövde")> ile imzalıdır; panelde her webhook'un "Teknik Rehber" sekmesinde PHP, Node.js ve Python doğrulama kodu ve örnek yük var. 10 saniye içinde 2xx dönün; olmazsa webhook'un hata politikasına göre tekrar denenir.

Hatalar

Hatalar RFC 9457 application/problem+json biçimindedir. code alanına göre davranın; detail insan içindir.

{ "type": "https://my.comvo.com.tr/developers#errors-validation_failed", "title": "Doğrulama hatası", "status": 422,
  "code": "validation_failed", "detail": "...", "errors": { "survey": ["Anket bulunamadı."] } }
codeDurumAnlamı ve ne yapılmalı
unauthenticated401Authorization başlığı yok ya da biçimi yanlış.
invalid_key401Anahtar bulunamadı, iptal edildi ya da süresi doldu. Panelden yeni anahtar oluşturun.
insufficient_scope403Anahtarda bu işlem için kapsam yok (required_scope alanında). Anahtarı yeni kapsamla oluşturun.
outside_scope403Birime kısıtlı anahtar bu kayda ya da kiracı geneli bir işleme erişemez.
forbidden403İşleme izin verilmiyor.
not_found404Kayıt yok ya da anahtarın erişim alanı (birim, canlı/test modu) dışında.
method_not_allowed405Bu adres bu HTTP yöntemini desteklemiyor.
invitation_completed409Yanıtlanmış davet iptal edilemez.
idempotency_in_progress409Aynı Idempotency-Key ile ilk istek hâlâ işleniyor; biraz sonra tekrar deneyin.
invalid_idempotency_key400Idempotency-Key boş ya da 255 karakterden uzun.
idempotency_mismatch422Aynı Idempotency-Key başka bir gövdeyle kullanıldı.
validation_failed422Gönderilen veride hata var; alan bazında ayrıntı errors içinde.
survey_not_live422Anket yayında değil; davet açılamaz.
unknown_context_field422Bağlamdaki alan panelde (KVKK ve Veri > Alanlar) tanımlı değil (fields).
privacy_notice_not_covering422Alanlar markanın yürürlükteki aydınlatma metninde yok (fields). Metne ekleyip yayınlayın.
invalid_assignee422Atanacak üye yok ya da bu yanıtı yönetme yetkisi yok.
invalid_level422Seviye adı bulunamadı ya da üst birimin altında seviye tanımlı değil.
range_too_long422Metrik aralığı en fazla 366 gün.
rate_limited429Hız sınırı aşıldı; Retry-After kadar bekleyin.
server_error500Beklenmeyen hata. Idempotency-Key ile güvenle tekrar deneyebilirsiniz.