სერვისის პროვაიდერს შეუძლია შექმნას ავტორიზაციის ვებ-სერვისი, რომელიც მხარს უჭერს OAuth 2.0 ([D. Hardt, Ed., 2012](https://datatracker.ietf.org/doc/html/rfc6749)) Client Credentials-ის გრანტის ტიპს.

ბანკი სერვის-პროვაიდერთან კომუნიკაციისთვის გამოიყენებს HTTP POST მეთოდს შემდეგი ფორმატით:

### Header-ის პარამეტრები

- `Content-Type` — application/x-www-form-urlencoded, required

### Body-ს პარამეტრები

- `grant_type` — client_credentials, required

  მნიშვნელობად გადაეცემა ფიქსირებული ტექსტი: `client_credentials`

- `client_id` — &#60;client_id&#62;, required

- `client_secret` — &#60;client_secret&#62;, required

**CURL**

```bash
curl --location --request POST 'http://localhost:8080/ess-api/authenticate' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=client_id' \
--data-urlencode 'client_secret=client_secret'
```

### Response
სერვის-პროვაიდერმა უნდა დააბრუნოს შემდეგი JSON პასუხი:

- `access_token` — string

  ავტორიზაციის სერვერის მიერ დაბრუნებული Token-ის მნიშვნელობა

- `created_at` — string

  UNIX დროის შტამპი – მილიწამების რაოდენობა, რაც გავიდა 1970 წლის 1 იანვრიდან დღემდე UTC-ის დროის სარტყელით.

- `expires_in` — number

  აბრუნებს რიცხვით მნიშვნელობას, თუ რამდენი წამის განმავლობაში არის აქტიური Token.

- `token_type` — number

  Token-ის ტიპი (ბრუნდება ტექსტური მნიშვნელობა - `Bearer`).

**RESPONSE**

```json
{
  "access_token": "xx82194x21412xxx219124x678x888x2xxx1900xx",
  "created_at": 1693236686855,
  "expires_in": 300,
  "token_type": "Bearer"
}
```

ამ უკანასკნელი სერვერის არსებობის შემთხვევაში, საქართველოს ბანკი ყოველი ოპერაციის გამოძახების დროს სერვის-პროვაიდერს გადასცემს შემდეგ Header-ის მნიშვნელობას:

- `Authorization` — Bearer <token>, required

  გადაეცემა „Bearer „ + „&#60;token&#62;“ (მაგ: „Bearer xx82194x21412xxx219124x678x888x2xxx1900xx“),
  სადაც `token` არის სერვის-პროვიადერის ავტორიზაციის სერვერის მიერ დაბრუნებული პარამეტრი.
