{
  "files": [
    {
      "name": "keyapis/multiapp/v1/keyapis_multiapp_app_v1.proto",
      "description": "Сервис реализует функционал управления приложениями",
      "package": "keyapis.multiapp.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": true,
      "enums": [
        {
          "name": "GrantType",
          "longName": "App.GrantType",
          "fullName": "keyapis.multiapp.v1.App.GrantType",
          "description": "Справочник разрешений",
          "values": [
            {
              "name": "GRANT_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "GET_ACCESS_TOKEN",
              "number": "1",
              "description": "Разрешение на получение авторизационного токена посредством метода GET /multiapp/api/v1/partner/token"
            },
            {
              "name": "GET_ID_TOKEN",
              "number": "2",
              "description": "Разрешение на получение идентификационного доступа посредством метода GET /multiapp/api/v1/partner/token"
            },
            {
              "name": "POST_NOTIF_NO_ASSIGN_CHECK",
              "number": "3",
              "description": "Разрешение на отправку уведомлений без проверки назначений приложения методом POST /multiapp/api/v1/notification"
            }
          ]
        },
        {
          "name": "Type",
          "longName": "App.Link.Type",
          "fullName": "keyapis.multiapp.v1.App.Link.Type",
          "description": "Справочник типов ссылок.\n# Тип: byte",
          "values": [
            {
              "name": "TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "INTERNAL_APP",
              "number": "1",
              "description": "Ссылка для перехода на раздел текущего приложения"
            },
            {
              "name": "EXTERNAL_APP",
              "number": "2",
              "description": "Ссылка для перехода на стороннее приложение"
            },
            {
              "name": "WEB_VIEW",
              "number": "3",
              "description": "Ссылка для перехода на веб-вью внутренних (своих) приложений.\nВ окне отсутствует адресаная строка.\nДля iOS используется WKWebView, для Android используется WebView"
            },
            {
              "name": "WEB_BROWSER",
              "number": "4",
              "description": "Ссылка для перехода на веб-браузер"
            },
            {
              "name": "EXTERNAL_WEB_VIEW",
              "number": "5",
              "description": "Ссылка для перехода на веб-вью внешних (партнёрских) приложений.\nВ окне присутствует адресаная строка.\nДля iOS используется SFSafariViewController, для Android используется ChromeCustomTabs"
            }
          ]
        },
        {
          "name": "AllowedTokenType",
          "longName": "App.Permissions.AllowedTokenType",
          "fullName": "keyapis.multiapp.v1.App.Permissions.AllowedTokenType",
          "description": "Справочник разрешенных типов токена",
          "values": [
            {
              "name": "ALLOWED_TOKEN_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "ID",
              "number": "1",
              "description": "Идентификационный"
            },
            {
              "name": "ACCESS",
              "number": "2",
              "description": "Авторизационный"
            }
          ]
        },
        {
          "name": "PlatformType",
          "longName": "App.PlatformType",
          "fullName": "keyapis.multiapp.v1.App.PlatformType",
          "description": "Справочник платформ.\n# Тип: byte",
          "values": [
            {
              "name": "PLATFORM_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "IOS",
              "number": "1",
              "description": "Платформа iOS.\nПриложение размещается в App Store"
            },
            {
              "name": "ANDROID",
              "number": "2",
              "description": "Платформа Android.\nПриложение размещается в Google Play, App Gallery или прочих сторах"
            },
            {
              "name": "WEB",
              "number": "3",
              "description": "Платформа Web.\nПриложение размещается по интернет адресу"
            }
          ]
        },
        {
          "name": "StatusType",
          "longName": "App.StatusType",
          "fullName": "keyapis.multiapp.v1.App.StatusType",
          "description": "Справочник статусов приложений.\n# Тип: byte",
          "values": [
            {
              "name": "STATUS_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "BLOCKED",
              "number": "1",
              "description": "Заблокирован"
            },
            {
              "name": "ACTIVE",
              "number": "2",
              "description": "Активен"
            },
            {
              "name": "DELETED",
              "number": "3",
              "description": "Удален"
            }
          ]
        },
        {
          "name": "Type",
          "longName": "App.Type",
          "fullName": "keyapis.multiapp.v1.App.Type",
          "description": "Справочник типов приложений.\n# Тип: byte",
          "values": [
            {
              "name": "TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "STANDARD",
              "number": "1",
              "description": "Стандартное приложение"
            }
          ]
        },
        {
          "name": "DirectionType",
          "longName": "AppLitePaging.DirectionType",
          "fullName": "keyapis.multiapp.v1.AppLitePaging.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": "AppLitePaging.OrderByType",
          "fullName": "keyapis.multiapp.v1.AppLitePaging.OrderByType",
          "description": "Справочник типов значений сортировки.\n# Тип: byte",
          "values": [
            {
              "name": "ORDER_BY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "CHANGED_AT",
              "number": "1",
              "description": "Дата последнего изменения"
            },
            {
              "name": "CREATED_AT",
              "number": "2",
              "description": "Дата создания"
            }
          ]
        },
        {
          "name": "DirectionType",
          "longName": "AppPaging.DirectionType",
          "fullName": "keyapis.multiapp.v1.AppPaging.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": "AppPaging.OrderByType",
          "fullName": "keyapis.multiapp.v1.AppPaging.OrderByType",
          "description": "Справочник типов значений сортировки.\n# Тип: byte",
          "values": [
            {
              "name": "ORDER_BY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "CHANGED_AT",
              "number": "1",
              "description": "Дата последнего изменения"
            },
            {
              "name": "CREATED_AT",
              "number": "2",
              "description": "Дата создания"
            },
            {
              "name": "RANK",
              "number": "3",
              "description": "По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию"
            }
          ]
        }
      ],
      "extensions": [],
      "messages": [
        {
          "name": "App",
          "longName": "App",
          "fullName": "keyapis.multiapp.v1.App",
          "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": "partner_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": 2
            },
            {
              "name": "type",
              "description": "Тип приложения",
              "label": "",
              "type": "Type",
              "longType": "App.Type",
              "fullType": "keyapis.multiapp.v1.App.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "title",
              "description": "Системное наименование.\nНе отображается пользователям.\n# Диапазон: 3..256",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            },
            {
              "name": "header",
              "description": "Заголовок.\n# Диапазон: 3..30",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "subtitle",
              "description": "Подзаголовок.\n# Диапазон: 3..60",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "background_color",
              "description": "Цвет заднего плана(подложки).\nВсе цвета должны быть в формате hex #RRGGBBAA.\nПример: #7e00c380.\n# Диапазон: 9..9.\n# Паттерн: /^#[0-9a-fA-F]{8}$/",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "status_type",
              "description": "Статус приложения",
              "label": "",
              "type": "StatusType",
              "longType": "App.StatusType",
              "fullType": "keyapis.multiapp.v1.App.StatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 8
            },
            {
              "name": "links",
              "description": "Ссылки для переходов.\n# Диапазон: 0..100",
              "label": "repeated",
              "type": "Link",
              "longType": "App.Link",
              "fullType": "keyapis.multiapp.v1.App.Link",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "user_tags",
              "description": "Список тегов пользователей.\nОбязательное.\nОписывает кто может видеть приложение.\nТэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.\n# Диапазон: 1..100.\n# Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 10
            },
            {
              "name": "app_tags",
              "description": "Список тегов приложений.\nОбязательное.\nОписывает какие клиенты могут видеть приложение.\nТэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.\n# Диапазон: 1..20.\n# Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 11
            },
            {
              "name": "created_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": 12
            },
            {
              "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": "",
              "number": 13
            },
            {
              "name": "permissions",
              "description": "Разрешения",
              "label": "",
              "type": "Permissions",
              "longType": "App.Permissions",
              "fullType": "keyapis.multiapp.v1.App.Permissions",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "deprecated": true
              },
              "number": 14
            },
            {
              "name": "grant_types",
              "description": "Список разрешений",
              "label": "repeated",
              "type": "GrantType",
              "longType": "App.GrantType",
              "fullType": "keyapis.multiapp.v1.App.GrantType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 15
            }
          ]
        },
        {
          "name": "Link",
          "longName": "App.Link",
          "fullName": "keyapis.multiapp.v1.App.Link",
          "description": "Ссылка",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "platform_type",
              "description": "Тип платформы.\nОбязательное",
              "label": "",
              "type": "PlatformType",
              "longType": "App.PlatformType",
              "fullType": "keyapis.multiapp.v1.App.PlatformType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "type",
              "description": "Тип ссылки.\nОбязательное",
              "label": "",
              "type": "Type",
              "longType": "App.Link.Type",
              "fullType": "keyapis.multiapp.v1.App.Link.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "url",
              "description": "Значение ссылки для перехода.\nОбязательное.\n# Диапазон: 12..512",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "packages",
              "description": "Список пакетов.\nЕсли пусто попытка перехода осуществляется безусловно.\nЕсли заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке.\n# Диапазон: 0..20",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "Permissions",
          "longName": "App.Permissions",
          "fullName": "keyapis.multiapp.v1.App.Permissions",
          "description": "Разрешения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "allowed_token_types",
              "description": "Список разрешенных типов токена",
              "label": "repeated",
              "type": "AllowedTokenType",
              "longType": "App.Permissions.AllowedTokenType",
              "fullType": "keyapis.multiapp.v1.App.Permissions.AllowedTokenType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "SavingError",
          "longName": "App.SavingError",
          "fullName": "keyapis.multiapp.v1.App.SavingError",
          "description": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "conflict",
              "description": "Конфликт версий",
              "label": "",
              "type": "Conflict",
              "longType": "App.SavingError.Conflict",
              "fullType": "keyapis.multiapp.v1.App.SavingError.Conflict",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "partner_is_not_exist",
              "description": "Переданный партнер не существует",
              "label": "",
              "type": "PartnerIsNotExist",
              "longType": "App.SavingError.PartnerIsNotExist",
              "fullType": "keyapis.multiapp.v1.App.SavingError.PartnerIsNotExist",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "partner_is_deleted",
              "description": "Переданный партнер удален",
              "label": "",
              "type": "PartnerIsDeleted",
              "longType": "App.SavingError.PartnerIsDeleted",
              "fullType": "keyapis.multiapp.v1.App.SavingError.PartnerIsDeleted",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 3
            }
          ]
        },
        {
          "name": "Conflict",
          "longName": "App.SavingError.Conflict",
          "fullName": "keyapis.multiapp.v1.App.SavingError.Conflict",
          "description": "Конфликт версий.\nПричины:\n- В базе хранится другая версия строки, значения changed_at отличаются",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "PartnerIsDeleted",
          "longName": "App.SavingError.PartnerIsDeleted",
          "fullName": "keyapis.multiapp.v1.App.SavingError.PartnerIsDeleted",
          "description": "Переданный партнер удален.\nПричины:\n- В базе удален партнер с переданным partner_id",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "PartnerIsNotExist",
          "longName": "App.SavingError.PartnerIsNotExist",
          "fullName": "keyapis.multiapp.v1.App.SavingError.PartnerIsNotExist",
          "description": "Переданный партнер не существует.\nПричины:\n- В базе нет партнера с переданным partner_id",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "AppFilter",
          "longName": "AppFilter",
          "fullName": "keyapis.multiapp.v1.AppFilter",
          "description": "Фильтр приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "text",
              "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Системное наименование;\n# - Заголовок;\n# - Подзаголовок;\n# - Список тегов пользователей;\n# - Список тегов приложений",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "types",
              "description": "По типам приложений",
              "label": "repeated",
              "type": "Type",
              "longType": "App.Type",
              "fullType": "keyapis.multiapp.v1.App.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "partner_ids",
              "description": "По идентификаторам партнера.\n# Тип: Guid",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "status_types",
              "description": "По статусам приложений.\nЕсли переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)",
              "label": "repeated",
              "type": "StatusType",
              "longType": "App.StatusType",
              "fullType": "keyapis.multiapp.v1.App.StatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "user_tags",
              "description": "По пользовательским тегам.\nТэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.\n# Диапазон: 0..20.\n# Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "app_tags",
              "description": "По тегам приложений.\nТэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.\n# Диапазон: 0..20.\n# Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            }
          ]
        },
        {
          "name": "AppLite",
          "longName": "AppLite",
          "fullName": "keyapis.multiapp.v1.AppLite",
          "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": "",
              "number": 1
            },
            {
              "name": "title",
              "description": "Наименование.\nНе отображается пользователям.\n# Диапазон: 3..256",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "header",
              "description": "Заголовок.\n# Диапазон: 3..30",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "subtitle",
              "description": "Подзаголовок.\n# Диапазон: 3..60",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "background_color",
              "description": "Цвет заднего плана(подложки).\nВсе цвета должны быть в формате hex #RRGGBBAA.\nПример: #7e00c380.\n# Диапазон: 9..9.\n# Паттерн: /^#[0-9a-fA-F]{8}$/",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "status_type",
              "description": "Статус приложения",
              "label": "",
              "type": "StatusType",
              "longType": "App.StatusType",
              "fullType": "keyapis.multiapp.v1.App.StatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 6
            },
            {
              "name": "links",
              "description": "Ссылки для переходов",
              "label": "repeated",
              "type": "LinkLite",
              "longType": "AppLite.LinkLite",
              "fullType": "keyapis.multiapp.v1.AppLite.LinkLite",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            }
          ]
        },
        {
          "name": "LinkLite",
          "longName": "AppLite.LinkLite",
          "fullName": "keyapis.multiapp.v1.AppLite.LinkLite",
          "description": "Упрощённая ссылка",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "platform_type",
              "description": "Тип платформы.\nОбязательное",
              "label": "",
              "type": "PlatformType",
              "longType": "App.PlatformType",
              "fullType": "keyapis.multiapp.v1.App.PlatformType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "type",
              "description": "Тип ссылки.\nОбязательное",
              "label": "",
              "type": "Type",
              "longType": "App.Link.Type",
              "fullType": "keyapis.multiapp.v1.App.Link.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "url",
              "description": "Значение ссылки для перехода.\nОбязательное",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "packages",
              "description": "Список пакетов.\nЕсли пусто попытка перехода осуществляется безусловно.\nЕсли заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "AppLiteFilter",
          "longName": "AppLiteFilter",
          "fullName": "keyapis.multiapp.v1.AppLiteFilter",
          "description": "Упрощённый фильтр по приложениям",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "types",
              "description": "По типам приложений",
              "label": "repeated",
              "type": "Type",
              "longType": "App.Type",
              "fullType": "keyapis.multiapp.v1.App.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "user_tags",
              "description": "По тегам пользователя.\nТэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.\n# Диапазон: 1..20.\n# Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "app_lite_tag",
              "description": "Тег для приложения",
              "label": "",
              "type": "AppLiteTag",
              "longType": "AppLiteFilter.AppLiteTag",
              "fullType": "keyapis.multiapp.v1.AppLiteFilter.AppLiteTag",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            }
          ]
        },
        {
          "name": "AppLiteTag",
          "longName": "AppLiteFilter.AppLiteTag",
          "fullName": "keyapis.multiapp.v1.AppLiteFilter.AppLiteTag",
          "description": "Тег для приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "platform_type",
              "description": "Тип платформы",
              "label": "",
              "type": "PlatformType",
              "longType": "App.PlatformType",
              "fullType": "keyapis.multiapp.v1.App.PlatformType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "app_name",
              "description": "Название приложения, которое работает с данным сервисом.\nДля МП и PWA значение \"1\".\n# Паттерн: /^[0-9A-Z-]{1,19}$/",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "AppLitePaging",
          "longName": "AppLitePaging",
          "fullName": "keyapis.multiapp.v1.AppLitePaging",
          "description": "Пагинация упрощенных приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "order_by_type",
              "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CREATED_AT",
              "label": "",
              "type": "OrderByType",
              "longType": "AppLitePaging.OrderByType",
              "fullType": "keyapis.multiapp.v1.AppLitePaging.OrderByType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "direction_type",
              "description": "Тип направления сортировки.\n# По умолчанию: DESC",
              "label": "",
              "type": "DirectionType",
              "longType": "AppLitePaging.DirectionType",
              "fullType": "keyapis.multiapp.v1.AppLitePaging.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": "AppPaging",
          "longName": "AppPaging",
          "fullName": "keyapis.multiapp.v1.AppPaging",
          "description": "Пагинация приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "order_by_type",
              "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
              "label": "",
              "type": "OrderByType",
              "longType": "AppPaging.OrderByType",
              "fullType": "keyapis.multiapp.v1.AppPaging.OrderByType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "direction_type",
              "description": "Тип направления сортировки.\n# По умолчанию: DESC",
              "label": "",
              "type": "DirectionType",
              "longType": "AppPaging.DirectionType",
              "fullType": "keyapis.multiapp.v1.AppPaging.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": "DeleteAppRequest",
          "longName": "DeleteAppRequest",
          "fullName": "keyapis.multiapp.v1.DeleteAppRequest",
          "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": "DeleteAppResponse",
          "longName": "DeleteAppResponse",
          "fullName": "keyapis.multiapp.v1.DeleteAppResponse",
          "description": "Ответ на запрос удаления приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "DeleteAppResponse.Error",
              "fullType": "keyapis.multiapp.v1.DeleteAppResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "Error",
          "longName": "DeleteAppResponse.Error",
          "fullName": "keyapis.multiapp.v1.DeleteAppResponse.Error",
          "description": "Ошибка запроса получения упрощённого приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppCodeRequest",
          "longName": "GetAppCodeRequest",
          "fullName": "keyapis.multiapp.v1.GetAppCodeRequest",
          "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": "GetAppCodeResponse",
          "longName": "GetAppCodeResponse",
          "fullName": "keyapis.multiapp.v1.GetAppCodeResponse",
          "description": "Ответ на запрос на получение кода для перехода в приложение",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Код",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetAppCodeResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppCodeResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppCodeResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppCodeResponse.Error",
          "description": "Ошибка запроса получения ссылки на приложение",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "partner_key_does_not_exist",
              "description": "Ошибка наличия публичного ключа у партнера",
              "label": "",
              "type": "PartnerKeyDoesNotExist",
              "longType": "GetAppCodeResponse.Error.PartnerKeyDoesNotExist",
              "fullType": "keyapis.multiapp.v1.GetAppCodeResponse.Error.PartnerKeyDoesNotExist",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "app_is_inactive",
              "description": "Приложение не в статусе ACTIVE",
              "label": "",
              "type": "AppIsInactive",
              "longType": "GetAppCodeResponse.Error.AppIsInactive",
              "fullType": "keyapis.multiapp.v1.GetAppCodeResponse.Error.AppIsInactive",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 3
            }
          ]
        },
        {
          "name": "AppIsInactive",
          "longName": "GetAppCodeResponse.Error.AppIsInactive",
          "fullName": "keyapis.multiapp.v1.GetAppCodeResponse.Error.AppIsInactive",
          "description": "Приложение не в статусе ACTIVE",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "PartnerKeyDoesNotExist",
          "longName": "GetAppCodeResponse.Error.PartnerKeyDoesNotExist",
          "fullName": "keyapis.multiapp.v1.GetAppCodeResponse.Error.PartnerKeyDoesNotExist",
          "description": "Ошибка наличия публичного ключа у партнера",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "GetAppCountRequest",
          "longName": "GetAppCountRequest",
          "fullName": "keyapis.multiapp.v1.GetAppCountRequest",
          "description": "Запрос получения количества приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "AppFilter",
              "longType": "AppFilter",
              "fullType": "keyapis.multiapp.v1.AppFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppCountResponse",
          "longName": "GetAppCountResponse",
          "fullName": "keyapis.multiapp.v1.GetAppCountResponse",
          "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": "GetAppCountResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppCountResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppCountResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppCountResponse.Error",
          "description": "Ошибка запроса получения количества приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppListRequest",
          "longName": "GetAppListRequest",
          "fullName": "keyapis.multiapp.v1.GetAppListRequest",
          "description": "Запрос получения списка приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "AppFilter",
              "longType": "AppFilter",
              "fullType": "keyapis.multiapp.v1.AppFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Пагинация",
              "label": "",
              "type": "AppPaging",
              "longType": "AppPaging",
              "fullType": "keyapis.multiapp.v1.AppPaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetAppListResponse",
          "longName": "GetAppListResponse",
          "fullName": "keyapis.multiapp.v1.GetAppListResponse",
          "description": "Ответ на запрос получения списка приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Приложение",
              "label": "",
              "type": "App",
              "longType": "App",
              "fullType": "keyapis.multiapp.v1.App",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetAppListResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppListResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppListResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppListResponse.Error",
          "description": "Ошибка запроса получения списка приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppLiteCountRequest",
          "longName": "GetAppLiteCountRequest",
          "fullName": "keyapis.multiapp.v1.GetAppLiteCountRequest",
          "description": "Запрос получения количества упрощённых приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Упрощённый фильтр",
              "label": "",
              "type": "AppLiteFilter",
              "longType": "AppLiteFilter",
              "fullType": "keyapis.multiapp.v1.AppLiteFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppLiteCountResponse",
          "longName": "GetAppLiteCountResponse",
          "fullName": "keyapis.multiapp.v1.GetAppLiteCountResponse",
          "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": "GetAppLiteCountResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppLiteCountResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppLiteCountResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppLiteCountResponse.Error",
          "description": "Ошибка запроса получения списка приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppLiteListRequest",
          "longName": "GetAppLiteListRequest",
          "fullName": "keyapis.multiapp.v1.GetAppLiteListRequest",
          "description": "Запрос получения списка упрощённого приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Упрощённый фильтр",
              "label": "",
              "type": "AppLiteFilter",
              "longType": "AppLiteFilter",
              "fullType": "keyapis.multiapp.v1.AppLiteFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Пагинация",
              "label": "",
              "type": "AppLitePaging",
              "longType": "AppLitePaging",
              "fullType": "keyapis.multiapp.v1.AppLitePaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetAppLiteListResponse",
          "longName": "GetAppLiteListResponse",
          "fullName": "keyapis.multiapp.v1.GetAppLiteListResponse",
          "description": "Ответ на запрос получения списка упрощённых приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Упрощённое приложение",
              "label": "",
              "type": "AppLite",
              "longType": "AppLite",
              "fullType": "keyapis.multiapp.v1.AppLite",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetAppLiteListResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppLiteListResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppLiteListResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppLiteListResponse.Error",
          "description": "Ошибка запроса получения списка приложений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppLiteRequest",
          "longName": "GetAppLiteRequest",
          "fullName": "keyapis.multiapp.v1.GetAppLiteRequest",
          "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": "GetAppLiteResponse",
          "longName": "GetAppLiteResponse",
          "fullName": "keyapis.multiapp.v1.GetAppLiteResponse",
          "description": "Ответ на запрос получения упрощённого приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Упрощённое приложение",
              "label": "",
              "type": "AppLite",
              "longType": "AppLite",
              "fullType": "keyapis.multiapp.v1.AppLite",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetAppLiteResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppLiteResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppLiteResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppLiteResponse.Error",
          "description": "Ошибка запроса получения упрощённого приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetAppRequest",
          "longName": "GetAppRequest",
          "fullName": "keyapis.multiapp.v1.GetAppRequest",
          "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": "GetAppResponse",
          "longName": "GetAppResponse",
          "fullName": "keyapis.multiapp.v1.GetAppResponse",
          "description": "Ответ на запрос получения приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Приложение",
              "label": "",
              "type": "App",
              "longType": "App",
              "fullType": "keyapis.multiapp.v1.App",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetAppResponse.Error",
              "fullType": "keyapis.multiapp.v1.GetAppResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetAppResponse.Error",
          "fullName": "keyapis.multiapp.v1.GetAppResponse.Error",
          "description": "Ошибка запроса получения приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "PostAppRequest",
          "longName": "PostAppRequest",
          "fullName": "keyapis.multiapp.v1.PostAppRequest",
          "description": "Запрос сохранения приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Приложение",
              "label": "",
              "type": "App",
              "longType": "App",
              "fullType": "keyapis.multiapp.v1.App",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "PostAppResponse",
          "longName": "PostAppResponse",
          "fullName": "keyapis.multiapp.v1.PostAppResponse",
          "description": "Ответ на запрос сохранения приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Приложение",
              "label": "",
              "type": "App",
              "longType": "App",
              "fullType": "keyapis.multiapp.v1.App",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "PostAppResponse.Error",
              "fullType": "keyapis.multiapp.v1.PostAppResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "PostAppResponse.Error",
          "fullName": "keyapis.multiapp.v1.PostAppResponse.Error",
          "description": "Ошибка запроса сохранения приложения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.multiapp.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "saving",
              "description": "Ошибка сохранения",
              "label": "",
              "type": "SavingError",
              "longType": "App.SavingError",
              "fullType": "keyapis.multiapp.v1.App.SavingError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "ValidationError",
          "longName": "ValidationError",
          "fullName": "keyapis.multiapp.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": "AppService",
          "longName": "AppService",
          "fullName": "keyapis.multiapp.v1.AppService",
          "description": "Сервис управления приложениями для суперапа",
          "methods": [
            {
              "name": "PostApp",
              "description": "Метод сохранения приложения.\nПоддерживает создание и обновление.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695668.\nМетод доступен для: admin, manager, service",
              "requestType": "PostAppRequest",
              "requestLongType": "PostAppRequest",
              "requestFullType": "keyapis.multiapp.v1.PostAppRequest",
              "requestStreaming": false,
              "responseType": "PostAppResponse",
              "responseLongType": "PostAppResponse",
              "responseFullType": "keyapis.multiapp.v1.PostAppResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "POST",
                      "pattern": "/multiapp/api/v1/app",
                      "body": "*"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetApp",
              "description": "Метод получения приложения.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.\nМетод доступен для: admin, manager, service, ltp_first",
              "requestType": "GetAppRequest",
              "requestLongType": "GetAppRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppRequest",
              "requestStreaming": false,
              "responseType": "GetAppResponse",
              "responseLongType": "GetAppResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app/{id}"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppLite",
              "description": "Метод получения упрощённого приложения.\nНе требует авторизации",
              "requestType": "GetAppLiteRequest",
              "requestLongType": "GetAppLiteRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppLiteRequest",
              "requestStreaming": false,
              "responseType": "GetAppLiteResponse",
              "responseLongType": "GetAppLiteResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppLiteResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app_lite/{id}"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppList",
              "description": "Метод получения списка приложений.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.\nМетод доступен для: admin, manager, service, ltp_first",
              "requestType": "GetAppListRequest",
              "requestLongType": "GetAppListRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppListRequest",
              "requestStreaming": false,
              "responseType": "GetAppListResponse",
              "responseLongType": "GetAppListResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppListResponse",
              "responseStreaming": true,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppLiteList",
              "description": "Метод получения списка упрощённых приложений.\nВозвращает приложения не в статусе DELETED.\nЕсли не передан параметр app_lite_tag.platform_type возвращает пустой список.\nЕсли не передан параметр app_lite_tag.app_name возвращает пустой список.\nЕсли не передан параметр user_tags, либо user_tags пустой, возвращает пустой список.\nНа основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.\nНе требует авторизации",
              "requestType": "GetAppLiteListRequest",
              "requestLongType": "GetAppLiteListRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppLiteListRequest",
              "requestStreaming": false,
              "responseType": "GetAppLiteListResponse",
              "responseLongType": "GetAppLiteListResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppLiteListResponse",
              "responseStreaming": true,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app_lite/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppLiteCount",
              "description": "Метод получения количества упрощённых приложений.\nУчитывает приложения не в статусе DELETED.\nЕсли не передан параметр app_lite_tag.platform_type возвращает 0.\nЕсли не передан параметр app_lite_tag.app_name возвращает 0.\nЕсли не передан параметр user_tags, либо user_tags пустой, возвращает 0.\nНа основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.\nНе требует авторизации",
              "requestType": "GetAppLiteCountRequest",
              "requestLongType": "GetAppLiteCountRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppLiteCountRequest",
              "requestStreaming": false,
              "responseType": "GetAppLiteCountResponse",
              "responseLongType": "GetAppLiteCountResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppLiteCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app_lite/count"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppCount",
              "description": "Метод получения количества приложений.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.\nМетод доступен для: admin, manager, service, ltp_first",
              "requestType": "GetAppCountRequest",
              "requestLongType": "GetAppCountRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppCountRequest",
              "requestStreaming": false,
              "responseType": "GetAppCountResponse",
              "responseLongType": "GetAppCountResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app/count"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetAppCode",
              "description": "Метод получения кода для перехода в приложение.\nЛогика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.\nМетод доступен для: admin, service, master, slave",
              "requestType": "GetAppCodeRequest",
              "requestLongType": "GetAppCodeRequest",
              "requestFullType": "keyapis.multiapp.v1.GetAppCodeRequest",
              "requestStreaming": false,
              "responseType": "GetAppCodeResponse",
              "responseLongType": "GetAppCodeResponse",
              "responseFullType": "keyapis.multiapp.v1.GetAppCodeResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/multiapp/api/v1/app/{id}/code"
                    }
                  ]
                }
              }
            },
            {
              "name": "DeleteApp",
              "description": "Метод удаления приложения.\nSoft delete, из базы не удаляется, проставляется статус.\nСценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.\nМетод доступен для: admin, manager, service",
              "requestType": "DeleteAppRequest",
              "requestLongType": "DeleteAppRequest",
              "requestFullType": "keyapis.multiapp.v1.DeleteAppRequest",
              "requestStreaming": false,
              "responseType": "DeleteAppResponse",
              "responseLongType": "DeleteAppResponse",
              "responseFullType": "keyapis.multiapp.v1.DeleteAppResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "DELETE",
                      "pattern": "/multiapp/api/v1/app/{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)"
    }
  ]
}