# Cancel-Contract Akışı ve CancelDocuments API Teknik Analiz Dokümanı
## 1. Cancel-Contract Akışı İçin Teknik Detaylar
Cancel-Contract akışı, mevcut bir workflow üzerinde devam eden süreci durdurmak ve akışı iptal etmek amacıyla kullanılır. Bu akışı çalıştırmak için ilgili workflow instance ID'si gereklidir.
### Test ve Preprod Ortamları
TEST: https://nonprod-apisix.burgan.com.tr/ebanking/contract/
PREPROD: https://preprod-apisix.burgan.com.tr/ebanking/contract/
PROD:https://intprod-apisix.burgan.com.tr/ebanking/contract/
DMZTEST: https://test-pubagw6.burgan.com.tr/ebanking/contract/
DMZPREPROD: https://preprod-pubagw6.burgan.com.tr/ebanking/contract/
DMZPROD: https://pubagw6.burgan.com.tr/ebanking/contract/
### Örnek Cancel-Contract Curl Komutu
```bash
curl --location 'https://nonprod-apisix.burgan.com.tr/ebanking/flow/instance/6c87ded7-0ccb-45dc-bb60-263641da7ee4/transition/cancel-contract' \
--header 'User: 650c0ab5-7e1d-4d06-a7ce-f75e6857da68' \
--header 'Behalf-Of-User: 650c0ab5-7e1d-4d06-a7ce-f75e6857da68' \
--header 'Accept-Language: tr-TR' \
--header 'Content-Type: application/json' \
--header 'X-Device-Id: 651c0ab5-7e1d-4d06-a7ce-f75e6857da69' \
--header 'X-Token-Id: 651c0ab5-7e1d-4d06-a7ce-f75e6857da69' \
--header 'User_reference: 1130240911' \
--header 'business_line: X' \
--header 'Cookie: 32ed7084ebf90ace28aa4e8e276fe75c=77b89443b5d77c6ff1879aca7793efd3; a58e47c06cc3b2a29f02461f20391d49=c7972c7fa30a05b5e3370533e5684d00; a58e47c06cc3b2a29f02461f20391d49=c7972c7fa30a05b5e3370533e5684d00' \
--header 'Customer_no: 20058608' \
--data '{}'
```
### Kullanılan Parametreler
- **User_reference**: Genellikle müşterinin TCKN veya VKN bilgisini ifade eden referans bilgisi.
- **business_line**: Müşterinin iş kolu Burgan(B) veya ON(X) olduğunu belirten parametre.
- **Customer_no**: Müşteri numarasını belirtir.
### Akışın Kullanımı
Bu akış, iptal edilmek istenen bir workflow sürecinin durdurulması için kullanılır. Akış iptal edildikten sonra, workflow’un ilgili instanceı kapatılır ve durdurulur.
### Kullanım Senaryoları
- Müşteri talebi geri çekilmişse.
- Workflow’da bir hata veya iptal edilmesi gereken bir durum olmuşsa.
## 2. CancelDocuments API İçin Teknik Detaylar
CancelDocuments API, belirli bir kontrat altındaki dokümanların iptal edilmesi için kullanılır. Bu API, dokümanların tekrar kullanılamayacak şekilde iptal edilmesini sağlar. Ancak, iptal edilen doküman başka bir kontrat altında kullanılıyorsa, söz konusu doküman sadece ilgili kontrat ile olan bağlılığından kaldırılır.
### Örnek CancelDocuments Curl Komutu
```bash
curl --location 'https://nonprod-apisix.burgan.com.tr/ebanking/contract/document/cancelDocuments' \
--header 'accept: */*' \
--header 'User_reference: 365543454789' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer TokenAlınmalı' \
--header 'Cookie: d765907c0cd58c256b4df03b591a1a44=595259d6e6b1fb76ba9807cd52dd4562' \
--data '{
"contractCode": "logindocs",
"contractInstanceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"owner":"1130240911",
"documentCode": [
"doc-on-mobil-temel-bankacilik-mevduat-hizmet-urun-bilgilendirme-formu",
"doc-on-internet-subesi-bilgilendirme-metni",
"doc-bankacilik-hizmetleri-sozlesmesi"
]
}''
```
### Kullanılan Parametreler
- **User_reference**: Müşterinin TCKN bilgisini ifade eden referans bilgisi.
- **contractCode**: İlgili kontratın kodu.
- **documentCode**: İptal edilmesi istenen dokümanların kodları.
- **Owner**: Müşterinin TCKN veya VKN bilgisini ifade eden referans bilgisi.
Not: Body içerisinde owner göndermek zorunlu değildir. Owner boş olursa headerdaki user_reference bilgisine bakılarak dokümanlar iptale çekilir. VKN için dokümanlar iptal edilecekse body içerisinde gönderilmesi gerekmektedir.
### API'nin Kullanımı
CancelDocuments API, belirli dokümanların özellikle iptal edilmek istendiği durumlarda kullanılır. Bu, dokümanların sistemde geçerliliğini yitirmesi ve tekrar kullanılmaması anlamına gelir.
### Kullanım Senaryoları
- Bir müşterinin sözleşme ile bağlı bir dokümanı iptal edilmek istendiğinde.
- Sözleşme altında çift kayıt veya hatalı bir doküman tespit edildiğinde.
## 3. Cancel-Contract ve CancelDocuments Karşılaştırması
- **Cancel-Contract**: Workflow üzerindeki devam eden işlemleri durdurur ve akışı sonlandırır.
- **CancelDocuments**: Belirli sözleşme altındaki dokümanları iptal eder, dokümanın başka sözleşmelere olan bağlılığını kaldırabilir.
### Hangisi Ne Zaman Kullanılmalı?
- **Cancel-Contract**: Akışı iptal etmek ve workflow’u durdurmak için kullanılır.
- **CancelDocuments**: Workflow tamamlandıktan sonra, dokümanların iptal edilmesi gerekiyorsa kullanılır.
## 4. Uygulama Notları
- Cancel-Contract akışı, workflow’un herhangi bir aşamasında çalıştırılabilir. Akışın başlaması için iptal edilecek akışın ContractInstanceId değeri gerekmektedir.
- CancelDocuments API, ilgili dokümanların sadece belirli bir sözleşme ile olan bağlılığını kaldırır veya tamamen iptal eder.