---
# System prepended metadata

title: Getting Started

---

# Getting Started

* Desteklenecek protokoller
    * Açık Bankacılık Yönetmeliği
    * Outh2
    * OpenId
* **Headless** geliştirme yapılacaktır.
* **dapr** üzerinde geliştirme yapılacaktır.
* Tüm hizmetler **REST API** olarak sunulacaktır.
* Kullanıcı arabirimleri ayrı projeler olarak geliştirilecektir.
* Kullanıcı doğrulama yapan arabirimler *Proof Key for Code Exchange (PKCE)* kullanacaktır. 

:::warning
Arayüzler tek arayüz olarak Flutter iler yazılabilir mi? Web + Mobile olarak ?
:::


## Temel Bilgiler

### Kullanıcı Tanımları 

Sercan; Migrosda kredi verir, Burgan musterisi


* User : Sercan
* Clients: MobileApp, LoanApp, TFS
* Scope: BurganBank
    * Role Group (Burgan): Yazilimci, Analist, Release Manager
* Scope: Migros
    * Role Group (Loan Dealer): Loan Agent, Loan Approver, CFO 
* Scope: Mudo
    * Role Group (Loan Dealer)....
* Scope: Sercan Musterisi
    * Role Group (Retail) : Read, Admin
* Consent 1: (U)Sercan, (S)Sercan Musterisi, (C)MobileApp, (R)Admin
* Consent 2: (U)Sercan, (S)Migros, (C)LoanAppm, (R)Loan Agent
* Consent 3: (U)Sercan, (S)BurganBank, (C)TFS, (R)Release Manager

(Role)Loan Agent, POST api.burgan.com.tr/loan/{dealer-code}/apply
api.burgan.com.tr/loan/**Migros**/apply OK
api.burgan.com.tr/loan/**Mudo**/apply 403

* User: Ugur
* Consent: (U)Ugur, (S)Mudo, (C) LoanApp, (R) Loan Agent

---

* Client: SokPara
* Consent: (U)Ugur, (S)Ugur Musteri, (C)SokPara, (R)Read


1. Is consent valid ?
2. Role(Read) can access account query ?
3. Is customerNo parameter is available to customer ? YES

(Role)Read, POST api.burgan.com.tr/account/{customerNo}








```plantuml
@startuml

entity Scope {
    Müşteri ve kurum 
    bilgilerinin tutulduğu
    temel kümedir
    --
    +Role Group
}


entity User {
    Kaynaklara erişmeye 
    çalışan tüm hesap 
    sahiplerini tanımlar.
}

entity Consent {
    Kaynaklara erişmek için 
    kullanıcılara verilmiş 
    izin/Rıza(Consent) bilgisini 
    tanımlar
    --
    +Scope
    +User
    +Client
    +Role
}


Scope ||..|{ Consent
User ||..|{ Consent


@enduml
```

### Kullanıcı Doğrulama 
Tanımlı rızaya bağlı olarak kullanıcının alabileceği Tokenlar ve verilen Tokenların session yönetim bilgisini kapsar.
```plantuml
@startuml


entity Client {
    Kaynaklara erişmeye 
    yetkili tüm sistem 
    ve uygulamaları tanımlar
}

entity Flow {
    Kullanıcı doğrulama 
    akışlarını tanımlar
    --
}

entity Token {
    Kaynaklara erişmek için 
    kullanıcılara verilebilecek 
    Token bilgilerini 
    tanımlar
    --
    +Client
}


entity Session {
    Verilen Token bilgi 
    ve durumlarını tanımlar
    --
    +Token
    +Flow
}


Token ||..|{ Session
Client ||..|{ Token
Client ||..|{ Flow

@enduml
```

### Kullanıcı Yetkilendirme 

```plantuml
@startuml


entity RoleGroup as "Role Group" {
    Kaynaklara erişimi 
    yönetmek için rolleri 
    gruplandığı tanımdır
    --
    *Roles
}

entity Role {
    Kaynaklara erişimi 
    yönetmek için rol 
    tanımıdır
}

entity Permissions {
    Kaynak tanımlarını içerir. 
    Her API bir permission 
    olarak tanımlanır.
    --
    +Role
}

entity Privilege {
    API erişimlerinde
    kullanıcı özel erişim
    kontrol ve filtreleri
    tanımlanır.
    --
    +Permission
}

RoleGroup ||..|{ Role
Role ||..|{ Permissions
Permissions ||..|{ Privilege


@enduml
```

### İşlemler

```plantuml
@startuml

entity Transations {
    Ödeme emri, hesap açma 
    gibi anlık işlem rızaların 
    tanımlarıdır.
    --
    +Flow
}

entity Approval {
    İşlem rızaları için 
    tanımlı onay zinciridir.
    --
    +Permission
}

Transations ||..|{ Approval

@enduml
```




## Project Structure


amorphie.tag
amorphie.workflow

amorphie.scope
amorphie.client
amorphie.user
amorphie.transactions
amorphie.consent
amorphie.flows
amorphie.resource

amorphie.mobile
amorphie.ui.backoffice

amorphie.apisix.modifier
amorphie.apisix.ratelimit

amorphie.psd2.services.tr
