{
  "files": [
    {
      "name": "keyapis/rfidregistry/v1/keyapis_rfidregistry_record_v1.proto",
      "description": "Сервис реализует функционал регистрации в системе RFID-ключей.\nТолько зарегистрированные RFID-ключи доступны для активации пользователям",
      "package": "keyapis.rfidregistry.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": true,
      "enums": [
        {
          "name": "EncryptionType",
          "longName": "Record.EncryptionType",
          "fullName": "keyapis.rfidregistry.v1.Record.EncryptionType",
          "description": "Справочник типов шифрования ключа.\n# Тип: byte",
          "values": [
            {
              "name": "ENCRYPTION_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "SL0",
              "number": "1",
              "description": "Без шифрования"
            },
            {
              "name": "SL1",
              "number": "2",
              "description": "С шифрованием, копируемый"
            },
            {
              "name": "SL3",
              "number": "3",
              "description": "С шифрованием, не копируемый"
            }
          ]
        },
        {
          "name": "IdentificationMethodType",
          "longName": "Record.IdentificationMethodType",
          "fullName": "keyapis.rfidregistry.v1.Record.IdentificationMethodType",
          "description": "Справочник методов идентификации.\n# Тип: byte",
          "values": [
            {
              "name": "IDENTIFICATION_METHOD_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "MIFARE",
              "number": "1",
              "description": "Значение Mifare"
            },
            {
              "name": "BLE",
              "number": "2",
              "description": "Значение Bluetooth low energy"
            },
            {
              "name": "UHF",
              "number": "3",
              "description": "Значение Ultra high frequency"
            },
            {
              "name": "EM_MARINE",
              "number": "4",
              "description": "Значение em-marine"
            }
          ]
        },
        {
          "name": "RfidType",
          "longName": "Record.RfidType",
          "fullName": "keyapis.rfidregistry.v1.Record.RfidType",
          "description": "Справочник типов ключей.\n# Тип: byte",
          "values": [
            {
              "name": "RFID_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "FOB",
              "number": "1",
              "description": "Брелок"
            },
            {
              "name": "CARD",
              "number": "2",
              "description": "Карта"
            },
            {
              "name": "BAND",
              "number": "3",
              "description": "Браслет"
            },
            {
              "name": "STICKER",
              "number": "4",
              "description": "Стикер"
            },
            {
              "name": "ACTIVE_TAG",
              "number": "5",
              "description": "Активная метка"
            }
          ]
        },
        {
          "name": "StatusType",
          "longName": "Record.StatusType",
          "fullName": "keyapis.rfidregistry.v1.Record.StatusType",
          "description": "Справочник типов статусов ключа.\n# Тип: byte",
          "values": [
            {
              "name": "STATUS_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "NEW",
              "number": "1",
              "description": "Новый"
            },
            {
              "name": "SHIPPED",
              "number": "2",
              "description": "Отгружен"
            },
            {
              "name": "DEFECT",
              "number": "3",
              "description": "Брак"
            },
            {
              "name": "IN_USE",
              "number": "4",
              "description": "Использован"
            }
          ]
        },
        {
          "name": "DirectionType",
          "longName": "RecordPaging.DirectionType",
          "fullName": "keyapis.rfidregistry.v1.RecordPaging.DirectionType",
          "description": "Справочник типов направлений сортировки.\n# Тип: byte",
          "values": [
            {
              "name": "DIRECTION_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "DESC",
              "number": "1",
              "description": "От большего к меньшему"
            },
            {
              "name": "ASC",
              "number": "2",
              "description": "От меньшего к большему"
            }
          ]
        },
        {
          "name": "OrderByType",
          "longName": "RecordPaging.OrderByType",
          "fullName": "keyapis.rfidregistry.v1.RecordPaging.OrderByType",
          "description": "Справочник типов значений сортировки.\n# Тип: byte",
          "values": [
            {
              "name": "ORDER_BY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "NEW_AT",
              "number": "1",
              "description": "По дате перевода в статус new (дате создания)"
            },
            {
              "name": "CHANGED_AT",
              "number": "2",
              "description": "По времени изменения"
            },
            {
              "name": "ORDER_AT",
              "number": "3",
              "description": "По времени заказа"
            },
            {
              "name": "ORDER_NUMBER",
              "number": "4",
              "description": "По номеру заказа"
            },
            {
              "name": "RANK",
              "number": "5",
              "description": "По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию"
            }
          ]
        }
      ],
      "extensions": [],
      "messages": [
        {
          "name": "DeleteRecordRequest",
          "longName": "DeleteRecordRequest",
          "fullName": "keyapis.rfidregistry.v1.DeleteRecordRequest",
          "description": "Запрос удаления записи из реестра.\nМожно удалить только свои записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "id",
              "description": "Идентификатор записи.\n# Тип: Guid",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "DeleteRecordResponse",
          "longName": "DeleteRecordResponse",
          "fullName": "keyapis.rfidregistry.v1.DeleteRecordResponse",
          "description": "Ответ на запрос удаления записи из реестра",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "DeleteRecordResponse.Error",
              "fullType": "keyapis.rfidregistry.v1.DeleteRecordResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "Error",
          "longName": "DeleteRecordResponse.Error",
          "fullName": "keyapis.rfidregistry.v1.DeleteRecordResponse.Error",
          "description": "Ошибка удаления записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.rfidregistry.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetRecordCountRequest",
          "longName": "GetRecordCountRequest",
          "fullName": "keyapis.rfidregistry.v1.GetRecordCountRequest",
          "description": "Запрос получения количества записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "RecordFilter",
              "longType": "RecordFilter",
              "fullType": "keyapis.rfidregistry.v1.RecordFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetRecordCountResponse",
          "longName": "GetRecordCountResponse",
          "fullName": "keyapis.rfidregistry.v1.GetRecordCountResponse",
          "description": "Ответ на запрос получения количества записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Всего записей",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetRecordCountResponse.Error",
              "fullType": "keyapis.rfidregistry.v1.GetRecordCountResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetRecordCountResponse.Error",
          "fullName": "keyapis.rfidregistry.v1.GetRecordCountResponse.Error",
          "description": "Ошибка запроса получения количества записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка фильтрации записей",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.rfidregistry.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetRecordListRequest",
          "longName": "GetRecordListRequest",
          "fullName": "keyapis.rfidregistry.v1.GetRecordListRequest",
          "description": "Запрос получения списка",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "RecordFilter",
              "longType": "RecordFilter",
              "fullType": "keyapis.rfidregistry.v1.RecordFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Пагинация",
              "label": "",
              "type": "RecordPaging",
              "longType": "RecordPaging",
              "fullType": "keyapis.rfidregistry.v1.RecordPaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetRecordListResponse",
          "longName": "GetRecordListResponse",
          "fullName": "keyapis.rfidregistry.v1.GetRecordListResponse",
          "description": "Ответ на запрос получения списка записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Запись",
              "label": "",
              "type": "Record",
              "longType": "Record",
              "fullType": "keyapis.rfidregistry.v1.Record",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetRecordListResponse.Error",
              "fullType": "keyapis.rfidregistry.v1.GetRecordListResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetRecordListResponse.Error",
          "fullName": "keyapis.rfidregistry.v1.GetRecordListResponse.Error",
          "description": "Ошибка запроса получения списка записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка фильтрации записей",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.rfidregistry.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetRecordRequest",
          "longName": "GetRecordRequest",
          "fullName": "keyapis.rfidregistry.v1.GetRecordRequest",
          "description": "Запрос получения записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "id",
              "description": "Идентификатор.\n# Тип: Guid",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "GetRecordResponse",
          "longName": "GetRecordResponse",
          "fullName": "keyapis.rfidregistry.v1.GetRecordResponse",
          "description": "Ответ на запрос получения записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Запись",
              "label": "",
              "type": "Record",
              "longType": "Record",
              "fullType": "keyapis.rfidregistry.v1.Record",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "PostRecordRequest",
          "longName": "PostRecordRequest",
          "fullName": "keyapis.rfidregistry.v1.PostRecordRequest",
          "description": "Запрос сохранения записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Запись",
              "label": "",
              "type": "Record",
              "longType": "Record",
              "fullType": "keyapis.rfidregistry.v1.Record",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "PostRecordResponse",
          "longName": "PostRecordResponse",
          "fullName": "keyapis.rfidregistry.v1.PostRecordResponse",
          "description": "Ответ на запрос сохранения записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Запись",
              "label": "",
              "type": "Record",
              "longType": "Record",
              "fullType": "keyapis.rfidregistry.v1.Record",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "PostRecordResponse.Error",
              "fullType": "keyapis.rfidregistry.v1.PostRecordResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "PostRecordResponse.Error",
          "fullName": "keyapis.rfidregistry.v1.PostRecordResponse.Error",
          "description": "Ошибка запроса сохранения записи",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.rfidregistry.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "saving",
              "description": "Ошибка сохранения записи",
              "label": "",
              "type": "SavingError",
              "longType": "Record.SavingError",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Record",
          "longName": "Record",
          "fullName": "keyapis.rfidregistry.v1.Record",
          "description": "Запись.\n# Описание модели",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "id",
              "description": "Идентификатор.\nЕсли не передан создаётся сервером.\n# Тип: Guid",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "rfid_type",
              "description": "Тип ключа",
              "label": "",
              "type": "RfidType",
              "longType": "Record.RfidType",
              "fullType": "keyapis.rfidregistry.v1.Record.RfidType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "encryption_type",
              "description": "Тип шифрования ключа.\nМаксимально поддерживаемый ключом тип шифрования",
              "label": "",
              "type": "EncryptionType",
              "longType": "Record.EncryptionType",
              "fullType": "keyapis.rfidregistry.v1.Record.EncryptionType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "uid",
              "description": "Номер ключа.\nУказывается при создании.\n# Диапазон: 1..14",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            },
            {
              "name": "status_type",
              "description": "Тип статуса ключа",
              "label": "",
              "type": "StatusType",
              "longType": "Record.StatusType",
              "fullType": "keyapis.rfidregistry.v1.Record.StatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 5
            },
            {
              "name": "new_at",
              "description": "Дата перевода в статус \"Новый\".\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 6
            },
            {
              "name": "shipped_at",
              "description": "Дата перевода в статус \"Отгружен\".\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 7
            },
            {
              "name": "defect_at",
              "description": "Дата перевода в статус \"Брак\".\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 8
            },
            {
              "name": "in_use_at",
              "description": "Дата перевода в статус \"Использован\".\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 9
            },
            {
              "name": "in_use_rfid_id",
              "description": "Идентификатор привязанного ключа.\nЗаполняется при переводе в статус \"Использован\".\n# Диапазон: 0..16",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 10
            },
            {
              "name": "data_cells",
              "description": "Содержимое ячеек ключа",
              "label": "repeated",
              "type": "DataCell",
              "longType": "Record.DataCell",
              "fullType": "keyapis.rfidregistry.v1.Record.DataCell",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "resource_owner_id",
              "description": "Идентификатор владельца.\nЗаполняется сервером.\n# Диапазон: 0..255",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 12
            },
            {
              "name": "package_info_box",
              "description": "Номер коробки.\n# Диапазон: 1..2147483647",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            },
            {
              "name": "package_info_place",
              "description": "Номер места в коробке.\n# Диапазон: 1..2147483647",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 14
            },
            {
              "name": "changed_at",
              "description": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 15
            },
            {
              "name": "aes_key_configurations",
              "description": "Конфигурации шифрования ключа",
              "label": "repeated",
              "type": "AesKeyConfiguration",
              "longType": "Record.AesKeyConfiguration",
              "fullType": "keyapis.rfidregistry.v1.Record.AesKeyConfiguration",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 16
            },
            {
              "name": "trailers",
              "description": "Контрольные суммы.\nНужны для ключей SL1 и SL3",
              "label": "repeated",
              "type": "Trailer",
              "longType": "Record.Trailer",
              "fullType": "keyapis.rfidregistry.v1.Record.Trailer",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 17
            },
            {
              "name": "order_number",
              "description": "Номер заказа.\n# Диапазон: 0..256",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 18
            },
            {
              "name": "order_at",
              "description": "Дата заказа.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 19
            },
            {
              "name": "in_use_resource_owner_id",
              "description": "Владелец привязанного ключа.\nЗаполняется сервером, значение берётся из токена при использовании ключа.\n# Диапазон: 0..255",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 20
            },
            {
              "name": "is_deleted",
              "description": "Признак, удалена ли запись",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 21
            },
            {
              "name": "deleted_at",
              "description": "Дата удаления.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 22
            },
            {
              "name": "vendor_name",
              "description": "Производитель.\n# Диапазон: 3..100",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 23
            },
            {
              "name": "identification_method_type",
              "description": "Метод идентификации",
              "label": "",
              "type": "IdentificationMethodType",
              "longType": "Record.IdentificationMethodType",
              "fullType": "keyapis.rfidregistry.v1.Record.IdentificationMethodType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 24
            }
          ]
        },
        {
          "name": "AesKeyConfiguration",
          "longName": "Record.AesKeyConfiguration",
          "fullName": "keyapis.rfidregistry.v1.Record.AesKeyConfiguration",
          "description": "Конфигурация шифрования ключа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "address",
              "description": "Адрес.\n# Паттерн: /^[A-Za-z0-9=]+$/",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "data",
              "description": "Данные.\n# Паттерн: /^[A-Za-z0-9=]+$/",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            }
          ]
        },
        {
          "name": "DataCell",
          "longName": "Record.DataCell",
          "fullName": "keyapis.rfidregistry.v1.Record.DataCell",
          "description": "Содержимое ячейки ключа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "section",
              "description": "Сектор.\n# Диапазон: 0..127",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "block",
              "description": "Блок.\n# Диапазон: 0..127",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "data",
              "description": "Данные.\n# Паттерн: /^[A-Za-z0-9=]+$/",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            }
          ]
        },
        {
          "name": "SavingError",
          "longName": "Record.SavingError",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError",
          "description": "Ошибка сохранения записи.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "status_type_restricted",
              "description": "Перевод статуса запрещён",
              "label": "",
              "type": "StatusTypeRestricted",
              "longType": "Record.SavingError.StatusTypeRestricted",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError.StatusTypeRestricted",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "uid_exist",
              "description": "Запись уже существует",
              "label": "",
              "type": "UidExist",
              "longType": "Record.SavingError.UidExist",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError.UidExist",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "owned_by_another_user",
              "description": "Вы не владелец",
              "label": "",
              "type": "OwnedByAnotherUser",
              "longType": "Record.SavingError.OwnedByAnotherUser",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError.OwnedByAnotherUser",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "already_linked",
              "description": "Ключ уже использован",
              "label": "",
              "type": "AlreadyLinked",
              "longType": "Record.SavingError.AlreadyLinked",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError.AlreadyLinked",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "conflict",
              "description": "Конфликт версий",
              "label": "",
              "type": "Conflict",
              "longType": "Record.SavingError.Conflict",
              "fullType": "keyapis.rfidregistry.v1.Record.SavingError.Conflict",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 5
            }
          ]
        },
        {
          "name": "AlreadyLinked",
          "longName": "Record.SavingError.AlreadyLinked",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError.AlreadyLinked",
          "description": "Причины:\n- Такой ключ уже привязан к другой записи",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Conflict",
          "longName": "Record.SavingError.Conflict",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError.Conflict",
          "description": "Причины:\n- В базе хранится более новая версия записи, значения changed_at отличаются",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "OwnedByAnotherUser",
          "longName": "Record.SavingError.OwnedByAnotherUser",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError.OwnedByAnotherUser",
          "description": "Причины:\n- Запись принадлежит другому пользователю",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "StatusTypeRestricted",
          "longName": "Record.SavingError.StatusTypeRestricted",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError.StatusTypeRestricted",
          "description": "Причины:\n- Недопустимый перевод статуса.\n- Не переданы обязательные поля https://openapi-key.deploy.rtkit.dev/keyapis_rfidregistry_v1/#таблица-обязательности-передачи-полей-в-request",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "UidExist",
          "longName": "Record.SavingError.UidExist",
          "fullName": "keyapis.rfidregistry.v1.Record.SavingError.UidExist",
          "description": "Причины:\n- Ключ уже существует",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Trailer",
          "longName": "Record.Trailer",
          "fullName": "keyapis.rfidregistry.v1.Record.Trailer",
          "description": "Контрольная сумма",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "sector",
              "description": "Сектор.\n# Диапазон: 0..15",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "key_a",
              "description": "Ключ А.\n# Диапазон: 1..256",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "key_b",
              "description": "Ключ Б.\n# Диапазон: 1..256",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "access_mask",
              "description": "Маска доступа.\n# Диапазон: 1..512",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            }
          ]
        },
        {
          "name": "RecordFilter",
          "longName": "RecordFilter",
          "fullName": "keyapis.rfidregistry.v1.RecordFilter",
          "description": "Фильтр записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "rfid_types",
              "description": "По типам ключей",
              "label": "repeated",
              "type": "RfidType",
              "longType": "Record.RfidType",
              "fullType": "keyapis.rfidregistry.v1.Record.RfidType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "encryption_types",
              "description": "По типам шифрования",
              "label": "repeated",
              "type": "EncryptionType",
              "longType": "Record.EncryptionType",
              "fullType": "keyapis.rfidregistry.v1.Record.EncryptionType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "uids",
              "description": "По номерам ключей",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "status_types",
              "description": "По типам статуса",
              "label": "repeated",
              "type": "StatusType",
              "longType": "Record.StatusType",
              "fullType": "keyapis.rfidregistry.v1.Record.StatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "in_use_rfid_ids",
              "description": "По номерам привязанных ключей",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "resource_owner_ids",
              "description": "По владельцам",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "order_numbers",
              "description": "По номерам заказа",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "in_use_resource_owner_ids",
              "description": "По владельцам привязанных ключей",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "is_deleted",
              "description": "По удалённым записям.\nПо умолчанию: false",
              "label": "",
              "type": "BoolValue",
              "longType": "google.protobuf.BoolValue",
              "fullType": "google.protobuf.BoolValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "text",
              "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Номер заказа;\n# - Производитель",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 10
            },
            {
              "name": "start_shipped_at",
              "description": "Дата отгрузки от",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "end_shipped_at",
              "description": "Дата отгрузки до",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            },
            {
              "name": "package_info_boxes",
              "description": "По номеру коробки",
              "label": "repeated",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            },
            {
              "name": "package_info_places",
              "description": "По номеру места в коробке",
              "label": "repeated",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 14
            },
            {
              "name": "identification_method_types",
              "description": "По методу идентификации",
              "label": "repeated",
              "type": "IdentificationMethodType",
              "longType": "Record.IdentificationMethodType",
              "fullType": "keyapis.rfidregistry.v1.Record.IdentificationMethodType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 15
            }
          ]
        },
        {
          "name": "RecordPaging",
          "longName": "RecordPaging",
          "fullName": "keyapis.rfidregistry.v1.RecordPaging",
          "description": "Пагинация записей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "order_by_type",
              "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: NEW_AT",
              "label": "",
              "type": "OrderByType",
              "longType": "RecordPaging.OrderByType",
              "fullType": "keyapis.rfidregistry.v1.RecordPaging.OrderByType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "direction_type",
              "description": "Тип направления сортировки.\n# По умолчанию: DESC",
              "label": "",
              "type": "DirectionType",
              "longType": "RecordPaging.DirectionType",
              "fullType": "keyapis.rfidregistry.v1.RecordPaging.DirectionType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "limit",
              "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "offset",
              "description": "Сдвиг.\n# Диапазон: 0..2147483647",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "ValidationError",
          "longName": "ValidationError",
          "fullName": "keyapis.rfidregistry.v1.ValidationError",
          "description": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "path",
              "description": "Путь к полю в формате наименования прото",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "message",
              "description": "Валидационное сообщение",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            }
          ]
        }
      ],
      "services": [
        {
          "name": "RecordService",
          "longName": "RecordService",
          "fullName": "keyapis.rfidregistry.v1.RecordService",
          "description": "Сервис реестра ключей",
          "methods": [
            {
              "name": "PostRecord",
              "description": "Метод сохранения записи.\nНельзя отвязать ключ, который привязал кто-то другой.\nПоддерживает создание и обновление.\nМетод доступен для: admin, service, device_admin",
              "requestType": "PostRecordRequest",
              "requestLongType": "PostRecordRequest",
              "requestFullType": "keyapis.rfidregistry.v1.PostRecordRequest",
              "requestStreaming": false,
              "responseType": "PostRecordResponse",
              "responseLongType": "PostRecordResponse",
              "responseFullType": "keyapis.rfidregistry.v1.PostRecordResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "POST",
                      "pattern": "/rfidregistry/api/v1/record",
                      "body": "*"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetRecord",
              "description": "Метод получения записи.\nМетод доступен для: admin, service, device_admin",
              "requestType": "GetRecordRequest",
              "requestLongType": "GetRecordRequest",
              "requestFullType": "keyapis.rfidregistry.v1.GetRecordRequest",
              "requestStreaming": false,
              "responseType": "GetRecordResponse",
              "responseLongType": "GetRecordResponse",
              "responseFullType": "keyapis.rfidregistry.v1.GetRecordResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/rfidregistry/api/v1/record/{id}"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetRecordList",
              "description": "Метод получения списка записей.\nМетод доступен для: admin, service, device_admin",
              "requestType": "GetRecordListRequest",
              "requestLongType": "GetRecordListRequest",
              "requestFullType": "keyapis.rfidregistry.v1.GetRecordListRequest",
              "requestStreaming": false,
              "responseType": "GetRecordListResponse",
              "responseLongType": "GetRecordListResponse",
              "responseFullType": "keyapis.rfidregistry.v1.GetRecordListResponse",
              "responseStreaming": true,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/rfidregistry/api/v1/record/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetRecordCount",
              "description": "Метод получения количества записей.\nМетод доступен для: admin, service, device_admin",
              "requestType": "GetRecordCountRequest",
              "requestLongType": "GetRecordCountRequest",
              "requestFullType": "keyapis.rfidregistry.v1.GetRecordCountRequest",
              "requestStreaming": false,
              "responseType": "GetRecordCountResponse",
              "responseLongType": "GetRecordCountResponse",
              "responseFullType": "keyapis.rfidregistry.v1.GetRecordCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/rfidregistry/api/v1/record/count"
                    }
                  ]
                }
              }
            },
            {
              "name": "DeleteRecord",
              "description": "Метод удаления записи.\nМожно удалять только свои записи.\nНельзя удалить ключ, если его использует кто-то другой.\nМетод доступен для: admin, service, device_admin",
              "requestType": "DeleteRecordRequest",
              "requestLongType": "DeleteRecordRequest",
              "requestFullType": "keyapis.rfidregistry.v1.DeleteRecordRequest",
              "requestStreaming": false,
              "responseType": "DeleteRecordResponse",
              "responseLongType": "DeleteRecordResponse",
              "responseFullType": "keyapis.rfidregistry.v1.DeleteRecordResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "DELETE",
                      "pattern": "/rfidregistry/api/v1/record/{id}"
                    }
                  ]
                }
              }
            }
          ]
        }
      ],
      "syntax": "proto3"
    }
  ],
  "scalarValueTypes": [
    {
      "protoType": "double",
      "notes": "",
      "cppType": "double",
      "csType": "double",
      "goType": "float64",
      "javaType": "double",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "float",
      "notes": "",
      "cppType": "float",
      "csType": "float",
      "goType": "float32",
      "javaType": "float",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "int32",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "int64",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "uint32",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "uint64",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint32",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint64",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "fixed32",
      "notes": "Always four bytes. More efficient than uint32 if values are often greater than 2^28.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "fixed64",
      "notes": "Always eight bytes. More efficient than uint64 if values are often greater than 2^56.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "sfixed32",
      "notes": "Always four bytes.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sfixed64",
      "notes": "Always eight bytes.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "bool",
      "notes": "",
      "cppType": "bool",
      "csType": "bool",
      "goType": "bool",
      "javaType": "boolean",
      "phpType": "boolean",
      "pythonType": "boolean",
      "rubyType": "TrueClass/FalseClass"
    },
    {
      "protoType": "string",
      "notes": "A string must always contain UTF-8 encoded or 7-bit ASCII text.",
      "cppType": "string",
      "csType": "string",
      "goType": "string",
      "javaType": "String",
      "phpType": "string",
      "pythonType": "str/unicode",
      "rubyType": "String (UTF-8)"
    },
    {
      "protoType": "bytes",
      "notes": "May contain any arbitrary sequence of bytes.",
      "cppType": "string",
      "csType": "ByteString",
      "goType": "[]byte",
      "javaType": "ByteString",
      "phpType": "string",
      "pythonType": "str",
      "rubyType": "String (ASCII-8BIT)"
    }
  ]
}