{"openapi":"3.0.3","info":{"title":"Cakrad Connect API","version":"1.0.0","description":"Open API Cakrad untuk integrasi mitra & partner. Autentikasi via header `X-API-Key`. Minta kunci API melalui backoffice admin.","contact":{"name":"Cakrad Engineering"}},"servers":[{"url":"https://connect.cakrad.com/api/public/v1"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"security":[{"ApiKeyAuth":[]}],"paths":{"/ping":{"get":{"summary":"Health check","description":"Cek status layanan dan versi API.","tags":["Umum"],"security":[],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"ok":true,"service":"cakrad-connect","version":"v1"}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/plans":{"get":{"summary":"Daftar paket asuransi","description":"Paket aktif beserta premi bulanan, plafon, dan kampanye.","tags":["Produk"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"plans":[{"code":"SILVER","name":"Cakrad Silver","monthlyPremium":50000,"plafon":5000000,"isActive":true}]}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/workshops":{"get":{"summary":"Daftar bengkel mitra","description":"Bengkel aktif jaringan Cakrad (nama, kode, alamat, telepon).","tags":["Mitra"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"workshops":[{"code":"SHOPNGO","name":"Shop N Go Cakrad","type":"SHOP_N_GO","address":"Jakarta","phone":"021xxx"}]}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/claim-rules":{"get":{"summary":"Aturan level klaim","description":"Level klaim, batas nominal, own risk, dan dokumen wajib per level.","tags":["Klaim"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"rules":{"RINGAN":{"label":"Ringan","maxAmount":2000000}}}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/policies/lookup":{"get":{"summary":"Cari polis","description":"Cari polis berdasarkan nomor polis, plat nomor, atau payload QR `CAKRAD:POLICY:<nomor>`. Mengembalikan status polis, sisa plafon, dan riwayat klaim.","tags":["Polis"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"description":"Nomor polis / plat nomor / payload QR","schema":{"type":"string"}}],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"policies":[{"policyNumber":"POL-2026-0001","status":"ACTIVE","plafon":5000000,"remainingPlafon":4500000,"vehicle":{"plateNumber":"B1234XYZ","brand":"Honda","model":"Vario"}}]}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/claims/{claimNumber}":{"get":{"summary":"Status klaim","description":"Status klaim berdasarkan nomor klaim. Jika API key terikat bengkel, hanya klaim bengkel tersebut yang bisa diakses.","tags":["Klaim"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"claimNumber","in":"path","required":true,"description":"Nomor klaim, mis. CLM-2026-0001","schema":{"type":"string"}}],"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"claim":{"claimNumber":"CLM-2026-0001","status":"IN_REVIEW","level":"RINGAN","estimatedAmount":1500000,"approvedAmount":null}}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}},"/claims":{"post":{"summary":"Ajukan klaim","description":"Ajukan klaim baru. Membutuhkan scope `claims:write` dan API key yang terikat bengkel mitra. Upload dokumen dilakukan terpisah via endpoint supplement.","tags":["Klaim"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["policyNumber","level","incidentType","incidentDate","description","estimatedAmount"],"properties":{"policyNumber":{"type":"string","example":"POL-2026-0001"},"level":{"type":"string","enum":["RINGAN","SEDANG","BERAT","TOTAL_LOSS"]},"incidentType":{"type":"string","example":"Tabrakan"},"incidentDate":{"type":"string","format":"date"},"incidentLocation":{"type":"string"},"description":{"type":"string"},"estimatedAmount":{"type":"integer","example":1500000}}}}}},"responses":{"200":{"description":"Berhasil","content":{"application/json":{"schema":{"type":"object"},"example":{"claim":{"claimNumber":"CLM-2026-0002","status":"SUBMITTED"}}}}},"400":{"description":"Request tidak valid"},"401":{"description":"API key tidak valid"},"403":{"description":"Scope tidak mencukupi / endpoint dinonaktifkan"}}}}}}