{
  "files": [
    {
      "name": "keyapis/invoice/v1/keyapis_invoice_invoice_v1.proto",
      "description": "Сервис реализует функционал управления выставленными счётами",
      "package": "keyapis.invoice.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": true,
      "enums": [
        {
          "name": "CardType",
          "longName": "Invoice.CardType",
          "fullName": "keyapis.invoice.v1.Invoice.CardType",
          "description": "Справочник банковских карт",
          "values": [
            {
              "name": "CARD_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "VISA",
              "number": "1",
              "description": "Карта VISA"
            },
            {
              "name": "EC_MC",
              "number": "2",
              "description": "Карта EuroCard/MasterCard"
            },
            {
              "name": "DCL",
              "number": "3",
              "description": "Карта DinersClub"
            },
            {
              "name": "JCB",
              "number": "4",
              "description": "Карта JCB"
            },
            {
              "name": "AMEX",
              "number": "5",
              "description": "Карта American Express"
            },
            {
              "name": "MIR",
              "number": "6",
              "description": "Платежная система \"Мир\""
            }
          ]
        },
        {
          "name": "InvoiceStatusType",
          "longName": "Invoice.InvoiceStatusType",
          "fullName": "keyapis.invoice.v1.Invoice.InvoiceStatusType",
          "description": "Справочник типов статусов оплаты счёта",
          "values": [
            {
              "name": "INVOICE_STATUS_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "PLANNED",
              "number": "1",
              "description": "Создан, ожидает подтверждения"
            },
            {
              "name": "PENDING",
              "number": "2",
              "description": "Ожидает оплаты"
            },
            {
              "name": "ERROR",
              "number": "3",
              "description": "Ошибка оплаты"
            },
            {
              "name": "PAID",
              "number": "4",
              "description": "Оплачен"
            },
            {
              "name": "CANCELLED",
              "number": "5",
              "description": "Отменен"
            }
          ]
        },
        {
          "name": "PayInterfaceType",
          "longName": "Invoice.PayInterfaceType",
          "fullName": "keyapis.invoice.v1.Invoice.PayInterfaceType",
          "description": "Справочник методов платежа",
          "values": [
            {
              "name": "PAY_INTERFACE_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "GUI",
              "number": "1",
              "description": "Оплата через интерфейс предпроцессинга"
            },
            {
              "name": "M2M",
              "number": "2",
              "description": "Оплата с использованием ранее созданного способа платежа, настроенного по умолчанию"
            }
          ]
        },
        {
          "name": "PaywayType",
          "longName": "Invoice.PaywayType",
          "fullName": "keyapis.invoice.v1.Invoice.PaywayType",
          "description": "Справочник типов платежных средств",
          "values": [
            {
              "name": "PAYWAY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "BANK_CARD",
              "number": "1",
              "description": "Банковская карта"
            },
            {
              "name": "SBP",
              "number": "2",
              "description": "Сервис быстрых платежей"
            },
            {
              "name": "SBER_PAY",
              "number": "3",
              "description": "Связка Сбербанка"
            }
          ]
        },
        {
          "name": "DirectionType",
          "longName": "InvoicePaging.DirectionType",
          "fullName": "keyapis.invoice.v1.InvoicePaging.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": "InvoicePaging.OrderByType",
          "fullName": "keyapis.invoice.v1.InvoicePaging.OrderByType",
          "description": "Справочник типов значений сортировки.\n# Тип: byte",
          "values": [
            {
              "name": "ORDER_BY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "ID",
              "number": "1",
              "description": "По идентификатору"
            },
            {
              "name": "PAID_AT",
              "number": "2",
              "description": "По дате оплаты"
            },
            {
              "name": "CREATED_AT",
              "number": "3",
              "description": "По дате создания"
            }
          ]
        }
      ],
      "extensions": [],
      "messages": [
        {
          "name": "CreateInvoiceRequest",
          "longName": "CreateInvoiceRequest",
          "fullName": "keyapis.invoice.v1.CreateInvoiceRequest",
          "description": "Запрос на создание платежа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "user_id",
              "description": "Идентификатор пользователя",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "positions",
              "description": "Позиция счета",
              "label": "repeated",
              "type": "Position",
              "longType": "Invoice.Position",
              "fullType": "keyapis.invoice.v1.Invoice.Position",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "pay_interface_type",
              "description": "Метод платежа",
              "label": "",
              "type": "PayInterfaceType",
              "longType": "Invoice.PayInterfaceType",
              "fullType": "keyapis.invoice.v1.Invoice.PayInterfaceType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "payway_type",
              "description": "Способ оплаты.\nПо умолчанию: BANK_CARD",
              "label": "",
              "type": "PaywayType",
              "longType": "Invoice.PaywayType",
              "fullType": "keyapis.invoice.v1.Invoice.PaywayType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "return_url",
              "description": "Ссылка для перехода после оплаты.\nЕсли не передан подставится значение по умолчанию",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "phone_number",
              "description": "Номер телефона.\nДолжно быть означено поле phone_number, либо поле email",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "email",
              "description": "Электронная почта.\nДолжно быть означено поле phone_number, либо поле email",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "title",
              "description": "Описание платежа.\nПо умолчанию подставляется \"Счёт от {DD.MM.YYYY}г.\"",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            }
          ]
        },
        {
          "name": "CreateInvoiceResponse",
          "longName": "CreateInvoiceResponse",
          "fullName": "keyapis.invoice.v1.CreateInvoiceResponse",
          "description": "Ответ на запрос создание платежа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "error",
              "description": "Ошибка валидации",
              "label": "",
              "type": "Error",
              "longType": "CreateInvoiceResponse.Error",
              "fullType": "keyapis.invoice.v1.CreateInvoiceResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "data",
              "description": "Платеж",
              "label": "",
              "type": "Invoice",
              "longType": "Invoice",
              "fullType": "keyapis.invoice.v1.Invoice",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "CreateInvoiceResponse.Error",
          "fullName": "keyapis.invoice.v1.CreateInvoiceResponse.Error",
          "description": "Ошибка запроса",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.invoice.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "missing_user_contacts",
              "description": "Должно быть означено поле phone_number, либо поле email",
              "label": "",
              "type": "MissingUserContacts",
              "longType": "CreateInvoiceResponse.Error.MissingUserContacts",
              "fullType": "keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "external",
              "description": "Ошибки внешней системы",
              "label": "",
              "type": "ExternalError",
              "longType": "Invoice.ExternalError",
              "fullType": "keyapis.invoice.v1.Invoice.ExternalError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "saving",
              "description": "Ошибка сохранения",
              "label": "",
              "type": "SavingError",
              "longType": "Invoice.SavingError",
              "fullType": "keyapis.invoice.v1.Invoice.SavingError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "MissingUserContacts",
          "longName": "CreateInvoiceResponse.Error.MissingUserContacts",
          "fullName": "keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts",
          "description": "Должно быть означено поле phone_number, либо поле email",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "GetInvoiceCountRequest",
          "longName": "GetInvoiceCountRequest",
          "fullName": "keyapis.invoice.v1.GetInvoiceCountRequest",
          "description": "Запрос на получение количества платежей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "InvoiceFilter",
              "longType": "InvoiceFilter",
              "fullType": "keyapis.invoice.v1.InvoiceFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "GetInvoiceCountResponse",
          "longName": "GetInvoiceCountResponse",
          "fullName": "keyapis.invoice.v1.GetInvoiceCountResponse",
          "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": "GetInvoiceListRequest",
          "longName": "GetInvoiceListRequest",
          "fullName": "keyapis.invoice.v1.GetInvoiceListRequest",
          "description": "Запрос на получение списка платежей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Фильтр",
              "label": "",
              "type": "InvoiceFilter",
              "longType": "InvoiceFilter",
              "fullType": "keyapis.invoice.v1.InvoiceFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Пагинация",
              "label": "",
              "type": "InvoicePaging",
              "longType": "InvoicePaging",
              "fullType": "keyapis.invoice.v1.InvoicePaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetInvoiceListResponse",
          "longName": "GetInvoiceListResponse",
          "fullName": "keyapis.invoice.v1.GetInvoiceListResponse",
          "description": "Ответ на запрос получения списка платежей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Платежи",
              "label": "repeated",
              "type": "Invoice",
              "longType": "Invoice",
              "fullType": "keyapis.invoice.v1.Invoice",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetInvoiceListResponse.Error",
              "fullType": "keyapis.invoice.v1.GetInvoiceListResponse.Error",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetInvoiceListResponse.Error",
          "fullName": "keyapis.invoice.v1.GetInvoiceListResponse.Error",
          "description": "Ошибка запроса на получение списка платежей",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.invoice.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetInvoiceRequest",
          "longName": "GetInvoiceRequest",
          "fullName": "keyapis.invoice.v1.GetInvoiceRequest",
          "description": "Запрос на получение статуса платежа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "invoice_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": "GetInvoiceResponse",
          "longName": "GetInvoiceResponse",
          "fullName": "keyapis.invoice.v1.GetInvoiceResponse",
          "description": "Ответ на запрос получения платежа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "error",
              "description": "Ошибка",
              "label": "",
              "type": "Error",
              "longType": "GetInvoiceResponse.Error",
              "fullType": "keyapis.invoice.v1.GetInvoiceResponse.Error",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "data",
              "description": "Платеж",
              "label": "",
              "type": "Invoice",
              "longType": "Invoice",
              "fullType": "keyapis.invoice.v1.Invoice",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Error",
          "longName": "GetInvoiceResponse.Error",
          "fullName": "keyapis.invoice.v1.GetInvoiceResponse.Error",
          "description": "Ошибка запроса",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "validation",
              "description": "Ошибка валидации",
              "label": "",
              "type": "ValidationError",
              "longType": "ValidationError",
              "fullType": "keyapis.invoice.v1.ValidationError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "Invoice",
          "longName": "Invoice",
          "fullName": "keyapis.invoice.v1.Invoice",
          "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": "title",
              "description": "Описание платежа",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "user_id",
              "description": "Идентификатор пользователя",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "invoice_status_type",
              "description": "Статус платежа",
              "label": "",
              "type": "InvoiceStatusType",
              "longType": "Invoice.InvoiceStatusType",
              "fullType": "keyapis.invoice.v1.Invoice.InvoiceStatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            },
            {
              "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": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 5
            },
            {
              "name": "updated_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": 6
            },
            {
              "name": "positions",
              "description": "Позиция счета",
              "label": "repeated",
              "type": "Position",
              "longType": "Invoice.Position",
              "fullType": "keyapis.invoice.v1.Invoice.Position",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 7
            },
            {
              "name": "pay_interface_type",
              "description": "Метод платежа",
              "label": "",
              "type": "PayInterfaceType",
              "longType": "Invoice.PayInterfaceType",
              "fullType": "keyapis.invoice.v1.Invoice.PayInterfaceType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "payway_type",
              "description": "Способ оплаты",
              "label": "",
              "type": "PaywayType",
              "longType": "Invoice.PaywayType",
              "fullType": "keyapis.invoice.v1.Invoice.PaywayType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "status_changed_at",
              "description": "Дата изменения статуса платежа.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 10
            },
            {
              "name": "paid_at",
              "description": "Дата платежа.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "pay_url",
              "description": "Платежная ссылка",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            },
            {
              "name": "paid_by_card_masked",
              "description": "Маскированный номер карты при платеже",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            },
            {
              "name": "paid_by_card_espp_id",
              "description": "Идентификатор платежного средства в внешней системы",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 14
            },
            {
              "name": "card_type",
              "description": "Тип банковской карты",
              "label": "",
              "type": "CardType",
              "longType": "Invoice.CardType",
              "fullType": "keyapis.invoice.v1.Invoice.CardType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 15
            },
            {
              "name": "espp_req_status",
              "description": "Код ошибки внешней системы",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 16
            },
            {
              "name": "espp_req_user_msg",
              "description": "Комментарий к статусу платежа из внешней системы",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 17
            },
            {
              "name": "espp_invoice_id",
              "description": "Уникальный номер транзакции в внешней системы",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 18
            },
            {
              "name": "phone_number",
              "description": "Номер телефона",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 19
            },
            {
              "name": "email",
              "description": "Электронная почта",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 20
            }
          ]
        },
        {
          "name": "ExternalError",
          "longName": "Invoice.ExternalError",
          "fullName": "keyapis.invoice.v1.Invoice.ExternalError",
          "description": "Ошибки внешней системы",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "external_system_error",
              "description": "Запрос к внешней системе вернул ошибку или прекращен по таймауту",
              "label": "",
              "type": "ExternalSystemError",
              "longType": "Invoice.ExternalError.ExternalSystemError",
              "fullType": "keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "ExternalSystemError",
          "longName": "Invoice.ExternalError.ExternalSystemError",
          "fullName": "keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError",
          "description": "Запрос к внешней системе вернул ошибку или прекращен по таймауту",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Position",
          "longName": "Invoice.Position",
          "fullName": "keyapis.invoice.v1.Invoice.Position",
          "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": "invoice_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": "title",
              "description": "Название позиции",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "category",
              "description": "Категория позиции (='subscription')",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            },
            {
              "name": "amount",
              "description": "Цена в рублях.\nЧисло должно быть больше 0",
              "label": "",
              "type": "float",
              "longType": "float",
              "fullType": "float",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 5
            },
            {
              "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": 6
            },
            {
              "name": "updated_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": "mrf_id",
              "description": "Идентификатор МРФ",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 8
            },
            {
              "name": "rf_id",
              "description": "Идентификатор РФ",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 9
            },
            {
              "name": "instance_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": 10
            },
            {
              "name": "offering_id",
              "description": "Идентификатор предложения оплачиваемой подписки",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 11
            },
            {
              "name": "due_date_at",
              "description": "Срок окончания оплачиваемого периода",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            },
            {
              "name": "svc_type_id",
              "description": "Идентификатор получателя платежа",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            },
            {
              "name": "is_discount",
              "description": "Признак скидки",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 14
            }
          ]
        },
        {
          "name": "SavingError",
          "longName": "Invoice.SavingError",
          "fullName": "keyapis.invoice.v1.Invoice.SavingError",
          "description": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "invoice_already_exists",
              "description": "У пользователя уже есть платеж со статусом PENDING",
              "label": "",
              "type": "InvoiceAlreadyExists",
              "longType": "Invoice.SavingError.InvoiceAlreadyExists",
              "fullType": "keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "reason",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "InvoiceAlreadyExists",
          "longName": "Invoice.SavingError.InvoiceAlreadyExists",
          "fullName": "keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists",
          "description": "У пользователя уже есть платеж со статусом PENDING",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "InvoiceFilter",
          "longName": "InvoiceFilter",
          "fullName": "keyapis.invoice.v1.InvoiceFilter",
          "description": "Фильтр инвойсов",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "user_id",
              "description": "Идентификатор пользователя",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "invoice_status_type",
              "description": "Статус платежа",
              "label": "",
              "type": "InvoiceStatusType",
              "longType": "Invoice.InvoiceStatusType",
              "fullType": "keyapis.invoice.v1.Invoice.InvoiceStatusType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "InvoicePaging",
          "longName": "InvoicePaging",
          "fullName": "keyapis.invoice.v1.InvoicePaging",
          "description": "Постраничный вывод",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "order_by_type",
              "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: PAID_AT",
              "label": "",
              "type": "OrderByType",
              "longType": "InvoicePaging.OrderByType",
              "fullType": "keyapis.invoice.v1.InvoicePaging.OrderByType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "direction_type",
              "description": "Тип направления сортировки.\n# По умолчанию: DESC",
              "label": "",
              "type": "DirectionType",
              "longType": "InvoicePaging.DirectionType",
              "fullType": "keyapis.invoice.v1.InvoicePaging.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": "PostInvoiceConfirmRequest",
          "longName": "PostInvoiceConfirmRequest",
          "fullName": "keyapis.invoice.v1.PostInvoiceConfirmRequest",
          "description": "Запрос на подтверждение платежа",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "src_pay_id",
              "description": "Идентификатор платежа в Ключе",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "espp_pay_id",
              "description": "Идентификатор платежа во внешней системе",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "pay_status",
              "description": "Статус платежа из внешней системы",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 3
            },
            {
              "name": "req_type",
              "description": "Тип запроса.\nДолжно иметь значение \"confirmPayment\"",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 4
            },
            {
              "name": "amount",
              "description": "Сумма платежа в минимальных единицах валюты",
              "label": "",
              "type": "float",
              "longType": "float",
              "fullType": "float",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "currency",
              "description": "Код валюты платежа",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "pay_method",
              "description": "Код способа оплаты",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "create_time_at",
              "description": "Дата регистрации платежа.\n# Тип: DateTime",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "req_note",
              "description": "Комментарий или сообщение об ошибке",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "req_user_msg",
              "description": "Сообщение, отображаемое пользователю",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 10
            },
            {
              "name": "pay_time_at",
              "description": "Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "abandon_time_at",
              "description": "Время фактической отмены оплаты.\nВремя фактической отмены оплаты на стороне Процессинга.\nВозвращается, если отмена оплаты состоялась",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            },
            {
              "name": "card",
              "description": "Структура с информацией о карте плательщика.\nПередаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard",
              "label": "",
              "type": "Card",
              "longType": "PostInvoiceConfirmRequest.Card",
              "fullType": "keyapis.invoice.v1.PostInvoiceConfirmRequest.Card",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            }
          ]
        },
        {
          "name": "Card",
          "longName": "PostInvoiceConfirmRequest.Card",
          "fullName": "keyapis.invoice.v1.PostInvoiceConfirmRequest.Card",
          "description": "Структура с информацией о карте плательщика",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "espp_card_id",
              "description": "Идентификатор платежного средства во внешней системы.\nВозвращается в случае успешной привязки БК к УЗ",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "card_num",
              "description": "Номер платежного средства.\nМаскированный номер карты. Например: 123456******7890",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "card_kind",
              "description": "Тип банковской карты",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "bank_name",
              "description": "Банк-эмитент.\nНаименование банка-эмитента. Процессинг может вернуть значение \"НЕ ЗАДАВАЛСЯ\".\nВ этом случае рекомендуется не отображать эту информацию для пользователя",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "PostInvoiceConfirmResponse",
          "longName": "PostInvoiceConfirmResponse",
          "fullName": "keyapis.invoice.v1.PostInvoiceConfirmResponse",
          "description": "Ответ на запрос подтверждения платежа",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        }
      ],
      "services": [
        {
          "name": "InvoiceService",
          "longName": "InvoiceService",
          "fullName": "keyapis.invoice.v1.InvoiceService",
          "description": "Сервис invoices",
          "methods": [
            {
              "name": "CreateInvoice",
              "description": "Метод создания платежа.\nСоздание платежа в своей и внешней платежной системе.\nМетод доступен для: service",
              "requestType": "CreateInvoiceRequest",
              "requestLongType": "CreateInvoiceRequest",
              "requestFullType": "keyapis.invoice.v1.CreateInvoiceRequest",
              "requestStreaming": false,
              "responseType": "CreateInvoiceResponse",
              "responseLongType": "CreateInvoiceResponse",
              "responseFullType": "keyapis.invoice.v1.CreateInvoiceResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "POST",
                      "pattern": "/invoice/api/v1/invoice",
                      "body": "*"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetInvoice",
              "description": "Метод получения платежа.\nДля master доступно получение платежа только с user_id из токена.\nМетод доступен для: admin, service, master",
              "requestType": "GetInvoiceRequest",
              "requestLongType": "GetInvoiceRequest",
              "requestFullType": "keyapis.invoice.v1.GetInvoiceRequest",
              "requestStreaming": false,
              "responseType": "GetInvoiceResponse",
              "responseLongType": "GetInvoiceResponse",
              "responseFullType": "keyapis.invoice.v1.GetInvoiceResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/invoice/api/v1/invoice/{invoice_id}"
                    }
                  ]
                }
              }
            },
            {
              "name": "PostInvoiceConfirm",
              "description": "Метод подтверждения платежа (вызывается со стороны внешней системы).\nНе требует авторизации",
              "requestType": "PostInvoiceConfirmRequest",
              "requestLongType": "PostInvoiceConfirmRequest",
              "requestFullType": "keyapis.invoice.v1.PostInvoiceConfirmRequest",
              "requestStreaming": false,
              "responseType": "PostInvoiceConfirmResponse",
              "responseLongType": "PostInvoiceConfirmResponse",
              "responseFullType": "keyapis.invoice.v1.PostInvoiceConfirmResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "POST",
                      "pattern": "/invoice/internal/api/v1/invoice/confirm",
                      "body": "*"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetInvoiceList",
              "description": "Метод получения списка платежей.\nДля master доступно получение только собственных платежей, если параметр filter.user_id передан и не совпадает с user_id из токена, возвращается ошибка доступа.\nМетод доступен для: admin, service, master, ltp_first",
              "requestType": "GetInvoiceListRequest",
              "requestLongType": "GetInvoiceListRequest",
              "requestFullType": "keyapis.invoice.v1.GetInvoiceListRequest",
              "requestStreaming": false,
              "responseType": "GetInvoiceListResponse",
              "responseLongType": "GetInvoiceListResponse",
              "responseFullType": "keyapis.invoice.v1.GetInvoiceListResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/invoice/api/v1/invoice/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetInvoiceCount",
              "description": "Метод получения количества платежей.\nДля master в параметр filter.user_id подставляется user_id из токена.\nМетод доступен для: admin, service, master, ltp_first",
              "requestType": "GetInvoiceCountRequest",
              "requestLongType": "GetInvoiceCountRequest",
              "requestFullType": "keyapis.invoice.v1.GetInvoiceCountRequest",
              "requestStreaming": false,
              "responseType": "GetInvoiceCountResponse",
              "responseLongType": "GetInvoiceCountResponse",
              "responseFullType": "keyapis.invoice.v1.GetInvoiceCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/invoice/api/v1/invoice/count"
                    }
                  ]
                }
              }
            }
          ]
        }
      ],
      "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)"
    }
  ]
}