## Ornek Para Transfer Akisi
Subflow ile 3FA Onay alimi ile birlikte.
```plantuml
@startuml
state baslat
state onayla
state subflow {
state karar <<choice>>
state ivn <<choice>>
state isoapprovalvalid <<choice>>
[*] --> karar
karar --> [*] : <i>Hash geldi ve ok \n <b>ret :hash-valid
karar --> [*] : <i>Hask geldi ve not ok \n <b>ret :hash-not-valid
karar --> otp : <i>Hash yok \n uygulamasi yok
karar --> push : <i>Hash yok\n uygulamasi var
otp --> otp : resend-otp
otp --> isoapprovalvalid : validate-otp
isoapprovalvalid --> ivn : <i>approval valid
isoapprovalvalid --> [*] : <i>approval is not valid \n <b>ret :appoval-not-valid
push --> ivn : approve
push --> [*] : reject
ivn --> IVNcall : <i>IVN aramasi isteniyor.
IVNcall --> [*] : ivn-valid \n <b>ret :ivn-valid
IVNcall --> [*] : ivn-not-valid \n <b>ret : ivn-not-valid
ivn --> [*] : <i>IVN aramasi istenmiyor \n <b>ret :appoval-valid
}
state ozet
baslat -> onayla
onayla -> subflow
subflow -> ozet
@enduml
```
## SubFlow Input Parametreleri
* **data**: JSON; Onaylanacak veriyi icerir. Sadece kayıt amaçlıdır.
* **accept-language**: string; Ekran ve mesajlar hangi dilde iletilecek.
* ~~**data-template**: string; Verinin gosterimi icin hangi template kullanilacak. (push mesaj icinde ve bekleyen onaylarda.)~~ **Push içerik veya OTP adımında gösterilecek içerik view leri gibi konularda direkt transition/state view ile ilerlenecek.**
* ~~**data-signature**: STRING; Onaylanacak verinin kullanici private key ile alinmis imzasidir. Verinin kontrolu icin kullanilir.~~
* ~~**is-signed**: Kullanıcının device üzerindeki private key ile imzalanmış mı?~~
* **request-ivn-validation**:BOOLEAN; IVN aramasi yapilacak mi?
* **request-ivn-param**:JSON; IVN servis parametreleri, data içerisindeki jsonpath lerle servise pass geçilebilir.
* **user**:string; hangi kullanicidan onay alinacak, kullanici referans degeri, bankada tckn?
* **ttl**;NUMBER; saniye cinsinden onayin beklendigi sure
* **otp-retry-count**;NUMBER; kac defa otp isteyebilir.
~~**inform-all-registered-contact-endpoint**:BOOLEAN; kayitli tum telefonlarina sms ve mail adreslerine bilgilendirme gonder?
**inform-all-registered-contact-endpoint-sms-template**:STRING;bilgilendirme icin kullanilacak sms-template
**inform-all-registered-contact-endpoint-mail-template**:STRING;bilgilendirme icin kullanilacak sms-template~~
## SubFlow Generic Parametreleri
* **client-id**: GUID; Kanala ozel bir karar varsa, mesela bayi kanali ise her zaman otp ile ilerle gibi, client tag ile check edilip akis ona gore kurgulanabilir.
* client mobil ise direkt signed kabul ile direkt çıkar
* client web ve mobili yoksa otp yapar.
* client web mobili varsa push yapar.