From 31e4617c3ece4b0700a3aaa38fd810f72a709724 Mon Sep 17 00:00:00 2001 From: canerinaliacerpro Date: Fri, 10 Oct 2025 10:50:50 +0300 Subject: [PATCH] Add GraphQL API integration documentation This commit introduces comprehensive documentation for the InsurUp GraphQL API, detailing endpoints for customer lists, case management, proposals, policies, and agent users. It includes request and response examples, parameter descriptions, filtering and sorting options, as well as usage examples in JavaScript, Python, and cURL. The documentation aims to facilitate developers in integrating with the API effectively. --- docs/entegrasyon/graphql-api-entegrasyonu.md | 285 +++ docs/entegrasyon/index.md | 10 +- package-lock.json | 252 --- .../entegrasyon/graphql-api-entegrasyonu.md | 1668 +++++++++++++++++ .../version-0.1.70/entegrasyon/index.md | 10 +- yarn.lock | 5 - 6 files changed, 1965 insertions(+), 265 deletions(-) create mode 100644 docs/entegrasyon/graphql-api-entegrasyonu.md create mode 100644 versioned_docs/version-0.1.70/entegrasyon/graphql-api-entegrasyonu.md diff --git a/docs/entegrasyon/graphql-api-entegrasyonu.md b/docs/entegrasyon/graphql-api-entegrasyonu.md new file mode 100644 index 0000000..d637991 --- /dev/null +++ b/docs/entegrasyon/graphql-api-entegrasyonu.md @@ -0,0 +1,285 @@ +--- +title: GraphQL API Entegrasyonu +sidebar_position: 2 +slug: /entegrasyon/graphql-api-entegrasyonu +--- + +# GraphQL API Entegrasyonu + +InsurUp GraphQL API'si, sisteminizle programatik olarak etkileşim kurmanızı sağlayan güçlü bir arayüzdür. Bu API ile müşteri bilgileri, teklifler, poliçeler ve diğer verileri sorgulayabilir ve yönetebilirsiniz. + +## Genel Bilgiler + +- **Base URL**: `https://api.insurup.com/graphql` +- **Method**: `POST` +- **Content-Type**: `application/json` +- **Authentication**: Bearer Token (Header: `Authorization: Bearer `) + +## API Endpoints + +### Müşteri Listesi (Customers) + +Müşteri bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: {} ){totalCount items{id name identity type identity primaryEmail primaryPhoneNumber{number countryCode } passportNumber createdAt gender city{text value } district{text value } nationality birthDate educationStatus maritalStatus job }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "customers": { + "totalCount": 150, + "items": [ + { + "id": "customer-id-123", + "name": "Ahmet Yılmaz", + "identity": "12345678901", + "type": "individual", + "primaryEmail": "ahmet@example.com", + "primaryPhoneNumber": { + "number": "5551234567", + "countryCode": 90 + }, + "passportNumber": null, + "createdAt": "2024-01-15T10:30:00Z", + "gender": "Male", + "city": { + "text": "İSTANBUL", + "value": "34" + }, + "district": { + "text": "KADIKÖY", + "value": "1234" + }, + "nationality": "Turkish", + "birthDate": "1990-05-15", + "educationStatus": "University", + "maritalStatus": "Single", + "job": "Software Developer" + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id name identity createdAt}}}" +} +``` + +**Şehir Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { city: { value: \"34\" } } ){totalCount items{id name city{text value}}}}" +} +``` + +**Müşteri Tipi Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { type: \"individual\" } ){totalCount items{id name type}}}" +} +``` + +#### Hata Yanıtları + +**401 Unauthorized**: +```json +{ + "errors": [ + { + "message": "Unauthorized access", + "extensions": { + "code": "UNAUTHENTICATED" + } + } + ] +} +``` + +**400 Bad Request**: +```json +{ + "errors": [ + { + "message": "Invalid query syntax", + "extensions": { + "code": "BAD_USER_INPUT" + } + } + ] +} +``` + +## Kullanım Örnekleri + +### JavaScript/Node.js + +```javascript +const fetch = require('node-fetch'); + +async function getCustomers(skip = 0, take = 10) { + const query = ` + query { + customers(skip: ${skip} take: ${take} where: {}) { + totalCount + items { + id + name + identity + type + primaryEmail + primaryPhoneNumber { + number + countryCode + } + createdAt + city { + text + value + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Kullanım +getCustomers(0, 20).then(customers => { + console.log('Toplam müşteri sayısı:', customers.data.customers.totalCount); + console.log('Müşteriler:', customers.data.customers.items); +}); +``` + +### Python + +```python +import requests +import json + +def get_customers(skip=0, take=10): + query = """ + query { + customers(skip: %d take: %d where: {}) { + totalCount + items { + id + name + identity + type + primaryEmail + primaryPhoneNumber { + number + countryCode + } + createdAt + city { + text + value + } + } + } + } + """ % (skip, take) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +# Kullanım +customers = get_customers(0, 20) +print(f"Toplam müşteri sayısı: {customers['data']['customers']['totalCount']}") +print(f"Müşteriler: {customers['data']['customers']['items']}") +``` + +### cURL + +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { customers(skip: 0 take: 10 where: {} ){totalCount items{id name identity type primaryEmail primaryPhoneNumber{number countryCode } createdAt city{text value }}}}" + }' +``` + +## Güvenlik + +- Tüm API istekleri için geçerli bir Bearer token gereklidir +- Token'lar belirli bir süre sonra sona erer ve yenilenmesi gerekir +- Rate limiting uygulanır: dakikada maksimum 100 istek +- HTTPS kullanımı zorunludur + +## Hata Kodları + +| Kod | Açıklama | +|-----|----------| +| `UNAUTHENTICATED` | Geçersiz veya eksik token | +| `FORBIDDEN` | Yetersiz yetki | +| `BAD_USER_INPUT` | Geçersiz sorgu parametreleri | +| `INTERNAL_ERROR` | Sunucu hatası | + +## Rate Limiting + +- **Limit**: Dakikada 100 istek +- **Window**: 60 saniye +- **Response Headers**: + - `X-RateLimit-Limit`: Maksimum istek sayısı + - `X-RateLimit-Remaining`: Kalan istek sayısı + - `X-RateLimit-Reset`: Limit sıfırlanma zamanı (Unix timestamp) + +## Destek + +API kullanımı ile ilgili sorularınız için [Destek Ekibi](mailto:destek@insurup.com) ile iletişime geçebilirsiniz. diff --git a/docs/entegrasyon/index.md b/docs/entegrasyon/index.md index 8b6a925..914f303 100644 --- a/docs/entegrasyon/index.md +++ b/docs/entegrasyon/index.md @@ -9,14 +9,16 @@ InsurUp ile sistemlerinizi entegre ederken kullanabileceğiniz başlıca rehberl ## Bu bölümde neler var? +- [GraphQL API Entegrasyonu](/entegrasyon/graphql-api-entegrasyonu): InsurUp GraphQL API'si ile programatik etkileşim, müşteri sorguları ve diğer veri işlemleri. - [InsurUp Web Satış Platformu Self‑servis Entegrasyon Rehberi](/entegrasyon/insurup-web-satis-platformu-self-servis-entegrasyon-rehberi): B2C akışında müşteri oturumundan teklif/poliçe ve ödeme süreçlerine kadar uçtan uca entegrasyon adımları. -- [Webhook API Entegrasyonu](/entegrasyon/webhook-api-entegrasyonu): InsurUp tarafından tetiklenen async/sync webhook event’leri, imza doğrulama ve örnek payload’lar. +- [Webhook API Entegrasyonu](/entegrasyon/webhook-api-entegrasyonu): InsurUp tarafından tetiklenen async/sync webhook event'leri, imza doğrulama ve örnek payload'lar. ## Kimler için? -- Kendi web satış platformunu InsurUp’a bağlamak isteyen acente ve broker IT ekipleri. -- Gerçek zamanlı bildirim ve iş akışlarını webhook’lar üzerinden yönetmek isteyen ekipler. +- InsurUp verilerini kendi sistemlerine entegre etmek isteyen geliştiriciler. +- Kendi web satış platformunu InsurUp'a bağlamak isteyen acente ve broker IT ekipleri. +- Gerçek zamanlı bildirim ve iş akışlarını webhook'lar üzerinden yönetmek isteyen ekipler. ## Nasıl başlarım? -Önce genel mimariyi ve ihtiyaçları anlamak için self‑servis entegrasyon rehberini inceleyin. Sonrasında, gerçek zamanlı olayları sisteminize aktarmak için webhook entegrasyonunu yapılandırın. +Veri entegrasyonu için GraphQL API dökümanını inceleyerek başlayın. Kendi web satış platformunuzu entegre etmek için self‑servis entegrasyon rehberini takip edin. Gerçek zamanlı olayları sisteminize aktarmak için webhook entegrasyonunu yapılandırın. diff --git a/package-lock.json b/package-lock.json index 0f2d334..1ef8e26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4319,258 +4319,6 @@ "@parcel/watcher-win32-x64": "2.4.1" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", - "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", diff --git a/versioned_docs/version-0.1.70/entegrasyon/graphql-api-entegrasyonu.md b/versioned_docs/version-0.1.70/entegrasyon/graphql-api-entegrasyonu.md new file mode 100644 index 0000000..8902dda --- /dev/null +++ b/versioned_docs/version-0.1.70/entegrasyon/graphql-api-entegrasyonu.md @@ -0,0 +1,1668 @@ +--- +title: GraphQL API Entegrasyonu +sidebar_position: 2 +slug: /entegrasyon/graphql-api-entegrasyonu +--- + +# GraphQL API Entegrasyonu + +InsurUp GraphQL API'si, sisteminizle programatik olarak etkileşim kurmanızı sağlayan güçlü bir arayüzdür. Bu API ile müşteri bilgileri, teklifler, poliçeler ve diğer verileri sorgulayabilir ve yönetebilirsiniz. + +## Genel Bilgiler + +- **Base URL**: `https://api.insurup.com/graphql` +- **Method**: `POST` +- **Content-Type**: `application/json` +- **Authentication**: Bearer Token (Header: `Authorization: Bearer `) + +## API Endpoints + +### Müşteri Listesi (Customers) + +Müşteri bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: {} ){totalCount items{id name identity type identity primaryEmail primaryPhoneNumber{number countryCode } passportNumber createdAt gender city{text value } district{text value } nationality birthDate educationStatus maritalStatus job }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "customers": { + "totalCount": 150, + "items": [ + { + "id": "customer-id-123", + "name": "Ahmet Yılmaz", + "identity": "12345678901", + "type": "individual", + "primaryEmail": "ahmet@example.com", + "primaryPhoneNumber": { + "number": "5551234567", + "countryCode": 90 + }, + "passportNumber": null, + "createdAt": "2024-01-15T10:30:00Z", + "gender": "Male", + "city": { + "text": "İSTANBUL", + "value": "34" + }, + "district": { + "text": "KADIKÖY", + "value": "1234" + }, + "nationality": "Turkish", + "birthDate": "1990-05-15", + "educationStatus": "University", + "maritalStatus": "Single", + "job": "Software Developer" + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id name identity createdAt}}}" +} +``` + +**Şehir Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { city: { value: \"34\" } } ){totalCount items{id name city{text value}}}}" +} +``` + +**Müşteri Tipi Filtresi**: +```json +{ + "query": "query { customers(skip: 0 take: 10 where: { type: \"individual\" } ){totalCount items{id name type}}}" +} +``` + +#### Hata Yanıtları + +**401 Unauthorized**: +```json +{ + "errors": [ + { + "message": "Unauthorized access", + "extensions": { + "code": "UNAUTHENTICATED" + } + } + ] +} +``` + +**400 Bad Request**: +```json +{ + "errors": [ + { + "message": "Invalid query syntax", + "extensions": { + "code": "BAD_USER_INPUT" + } + } + ] +} +``` + +### Talep Listesi (Cases) + +Talep bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id ref status subState type cancelSubType saleOpportunitySubType endorsementSubType complaintSubType priorityScore priorityRuleHits{ruleName score label description } customerName customerType assetType assetId vehiclePlateCode vehiclePlateCity propertyNumber mainState productBranch channel representedBy{name id } policyEndDate createdBy{name id } createdAt lastUpdatedBy{name id } lastUpdateDate customerIdentity customerCityText customerDistrictText customerBirthDate vehicleDocumentSerialCode vehicleDocumentSerialNumber vehicleModelBrandText vehicleModelTypeText vehicleModelYear vehicleEngineNumber vehicleChassisNumber vehicleRegistrationDate vehicleSeatNumber propertySquareMeter propertyConstructionYear propertyFloorNumber advertisingSource advertisingCampaign }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "cases": { + "totalCount": 250, + "items": [ + { + "id": "case-id-123", + "ref": "TALEP-2024-001", + "status": "Active", + "subState": "InProgress", + "type": "Complaint", + "cancelSubType": null, + "saleOpportunitySubType": null, + "endorsementSubType": null, + "complaintSubType": "Service", + "priorityScore": 85, + "priorityRuleHits": [ + { + "ruleName": "High Priority Customer", + "score": 85, + "label": "VIP", + "description": "Premium müşteri önceliği" + } + ], + "customerName": "Ahmet Yılmaz", + "customerType": "Individual", + "assetType": "Vehicle", + "assetId": "asset-123", + "vehiclePlateCode": "34ABC123", + "vehiclePlateCity": "İstanbul", + "propertyNumber": null, + "mainState": "Open", + "productBranch": "Kasko", + "channel": "Online", + "representedBy": { + "name": "Mehmet Özkan", + "id": "user-456" + }, + "policyEndDate": "2024-12-31", + "createdBy": { + "name": "Sistem", + "id": "system" + }, + "createdAt": "2024-01-15T10:30:00Z", + "lastUpdatedBy": { + "name": "Mehmet Özkan", + "id": "user-456" + }, + "lastUpdateDate": "2024-01-16T14:20:00Z", + "customerIdentity": "12345678901", + "customerCityText": "İstanbul", + "customerDistrictText": "Kadıköy", + "customerBirthDate": "1990-05-15", + "vehicleDocumentSerialCode": "ABC123", + "vehicleDocumentSerialNumber": "123456789", + "vehicleModelBrandText": "Toyota", + "vehicleModelTypeText": "Corolla", + "vehicleModelYear": 2020, + "vehicleEngineNumber": "ENG123456", + "vehicleChassisNumber": "CHS123456", + "vehicleRegistrationDate": "2020-03-15", + "vehicleSeatNumber": 5, + "propertySquareMeter": null, + "propertyConstructionYear": null, + "propertyFloorNumber": null, + "advertisingSource": "Google Ads", + "advertisingCampaign": "Kasko 2024" + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Durum Filtresi**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: { status: \"Active\" } ){totalCount items{id ref status createdAt}}}" +} +``` + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id ref createdAt}}}" +} +``` + +**Müşteri Tipi Filtresi**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: { customerType: \"Individual\" } ){totalCount items{id ref customerName customerType}}}" +} +``` + +**Ürün Branşı Filtresi**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: { productBranch: \"Kasko\" } ){totalCount items{id ref productBranch}}}" +} +``` + +**Öncelik Skoru Filtresi**: +```json +{ + "query": "query { cases(skip: 0 take: 10 where: { priorityScore: { gte: 80 } } ){totalCount items{id ref priorityScore}}}" +} +``` + +#### Sıralama Örnekleri + +**Oluşturulma Tarihine Göre Azalan**: +```json +{ + "query": "query { cases(skip: 0 take: 10 order: { createdAt: DESC } ){totalCount items{id ref createdAt}}}" +} +``` + +**Öncelik Skoruna Göre Azalan**: +```json +{ + "query": "query { cases(skip: 0 take: 10 order: { priorityScore: DESC } ){totalCount items{id ref priorityScore}}}" +} +``` + +**Müşteri Adına Göre Artan**: +```json +{ + "query": "query { cases(skip: 0 take: 10 order: { customerName: ASC } ){totalCount items{id ref customerName}}}" +} +``` + +### Teklif Listesi (Proposals) + +Teklif bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id productBranch insuredCustomerName insuredCustomerIdentity insuredCustomerType state highestPremium lowestPremium successRate productsCount succeedProductsCount createdAt agentUserCreatedBy{id name } vehicleModel{brand{text value } year type{text value } } }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "proposals": { + "totalCount": 500, + "items": [ + { + "id": "proposal-id-123", + "productBranch": "Kasko", + "insuredCustomerName": "Ahmet Yılmaz", + "insuredCustomerIdentity": "12345678901", + "insuredCustomerType": "Individual", + "state": "Completed", + "highestPremium": 2500.00, + "lowestPremium": 1800.00, + "successRate": 85.5, + "productsCount": 3, + "succeedProductsCount": 2, + "createdAt": "2024-01-15T10:30:00Z", + "agentUserCreatedBy": { + "id": "agent-456", + "name": "Mehmet Özkan" + }, + "vehicleModel": { + "brand": { + "text": "Toyota", + "value": "toyota" + }, + "year": 2020, + "type": { + "text": "Corolla", + "value": "corolla" + } + } + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Durum Filtresi**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: { state: \"Completed\" } ){totalCount items{id productBranch state createdAt}}}" +} +``` + +**Ürün Branşı Filtresi**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: { productBranch: \"Kasko\" } ){totalCount items{id productBranch state}}}" +} +``` + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id createdAt}}}" +} +``` + +**Müşteri Tipi Filtresi**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: { insuredCustomerType: \"Individual\" } ){totalCount items{id insuredCustomerName insuredCustomerType}}}" +} +``` + +**Başarı Oranı Filtresi**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 where: { successRate: { gte: 80 } } ){totalCount items{id successRate}}}" +} +``` + +#### Sıralama Örnekleri + +**Oluşturulma Tarihine Göre Azalan**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 order: { createdAt: DESC } ){totalCount items{id createdAt}}}" +} +``` + +**Başarı Oranına Göre Azalan**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 order: { successRate: DESC } ){totalCount items{id successRate}}}" +} +``` + +**En Yüksek Prima Göre Azalan**: +```json +{ + "query": "query { proposals(skip: 0 take: 10 order: { highestPremium: DESC } ){totalCount items{id highestPremium}}}" +} +``` + +### Poliçe Listesi (Policies) + +Poliçe bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: {} order: {arrangementDate: DESC}){totalCount items{id state productBranch startDate endDate insuranceCompanyLogo insuranceCompanyPolicyNumber insuranceCompanyName productName grossPremium netPremium insuredCustomerName insuredCustomerIdentity insuredCustomerType arrangementDate createdAt createdBy{name id } representedBy{name id } channel vehicleModel{brand{text value } year type{text value } } }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "policies": { + "totalCount": 750, + "items": [ + { + "id": "policy-id-123", + "state": "Active", + "productBranch": "Kasko", + "startDate": "2024-01-01", + "endDate": "2025-01-01", + "insuranceCompanyLogo": "https://example.com/logo.png", + "insuranceCompanyPolicyNumber": "POL-2024-001", + "insuranceCompanyName": "ABC Sigorta", + "productName": "Kasko Plus", + "grossPremium": 2500.00, + "netPremium": 2000.00, + "insuredCustomerName": "Ahmet Yılmaz", + "insuredCustomerIdentity": "12345678901", + "insuredCustomerType": "Individual", + "arrangementDate": "2024-01-15T10:30:00Z", + "createdAt": "2024-01-15T10:30:00Z", + "createdBy": { + "name": "Mehmet Özkan", + "id": "user-456" + }, + "representedBy": { + "name": "Mehmet Özkan", + "id": "user-456" + }, + "channel": "Online", + "vehicleModel": { + "brand": { + "text": "Toyota", + "value": "toyota" + }, + "year": 2020, + "type": { + "text": "Corolla", + "value": "corolla" + } + } + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Durum Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { state: \"Active\" } ){totalCount items{id state productBranch startDate endDate}}}" +} +``` + +**Ürün Branşı Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { productBranch: \"Kasko\" } ){totalCount items{id productBranch state}}}" +} +``` + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { arrangementDate: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id arrangementDate}}}" +} +``` + +**Sigorta Şirketi Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { insuranceCompanyName: \"ABC Sigorta\" } ){totalCount items{id insuranceCompanyName}}}" +} +``` + +**Prim Aralığı Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { grossPremium: { gte: 1000, lte: 5000 } } ){totalCount items{id grossPremium}}}" +} +``` + +**Müşteri Tipi Filtresi**: +```json +{ + "query": "query { policies(skip: 0 take: 10 where: { insuredCustomerType: \"Individual\" } ){totalCount items{id insuredCustomerName insuredCustomerType}}}" +} +``` + +#### Sıralama Örnekleri + +**Düzenleme Tarihine Göre Azalan**: +```json +{ + "query": "query { policies(skip: 0 take: 10 order: { arrangementDate: DESC } ){totalCount items{id arrangementDate}}}" +} +``` + +**Prim Tutarına Göre Azalan**: +```json +{ + "query": "query { policies(skip: 0 take: 10 order: { grossPremium: DESC } ){totalCount items{id grossPremium}}}" +} +``` + +**Bitiş Tarihine Göre Artan**: +```json +{ + "query": "query { policies(skip: 0 take: 10 order: { endDate: ASC } ){totalCount items{id endDate}}}" +} +``` + +### Poliçe Transfer Listesi (PolicyTransfers) + +Poliçe transfer işlemlerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id startDate endDate createdAt succeededPolicyCount failedPolicyCount skippedPolicyCount }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "policyTransfers": { + "totalCount": 25, + "items": [ + { + "id": "transfer-id-123", + "startDate": "2024-01-01", + "endDate": "2024-01-31", + "createdAt": "2024-01-15T10:30:00Z", + "succeededPolicyCount": 45, + "failedPolicyCount": 3, + "skippedPolicyCount": 2 + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id createdAt}}}" +} +``` + +**Başlangıç Tarihi Filtresi**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: { startDate: { gte: \"2024-01-01\" } } ){totalCount items{id startDate}}}" +} +``` + +**Bitiş Tarihi Filtresi**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: { endDate: { lte: \"2024-12-31\" } } ){totalCount items{id endDate}}}" +} +``` + +**Başarılı Transfer Filtresi**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: { succeededPolicyCount: { gte: 10 } } ){totalCount items{id succeededPolicyCount}}}" +} +``` + +**Başarısız Transfer Filtresi**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 where: { failedPolicyCount: { gte: 1 } } ){totalCount items{id failedPolicyCount}}}" +} +``` + +#### Sıralama Örnekleri + +**Oluşturulma Tarihine Göre Azalan**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 order: { createdAt: DESC } ){totalCount items{id createdAt}}}" +} +``` + +**Başarılı Transfer Sayısına Göre Azalan**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 order: { succeededPolicyCount: DESC } ){totalCount items{id succeededPolicyCount}}}" +} +``` + +**Başlangıç Tarihine Göre Artan**: +```json +{ + "query": "query { policyTransfers(skip: 0 take: 10 order: { startDate: ASC } ){totalCount items{id startDate}}}" +} +``` + +### Dosya Poliçe Transfer Listesi (FilePolicyTransfers) + +Dosya bazlı poliçe transfer işlemlerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{insuranceCompanyLogo insuranceCompanyName createdAt succeededPolicyCount failedPolicyCount skippedPolicyCount id }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "filePolicyTransfers": { + "totalCount": 15, + "items": [ + { + "id": "file-transfer-id-123", + "insuranceCompanyLogo": "https://example.com/logo.png", + "insuranceCompanyName": "ABC Sigorta", + "createdAt": "2024-01-15T10:30:00Z", + "succeededPolicyCount": 120, + "failedPolicyCount": 5, + "skippedPolicyCount": 3 + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id createdAt}}}" +} +``` + +**Sigorta Şirketi Filtresi**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: { insuranceCompanyName: \"ABC Sigorta\" } ){totalCount items{id insuranceCompanyName}}}" +} +``` + +**Başarılı Transfer Filtresi**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: { succeededPolicyCount: { gte: 50 } } ){totalCount items{id succeededPolicyCount}}}" +} +``` + +**Başarısız Transfer Filtresi**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: { failedPolicyCount: { gte: 1 } } ){totalCount items{id failedPolicyCount}}}" +} +``` + +**Atlanan Transfer Filtresi**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 where: { skippedPolicyCount: { gte: 1 } } ){totalCount items{id skippedPolicyCount}}}" +} +``` + +#### Sıralama Örnekleri + +**Oluşturulma Tarihine Göre Azalan**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 order: { createdAt: DESC } ){totalCount items{id createdAt}}}" +} +``` + +**Başarılı Transfer Sayısına Göre Azalan**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 order: { succeededPolicyCount: DESC } ){totalCount items{id succeededPolicyCount}}}" +} +``` + +**Sigorta Şirketi Adına Göre Artan**: +```json +{ + "query": "query { filePolicyTransfers(skip: 0 take: 10 order: { insuranceCompanyName: ASC } ){totalCount items{id insuranceCompanyName}}}" +} +``` + +### Acente Kullanıcı Listesi (AgentUsers) + +Acente kullanıcı bilgilerini sorgulamak için kullanılan endpoint. + +#### Request + +**URL**: `https://api.insurup.com/graphql` +**Method**: `POST` + +**Headers**: +``` +Content-Type: application/json +Authorization: Bearer +``` + +**Request Body**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id firstName lastName email state createdAt createdByName updatedAt updatedByName roles }}}" +} +``` + +#### Response + +**Başarılı Yanıt (200 OK)**: +```json +{ + "data": { + "agentUsers": { + "totalCount": 50, + "items": [ + { + "id": "user-id-123", + "firstName": "Mehmet", + "lastName": "Özkan", + "email": "mehmet@example.com", + "state": "Active", + "createdAt": "2024-01-15T10:30:00Z", + "createdByName": "Admin User", + "updatedAt": "2024-01-20T14:20:00Z", + "updatedByName": "Admin User", + "roles": [ + { + "id": "role-1", + "name": "Agent", + "permissions": ["read", "write"] + }, + { + "id": "role-2", + "name": "Manager", + "permissions": ["read", "write", "delete"] + } + ] + } + ] + } + } +} +``` + +#### Parametreler + +| Parametre | Tip | Açıklama | Zorunlu | +|-----------|-----|----------|---------| +| `skip` | Integer | Atlanacak kayıt sayısı (pagination için) | Hayır | +| `take` | Integer | Getirilecek kayıt sayısı (max: 100) | Hayır | +| `where` | Object | Filtreleme kriterleri | Hayır | +| `order` | Object | Sıralama kriterleri | Hayır | + +#### Filtreleme Örnekleri + +**Durum Filtresi**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: { state: \"Active\" } ){totalCount items{id firstName lastName email state}}}" +} +``` + +**E-posta Filtresi**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: { email: { contains: \"@example.com\" } } ){totalCount items{id firstName lastName email}}}" +} +``` + +**Tarih Aralığı Filtresi**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: { createdAt: { gte: \"2024-01-01\", lte: \"2024-12-31\" } } ){totalCount items{id firstName lastName createdAt}}}" +} +``` + +**Ad Filtresi**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: { firstName: { contains: \"Mehmet\" } } ){totalCount items{id firstName lastName}}}" +} +``` + +**Soyad Filtresi**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 where: { lastName: { contains: \"Özkan\" } } ){totalCount items{id firstName lastName}}}" +} +``` + +#### Sıralama Örnekleri + +**Oluşturulma Tarihine Göre Azalan**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 order: { createdAt: DESC } ){totalCount items{id firstName lastName createdAt}}}" +} +``` + +**Ad'a Göre Artan**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 order: { firstName: ASC } ){totalCount items{id firstName lastName}}}" +} +``` + +**Soyad'a Göre Artan**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 order: { lastName: ASC } ){totalCount items{id firstName lastName}}}" +} +``` + +**E-posta'ya Göre Artan**: +```json +{ + "query": "query { agentUsers(skip: 0 take: 10 order: { email: ASC } ){totalCount items{id firstName lastName email}}}" +} +``` + +## Kullanım Örnekleri + +### JavaScript/Node.js + +```javascript +const fetch = require('node-fetch'); + +// Müşteri listesi +async function getCustomers(skip = 0, take = 10) { + const query = ` + query { + customers(skip: ${skip} take: ${take} where: {}) { + totalCount + items { + id + name + identity + type + primaryEmail + primaryPhoneNumber { + number + countryCode + } + createdAt + city { + text + value + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Talep listesi +async function getCases(skip = 0, take = 10, filters = {}) { + const query = ` + query { + cases(skip: ${skip} take: ${take} where: ${JSON.stringify(filters)} order: {createdAt: DESC}) { + totalCount + items { + id + ref + status + subState + type + priorityScore + customerName + customerType + productBranch + channel + createdAt + lastUpdateDate + representedBy { + name + id + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Kullanım örnekleri +getCustomers(0, 20).then(customers => { + console.log('Toplam müşteri sayısı:', customers.data.customers.totalCount); + console.log('Müşteriler:', customers.data.customers.items); +}); + +// Aktif talepleri getir +getCases(0, 20, { status: 'Active' }).then(cases => { + console.log('Toplam talep sayısı:', cases.data.cases.totalCount); + console.log('Talepler:', cases.data.cases.items); +}); + +// Yüksek öncelikli talepleri getir +getCases(0, 20, { priorityScore: { gte: 80 } }).then(cases => { + console.log('Yüksek öncelikli talepler:', cases.data.cases.items); +}); + +// Teklif listesi +async function getProposals(skip = 0, take = 10, filters = {}) { + const query = ` + query { + proposals(skip: ${skip} take: ${take} where: ${JSON.stringify(filters)} order: {createdAt: DESC}) { + totalCount + items { + id + productBranch + insuredCustomerName + insuredCustomerIdentity + insuredCustomerType + state + highestPremium + lowestPremium + successRate + productsCount + succeedProductsCount + createdAt + agentUserCreatedBy { + id + name + } + vehicleModel { + brand { + text + value + } + year + type { + text + value + } + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Kullanım örnekleri +// Tamamlanan teklifleri getir +getProposals(0, 20, { state: 'Completed' }).then(proposals => { + console.log('Toplam teklif sayısı:', proposals.data.proposals.totalCount); + console.log('Teklifler:', proposals.data.proposals.items); +}); + +// Yüksek başarı oranlı teklifleri getir +getProposals(0, 20, { successRate: { gte: 80 } }).then(proposals => { + console.log('Yüksek başarı oranlı teklifler:', proposals.data.proposals.items); +}); + +// Poliçe listesi +async function getPolicies(skip = 0, take = 10, filters = {}) { + const query = ` + query { + policies(skip: ${skip} take: ${take} where: ${JSON.stringify(filters)} order: {arrangementDate: DESC}) { + totalCount + items { + id + state + productBranch + startDate + endDate + insuranceCompanyLogo + insuranceCompanyPolicyNumber + insuranceCompanyName + productName + grossPremium + netPremium + insuredCustomerName + insuredCustomerIdentity + insuredCustomerType + arrangementDate + createdAt + createdBy { + name + id + } + representedBy { + name + id + } + channel + vehicleModel { + brand { + text + value + } + year + type { + text + value + } + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Kullanım örnekleri +// Aktif poliçeleri getir +getPolicies(0, 20, { state: 'Active' }).then(policies => { + console.log('Toplam poliçe sayısı:', policies.data.policies.totalCount); + console.log('Poliçeler:', policies.data.policies.items); +}); + +// Yüksek primli poliçeleri getir +getPolicies(0, 20, { grossPremium: { gte: 2000 } }).then(policies => { + console.log('Yüksek primli poliçeler:', policies.data.policies.items); +}); + +// Acente kullanıcı listesi +async function getAgentUsers(skip = 0, take = 10, filters = {}) { + const query = ` + query { + agentUsers(skip: ${skip} take: ${take} where: ${JSON.stringify(filters)} order: {createdAt: DESC}) { + totalCount + items { + id + firstName + lastName + email + state + createdAt + createdByName + updatedAt + updatedByName + roles { + id + name + permissions + } + } + } + } + `; + + const response = await fetch('https://api.insurup.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + }, + body: JSON.stringify({ query }) + }); + + const data = await response.json(); + return data; +} + +// Kullanım örnekleri +// Aktif kullanıcıları getir +getAgentUsers(0, 20, { state: 'Active' }).then(users => { + console.log('Toplam kullanıcı sayısı:', users.data.agentUsers.totalCount); + console.log('Kullanıcılar:', users.data.agentUsers.items); +}); + +// Belirli e-posta domainindeki kullanıcıları getir +getAgentUsers(0, 20, { email: { contains: '@example.com' } }).then(users => { + console.log('Example.com kullanıcıları:', users.data.agentUsers.items); +}); +``` + +### Python + +```python +import requests +import json + +def get_customers(skip=0, take=10): + query = """ + query { + customers(skip: %d take: %d where: {}) { + totalCount + items { + id + name + identity + type + primaryEmail + primaryPhoneNumber { + number + countryCode + } + createdAt + city { + text + value + } + } + } + } + """ % (skip, take) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +def get_cases(skip=0, take=10, filters=None): + if filters is None: + filters = {} + + query = """ + query { + cases(skip: %d take: %d where: %s order: {createdAt: DESC}) { + totalCount + items { + id + ref + status + subState + type + priorityScore + customerName + customerType + productBranch + channel + createdAt + lastUpdateDate + representedBy { + name + id + } + } + } + } + """ % (skip, take, json.dumps(filters)) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +# Kullanım örnekleri +customers = get_customers(0, 20) +print(f"Toplam müşteri sayısı: {customers['data']['customers']['totalCount']}") +print(f"Müşteriler: {customers['data']['customers']['items']}") + +# Aktif talepleri getir +cases = get_cases(0, 20, {'status': 'Active'}) +print(f"Toplam talep sayısı: {cases['data']['cases']['totalCount']}") +print(f"Talepler: {cases['data']['cases']['items']}") + +# Yüksek öncelikli talepleri getir +high_priority_cases = get_cases(0, 20, {'priorityScore': {'gte': 80}}) +print(f"Yüksek öncelikli talepler: {high_priority_cases['data']['cases']['items']}") + +def get_proposals(skip=0, take=10, filters=None): + if filters is None: + filters = {} + + query = """ + query { + proposals(skip: %d take: %d where: %s order: {createdAt: DESC}) { + totalCount + items { + id + productBranch + insuredCustomerName + insuredCustomerIdentity + insuredCustomerType + state + highestPremium + lowestPremium + successRate + productsCount + succeedProductsCount + createdAt + agentUserCreatedBy { + id + name + } + vehicleModel { + brand { + text + value + } + year + type { + text + value + } + } + } + } + } + """ % (skip, take, json.dumps(filters)) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +# Kullanım örnekleri +# Tamamlanan teklifleri getir +proposals = get_proposals(0, 20, {'state': 'Completed'}) +print(f"Toplam teklif sayısı: {proposals['data']['proposals']['totalCount']}") +print(f"Teklifler: {proposals['data']['proposals']['items']}") + +# Yüksek başarı oranlı teklifleri getir +high_success_proposals = get_proposals(0, 20, {'successRate': {'gte': 80}}) +print(f"Yüksek başarı oranlı teklifler: {high_success_proposals['data']['proposals']['items']}") + +def get_policies(skip=0, take=10, filters=None): + if filters is None: + filters = {} + + query = """ + query { + policies(skip: %d take: %d where: %s order: {arrangementDate: DESC}) { + totalCount + items { + id + state + productBranch + startDate + endDate + insuranceCompanyLogo + insuranceCompanyPolicyNumber + insuranceCompanyName + productName + grossPremium + netPremium + insuredCustomerName + insuredCustomerIdentity + insuredCustomerType + arrangementDate + createdAt + createdBy { + name + id + } + representedBy { + name + id + } + channel + vehicleModel { + brand { + text + value + } + year + type { + text + value + } + } + } + } + } + """ % (skip, take, json.dumps(filters)) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +# Kullanım örnekleri +# Aktif poliçeleri getir +policies = get_policies(0, 20, {'state': 'Active'}) +print(f"Toplam poliçe sayısı: {policies['data']['policies']['totalCount']}") +print(f"Poliçeler: {policies['data']['policies']['items']}") + +# Yüksek primli poliçeleri getir +high_premium_policies = get_policies(0, 20, {'grossPremium': {'gte': 2000}}) +print(f"Yüksek primli poliçeler: {high_premium_policies['data']['policies']['items']}") + +def get_agent_users(skip=0, take=10, filters=None): + if filters is None: + filters = {} + + query = """ + query { + agentUsers(skip: %d take: %d where: %s order: {createdAt: DESC}) { + totalCount + items { + id + firstName + lastName + email + state + createdAt + createdByName + updatedAt + updatedByName + roles { + id + name + permissions + } + } + } + } + """ % (skip, take, json.dumps(filters)) + + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + + response = requests.post( + 'https://api.insurup.com/graphql', + headers=headers, + json={'query': query} + ) + + return response.json() + +# Kullanım örnekleri +# Aktif kullanıcıları getir +agent_users = get_agent_users(0, 20, {'state': 'Active'}) +print(f"Toplam kullanıcı sayısı: {agent_users['data']['agentUsers']['totalCount']}") +print(f"Kullanıcılar: {agent_users['data']['agentUsers']['items']}") + +# Belirli e-posta domainindeki kullanıcıları getir +example_users = get_agent_users(0, 20, {'email': {'contains': '@example.com'}}) +print(f"Example.com kullanıcıları: {example_users['data']['agentUsers']['items']}") +``` + +### cURL + +**Müşteri Listesi**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { customers(skip: 0 take: 10 where: {} ){totalCount items{id name identity type primaryEmail primaryPhoneNumber{number countryCode } createdAt city{text value }}}}" + }' +``` + +**Talep Listesi**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { cases(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id ref status subState type priorityScore customerName customerType productBranch channel createdAt lastUpdateDate representedBy{name id }}}}" + }' +``` + +**Aktif Talepler**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { cases(skip: 0 take: 10 where: { status: \"Active\" } order: {createdAt: DESC}){totalCount items{id ref status customerName createdAt}}}" + }' +``` + +**Teklif Listesi**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { proposals(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id productBranch insuredCustomerName insuredCustomerIdentity state highestPremium lowestPremium successRate createdAt agentUserCreatedBy{id name }}}}" + }' +``` + +**Tamamlanan Teklifler**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { proposals(skip: 0 take: 10 where: { state: \"Completed\" } order: {createdAt: DESC}){totalCount items{id productBranch state successRate createdAt}}}" + }' +``` + +**Poliçe Listesi**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { policies(skip: 0 take: 10 where: {} order: {arrangementDate: DESC}){totalCount items{id state productBranch startDate endDate insuranceCompanyName productName grossPremium netPremium insuredCustomerName arrangementDate}}}" + }' +``` + +**Aktif Poliçeler**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { policies(skip: 0 take: 10 where: { state: \"Active\" } order: {arrangementDate: DESC}){totalCount items{id state productBranch startDate endDate grossPremium}}}" + }' +``` + +**Acente Kullanıcı Listesi**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { agentUsers(skip: 0 take: 10 where: {} order: {createdAt: DESC}){totalCount items{id firstName lastName email state createdAt roles}}}" + }' +``` + +**Aktif Kullanıcılar**: +```bash +curl -X POST https://api.insurup.com/graphql \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN_HERE" \ + -d '{ + "query": "query { agentUsers(skip: 0 take: 10 where: { state: \"Active\" } order: {createdAt: DESC}){totalCount items{id firstName lastName email state}}}" + }' +``` + +## Güvenlik + +- Tüm API istekleri için geçerli bir Bearer token gereklidir +- Token'lar belirli bir süre sonra sona erer ve yenilenmesi gerekir +- Rate limiting uygulanır: dakikada maksimum 100 istek +- HTTPS kullanımı zorunludur + +## Hata Kodları + +| Kod | Açıklama | +|-----|----------| +| `UNAUTHENTICATED` | Geçersiz veya eksik token | +| `FORBIDDEN` | Yetersiz yetki | +| `BAD_USER_INPUT` | Geçersiz sorgu parametreleri | +| `INTERNAL_ERROR` | Sunucu hatası | + +## Rate Limiting + +- **Limit**: Dakikada 100 istek +- **Window**: 60 saniye +- **Response Headers**: + - `X-RateLimit-Limit`: Maksimum istek sayısı + - `X-RateLimit-Remaining`: Kalan istek sayısı + - `X-RateLimit-Reset`: Limit sıfırlanma zamanı (Unix timestamp) + +## Destek + +API kullanımı ile ilgili sorularınız için [Destek Ekibi](mailto:destek@insurup.com) ile iletişime geçebilirsiniz. diff --git a/versioned_docs/version-0.1.70/entegrasyon/index.md b/versioned_docs/version-0.1.70/entegrasyon/index.md index 6574353..8a07bed 100644 --- a/versioned_docs/version-0.1.70/entegrasyon/index.md +++ b/versioned_docs/version-0.1.70/entegrasyon/index.md @@ -9,15 +9,17 @@ InsurUp ile sistemlerinizi entegre ederken kullanabileceğiniz başlıca rehberl ## Bu bölümde neler var? +- [GraphQL API Entegrasyonu](/entegrasyon/graphql-api-entegrasyonu): InsurUp GraphQL API'si ile programatik etkileşim, müşteri sorguları ve diğer veri işlemleri. - [InsurUp Web Satış Platformu Self‑servis Entegrasyon Rehberi](/entegrasyon/insurup-web-satis-platformu-self-servis-entegrasyon-rehberi): B2C akışında müşteri oturumundan teklif/poliçe ve ödeme süreçlerine kadar uçtan uca entegrasyon adımları. - [InsurUp Web Satış Platformu Self-servis Kasko Entegrasyon Rehberi](/entegrasyon/insurup-web-satis-platformu-self-servis-kasko-entegrasyon-rehberi): Kasko branşı için InsurUp B2C entegrasyon akışını, teklif, ödeme ve poliçeleştirme örnekleriyle anlatır. -- [Webhook API Entegrasyonu](/entegrasyon/webhook-api-entegrasyonu): InsurUp tarafından tetiklenen async/sync webhook event’leri, imza doğrulama ve örnek payload’lar. +- [Webhook API Entegrasyonu](/entegrasyon/webhook-api-entegrasyonu): InsurUp tarafından tetiklenen async/sync webhook event'leri, imza doğrulama ve örnek payload'lar. ## Kimler için? -- Kendi web satış platformunu InsurUp’a bağlamak isteyen acente ve broker IT ekipleri. -- Gerçek zamanlı bildirim ve iş akışlarını webhook’lar üzerinden yönetmek isteyen ekipler. +- InsurUp verilerini kendi sistemlerine entegre etmek isteyen geliştiriciler. +- Kendi web satış platformunu InsurUp'a bağlamak isteyen acente ve broker IT ekipleri. +- Gerçek zamanlı bildirim ve iş akışlarını webhook'lar üzerinden yönetmek isteyen ekipler. ## Nasıl başlarım? -Önce genel mimariyi ve ihtiyaçları anlamak için self‑servis entegrasyon rehberini inceleyin. Sonrasında, gerçek zamanlı olayları sisteminize aktarmak için webhook entegrasyonunu yapılandırın. +Veri entegrasyonu için GraphQL API dökümanını inceleyerek başlayın. Kendi web satış platformunuzu entegre etmek için self‑servis entegrasyon rehberini takip edin. Gerçek zamanlı olayları sisteminize aktarmak için webhook entegrasyonunu yapılandırın. diff --git a/yarn.lock b/yarn.lock index 3dc2a18..1c4be8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2057,11 +2057,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== - "@parcel/watcher@^2.4.1": version "2.4.1" resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz"