# Протокол

## Оглавление

- [keyapis/jwks/v1/keyapis_jwks_key_v1.proto](#keyapis_jwks_v1_keyapis_jwks_key_v1-proto)
    - [KeyService](#keyapis-jwks-v1-KeyService)
  
    - [DeleteKeyRequest](#keyapis-jwks-v1-DeleteKeyRequest)
    - [DeleteKeyResponse](#keyapis-jwks-v1-DeleteKeyResponse)
    - [DeleteKeyResponse.Error](#keyapis-jwks-v1-DeleteKeyResponse-Error)
    - [GetKeyWellKnownJwksJsonRequest](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonRequest)
    - [GetKeyWellKnownJwksJsonResponse](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse)
    - [KeyInfo](#keyapis-jwks-v1-KeyInfo)
    - [KeyInfo.PublicKey](#keyapis-jwks-v1-KeyInfo-PublicKey)
    - [KeyInfo.SavingError](#keyapis-jwks-v1-KeyInfo-SavingError)
    - [KeyInfo.SavingError.KeyAlreadyExists](#keyapis-jwks-v1-KeyInfo-SavingError-KeyAlreadyExists)
    - [PostKeyRequest](#keyapis-jwks-v1-PostKeyRequest)
    - [PostKeyResponse](#keyapis-jwks-v1-PostKeyResponse)
    - [PostKeyResponse.Error](#keyapis-jwks-v1-PostKeyResponse-Error)
    - [ValidationError](#keyapis-jwks-v1-ValidationError)
  


## [Схема классов](/svg/protos/key/keyapis/jwks/v1/keyapis_jwks_key_v1.proto.svg)
<a href="/svg/protos/key/keyapis/jwks/v1/keyapis_jwks_key_v1.proto.svg"><img src="/svg/protos/key/keyapis/jwks/v1/keyapis_jwks_key_v1.proto.svg" alt="/svg/protos/key/keyapis/jwks/v1/keyapis_jwks_key_v1.proto.svg" style="height:100%;"></a>




<a name="keyapis_jwks_v1_keyapis_jwks_key_v1-proto"></a>

## [keyapis/jwks/v1/keyapis_jwks_key_v1.proto](/protos/key/keyapis/jwks/v1/keyapis_jwks_key_v1.proto)
Сервис публикации публичных криптографических ключей в формате JWK


<a name="keyapis-jwks-v1-KeyService"></a>

### KeyService
 Сервис JWKS

| Название метода | Описание | Тип запроса | Тип ответа |
| --------------- | -------- | ----------- | -----------|
| <a id="keyapis-jwks-v1-PostKey"></a> [PostKey](#keyapis-jwks-v1-PostKey) | Метод сохранения публичного ключа. Используется сервисом KMS. Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695357. Метод доступен для: service | [keyapis.jwks.v1.PostKeyRequest](#keyapis-jwks-v1-PostKeyRequest) | [keyapis.jwks.v1.PostKeyResponse](#keyapis-jwks-v1-PostKeyResponse) |
| <a id="keyapis-jwks-v1-DeleteKey"></a> [DeleteKey](#keyapis-jwks-v1-DeleteKey) | Метод удаления публичного ключа. Используется сервисом KMS. Метод доступен для: service | [keyapis.jwks.v1.DeleteKeyRequest](#keyapis-jwks-v1-DeleteKeyRequest) | [keyapis.jwks.v1.DeleteKeyResponse](#keyapis-jwks-v1-DeleteKeyResponse) |
| <a id="keyapis-jwks-v1-GetKeyWellKnownJwksJson"></a> [GetKeyWellKnownJwksJson](#keyapis-jwks-v1-GetKeyWellKnownJwksJson) | Метод получения публичных ключей. Возвращает три последних публичных ключа. Используется партнёрами, с помощью публичного ключа проверяется подпись в JWT, выпущенных платформой Ключ. Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695865. Не требует авторизации | [keyapis.jwks.v1.GetKeyWellKnownJwksJsonRequest](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonRequest) | [keyapis.jwks.v1.GetKeyWellKnownJwksJsonResponse](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse) |

 <!-- end services -->


<a name="keyapis-jwks-v1-DeleteKeyRequest"></a>


### [DeleteKeyRequest](#keyapis-jwks-v1-DeleteKeyRequest)
 Запрос удаления публичного ключа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-DeleteKeyRequest-id"></a> [id](#keyapis-jwks-v1-DeleteKeyRequest-id) | Идентификатор ключа, соответсвует kid. # Тип: Guid |    [string](#scalar-types) | REQUIRED|






<a name="keyapis-jwks-v1-DeleteKeyResponse"></a>


### [DeleteKeyResponse](#keyapis-jwks-v1-DeleteKeyResponse)
 Ответ на запрос удаления публичного ключа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-DeleteKeyResponse-error"></a> [error](#keyapis-jwks-v1-DeleteKeyResponse-error) | Ошибка |  optional  [keyapis.jwks.v1.DeleteKeyResponse.Error](#keyapis-jwks-v1-DeleteKeyResponse-Error) | <nil>|






<a name="keyapis-jwks-v1-DeleteKeyResponse-Error"></a>


### [DeleteKeyResponse.Error](#keyapis-jwks-v1-DeleteKeyResponse-Error)
 Ошибка запроса удаления публичного ключа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-DeleteKeyResponse-Error-validation"></a> [validation](#keyapis-jwks-v1-DeleteKeyResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.jwks.v1.ValidationError](#keyapis-jwks-v1-ValidationError) | <nil>|






<a name="keyapis-jwks-v1-GetKeyWellKnownJwksJsonRequest"></a>


### [GetKeyWellKnownJwksJsonRequest](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonRequest)
 Запрос на получение публичных ключей






<a name="keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse"></a>


### [GetKeyWellKnownJwksJsonResponse](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse)
 Ответ на запрос на получение публичных ключей


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse-data"></a> [data](#keyapis-jwks-v1-GetKeyWellKnownJwksJsonResponse-data) | Список ключей |  repeated  [keyapis.jwks.v1.KeyInfo.PublicKey](#keyapis-jwks-v1-KeyInfo-PublicKey) | <nil>|






<a name="keyapis-jwks-v1-KeyInfo"></a>


### [KeyInfo](#keyapis-jwks-v1-KeyInfo)
 Ключ.
# Описание модели


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-KeyInfo-id"></a> [id](#keyapis-jwks-v1-KeyInfo-id) | Идентификатор ключа, соответсвует kid. # Тип: Guid |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-public_key"></a> [public_key](#keyapis-jwks-v1-KeyInfo-public_key) | Публичный ключ |    [keyapis.jwks.v1.KeyInfo.PublicKey](#keyapis-jwks-v1-KeyInfo-PublicKey) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-created_at"></a> [created_at](#keyapis-jwks-v1-KeyInfo-created_at) | Дата создания. # Тип: DateTime |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | OUTPUT_ONLY|






<a name="keyapis-jwks-v1-KeyInfo-PublicKey"></a>


### [KeyInfo.PublicKey](#keyapis-jwks-v1-KeyInfo-PublicKey)
 Публичный ключ


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-use"></a> [use](#keyapis-jwks-v1-KeyInfo-PublicKey-use) | Вид использования. # Диапазон: 2..32 |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-kty"></a> [kty](#keyapis-jwks-v1-KeyInfo-PublicKey-kty) | Тип ключа. # Диапазон: 2..32 |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-kid"></a> [kid](#keyapis-jwks-v1-KeyInfo-PublicKey-kid) | Идентификатор. # Тип: Guid |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-alg"></a> [alg](#keyapis-jwks-v1-KeyInfo-PublicKey-alg) | Алгоритм шифрования. # Диапазон: 2..32 |    [string](#scalar-types) | <nil>|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-n"></a> [n](#keyapis-jwks-v1-KeyInfo-PublicKey-n) | Параметр Modulus |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-e"></a> [e](#keyapis-jwks-v1-KeyInfo-PublicKey-e) | Параметр Exponent |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-KeyInfo-PublicKey-x5c"></a> [x5c](#keyapis-jwks-v1-KeyInfo-PublicKey-x5c) | Цепочка сертификатов X.509. # Диапазон: 0..100 |  repeated  [string](#scalar-types) | <nil>|






<a name="keyapis-jwks-v1-KeyInfo-SavingError"></a>


### [KeyInfo.SavingError](#keyapis-jwks-v1-KeyInfo-SavingError)
 Ошибка сохранения.
Эти проверки выполняются при работе с базой данных и сторонними сервисами


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-KeyInfo-SavingError-key_already_exists"></a> [key_already_exists](#keyapis-jwks-v1-KeyInfo-SavingError-key_already_exists) | Ключ с таким идентификатором уже существует |  optional  [keyapis.jwks.v1.KeyInfo.SavingError.KeyAlreadyExists](#keyapis-jwks-v1-KeyInfo-SavingError-KeyAlreadyExists) | <nil>|






<a name="keyapis-jwks-v1-KeyInfo-SavingError-KeyAlreadyExists"></a>


### [KeyInfo.SavingError.KeyAlreadyExists](#keyapis-jwks-v1-KeyInfo-SavingError-KeyAlreadyExists)
 Ключ с таким идентификатором уже существует.
Причины:
- В базе хранится запись с переданнм kid






<a name="keyapis-jwks-v1-PostKeyRequest"></a>


### [PostKeyRequest](#keyapis-jwks-v1-PostKeyRequest)
 Запрос на сохранение публичного ключа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-PostKeyRequest-data"></a> [data](#keyapis-jwks-v1-PostKeyRequest-data) | Ключ |    [keyapis.jwks.v1.KeyInfo.PublicKey](#keyapis-jwks-v1-KeyInfo-PublicKey) | REQUIRED|






<a name="keyapis-jwks-v1-PostKeyResponse"></a>


### [PostKeyResponse](#keyapis-jwks-v1-PostKeyResponse)
 Ответ на запрос на сохранение публичного ключа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-PostKeyResponse-error"></a> [error](#keyapis-jwks-v1-PostKeyResponse-error) | Ошибка |  optional  [keyapis.jwks.v1.PostKeyResponse.Error](#keyapis-jwks-v1-PostKeyResponse-Error) | <nil>|






<a name="keyapis-jwks-v1-PostKeyResponse-Error"></a>


### [PostKeyResponse.Error](#keyapis-jwks-v1-PostKeyResponse-Error)
 Ошибка


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-PostKeyResponse-Error-validation"></a> [validation](#keyapis-jwks-v1-PostKeyResponse-Error-validation) | Ошибки валидации |  optional  [keyapis.jwks.v1.ValidationError](#keyapis-jwks-v1-ValidationError) | <nil>|
| <a id="keyapis-jwks-v1-PostKeyResponse-Error-saving"></a> [saving](#keyapis-jwks-v1-PostKeyResponse-Error-saving) | Ошибка сохранения |  optional  [keyapis.jwks.v1.KeyInfo.SavingError](#keyapis-jwks-v1-KeyInfo-SavingError) | <nil>|






<a name="keyapis-jwks-v1-ValidationError"></a>


### [ValidationError](#keyapis-jwks-v1-ValidationError)
 Ошибки валидации.
Эти проверки выполняются до обращения в базу данных


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-jwks-v1-ValidationError-path"></a> [path](#keyapis-jwks-v1-ValidationError-path) | Путь к полю в формате наименования прото |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-jwks-v1-ValidationError-message"></a> [message](#keyapis-jwks-v1-ValidationError-message) | Валидационное сообщение |    [string](#scalar-types) | REQUIRED|





 <!-- end messages -->

 <!-- end enums -->

 <!-- end HasExtensions -->



## Скалярные типы значений
<a id="scalar-types"></a>

| .proto Type | Примечание | Python | Go | Ruby | C# | C++ | Java | PHP |
| ----------- | ---------- | ------ | -- | ---- | -- | --- | ---- | --- |
| [double](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | float | float64 | Float | double | double | double | float |
| [float](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | float | float32 | Float | float | float | float | float |
| [int32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| [int64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| [uint32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. | int/long | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| [uint64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. | int/long | uint64 | Bignum or Fixnum (as required) | ulong | uint64 | long | integer/string |
| [sint32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| [sint64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| [fixed32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | int | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| [fixed64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | int/long | uint64 | Bignum | ulong | uint64 | long | integer/string |
| [sfixed32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always four bytes. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| [sfixed64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always eight bytes. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| [bool](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | boolean | bool | TrueClass/FalseClass | bool | bool | boolean | boolean |
| [string](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | A string must always contain UTF-8 encoded or 7-bit ASCII text. | str/unicode | string | String (UTF-8) | string | string | String | string |
| [bytes](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | May contain any arbitrary sequence of bytes. | str | []byte | String (ASCII-8BIT) | ByteString | string | ByteString | string |

