{
  "files": [
    {
      "name": "keyapis/signal/v1/keyapis_signal_signal_v1.proto",
      "description": "Сервис реализует функционал передачи сигналов",
      "package": "keyapis.signal.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": false,
      "enums": [],
      "extensions": [],
      "messages": [
        {
          "name": "Signal",
          "longName": "Signal",
          "fullName": "keyapis.signal.v1.Signal",
          "description": "Сигнал.\nЕсли информация неизвестна то колонки заполняются следующим образом:\n1/ Cтрока - как пустая строка;\n2/ Цифра - как 0;\n3/ Массив - как пустой массив;\nНекоторые данные в одних и тех же сигналах могут отсутствовать.\nТак как в момент создания сигнала их нет в тех сервисах в которых они выполняются.\nВсе виды сигналов передаются в топиках: key.signal.*",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "time",
              "description": "Время возникновения сигнала.\nВ секундах от 01.01.1970 года в UTC.\nПрисутствует всегда",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "name",
              "description": "Название сигнала.\nПрисутствует всегда",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "subject",
              "description": "Информация о субъекте действия с которым связан сигнал.\nК чему сигнал относится.\nЗаполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.\nМожет отсутствовать",
              "label": "",
              "type": "Entity",
              "longType": "Signal.Entity",
              "fullType": "keyapis.signal.v1.Signal.Entity",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "message",
              "description": "Текстовая информация.\nК примеру текст ошибки.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "subscription",
              "description": "Информация о подписке с которой связан сигнал.\nХарактеризует что доступно или не доступно пользователю.\nЗаполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.\nМожет отсутствовать",
              "label": "",
              "type": "Subscription",
              "longType": "Signal.Subscription",
              "fullType": "keyapis.signal.v1.Signal.Subscription",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "invoice",
              "description": "Информация о выставленном счёте с которым связан сигнал.\nХарактеризует состояние оплаты.\nЗаполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.\nМожет отсутствовать",
              "label": "",
              "type": "Invoice",
              "longType": "Signal.Invoice",
              "fullType": "keyapis.signal.v1.Signal.Invoice",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "object",
              "description": "Информация о объекте действия с которым связан сигнал.\nК чему сигнал относится.\nЗаполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.\nМожет отсутствовать",
              "label": "",
              "type": "Entity",
              "longType": "Signal.Entity",
              "fullType": "keyapis.signal.v1.Signal.Entity",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "payload",
              "description": "Дополнительная полезная нагрузка.\nК примеру тэги.\nТут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна",
              "label": "repeated",
              "type": "PayloadEntry",
              "longType": "Signal.PayloadEntry",
              "fullType": "keyapis.signal.v1.Signal.PayloadEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "meta",
              "description": "Мета информация.\nНекоторая информация которая присутствует в запросе.\nК примеру это http заголовки запроса: X-Request-Id, User-Agent, X-Forwarded-For и тд",
              "label": "repeated",
              "type": "MetaEntry",
              "longType": "Signal.MetaEntry",
              "fullType": "keyapis.signal.v1.Signal.MetaEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            }
          ]
        },
        {
          "name": "Entity",
          "longName": "Signal.Entity",
          "fullName": "keyapis.signal.v1.Signal.Entity",
          "description": "Сущность",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "place_id",
              "description": "Область размещения.\nОбычно это идентификатор дома в стандарте ОРПОН.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "place_label",
              "description": "Место размещение.\nОбычно это номер квартиры.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "user_id",
              "description": "Идентификатор пользователя.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "user_label",
              "description": "Лейбл пользователя.\nОбычно это тип/роль пользователя.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "group_id",
              "description": "Идентификатор группы.\nОбычно это идентификатор компании.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "group_title",
              "description": "Название группы.\nОбычно это название компании.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "device_id",
              "description": "Идентификатор устройства.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "device_label",
              "description": "Лейбл устройства.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "device_relay_index",
              "description": "Индекс реле устройства.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "camera_id",
              "description": "Идентификатор камеры.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 10
            },
            {
              "name": "camera_label",
              "description": "Лейбл камеры.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "key",
              "description": "Номер ключа.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            },
            {
              "name": "code",
              "description": "Код.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 13
            },
            {
              "name": "dtmf_code",
              "description": "ДТМФ код открытия.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 14
            },
            {
              "name": "phone",
              "description": "Номер телефона.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 15
            },
            {
              "name": "payload",
              "description": "Дополнительная полезная нагрузка.\nК примеру дополнительные детали сущности.\nТут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна",
              "label": "repeated",
              "type": "PayloadEntry",
              "longType": "Signal.Entity.PayloadEntry",
              "fullType": "keyapis.signal.v1.Signal.Entity.PayloadEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 16
            },
            {
              "name": "email",
              "description": "Почтовый адрес.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 17
            }
          ]
        },
        {
          "name": "PayloadEntry",
          "longName": "Signal.Entity.PayloadEntry",
          "fullName": "keyapis.signal.v1.Signal.Entity.PayloadEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Invoice",
          "longName": "Signal.Invoice",
          "fullName": "keyapis.signal.v1.Signal.Invoice",
          "description": "Информация о выставленном счёте",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "id",
              "description": "Идентификато выставленного счёта.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "title",
              "description": "Назначение выставленного счёта.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "total_amount",
              "description": "Общая сумма чека.\nВ рублях.\nМожет отсутствовать",
              "label": "",
              "type": "float",
              "longType": "float",
              "fullType": "float",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "status",
              "description": "Статус выставленного счёта.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "phone",
              "description": "Номер телефона на который пользователь хочет получить информацию об оплате.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "email",
              "description": "Почта на которую пользователь хочет получить информацию об оплате.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "position_ids",
              "description": "Идентификаторы товаров позиций на которые выставленн счёт.\nОбычно это идентификаторы подписок.\nМожет отсутствовать",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "payload",
              "description": "Дополнительная полезная нагрузка.\nК примеру дополнительные детали выставленного счёта.\nТут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна",
              "label": "repeated",
              "type": "PayloadEntry",
              "longType": "Signal.Invoice.PayloadEntry",
              "fullType": "keyapis.signal.v1.Signal.Invoice.PayloadEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            }
          ]
        },
        {
          "name": "PayloadEntry",
          "longName": "Signal.Invoice.PayloadEntry",
          "fullName": "keyapis.signal.v1.Signal.Invoice.PayloadEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "MetaEntry",
          "longName": "Signal.MetaEntry",
          "fullName": "keyapis.signal.v1.Signal.MetaEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "PayloadEntry",
          "longName": "Signal.PayloadEntry",
          "fullName": "keyapis.signal.v1.Signal.PayloadEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "Subscription",
          "longName": "Signal.Subscription",
          "fullName": "keyapis.signal.v1.Signal.Subscription",
          "description": "Информация о подписке",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "id",
              "description": "Идентификатор подписки.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "title",
              "description": "Название подписки.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "status",
              "description": "Статус подписки.\nМожет отсутствовать",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "privileges",
              "description": "Привилегии подписок.\nМожет отсутствовать",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "payload",
              "description": "Дополнительная полезная нагрузка.\nК примеру дополнительные детали подписки.\nТут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна",
              "label": "repeated",
              "type": "PayloadEntry",
              "longType": "Signal.Subscription.PayloadEntry",
              "fullType": "keyapis.signal.v1.Signal.Subscription.PayloadEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            }
          ]
        },
        {
          "name": "PayloadEntry",
          "longName": "Signal.Subscription.PayloadEntry",
          "fullName": "keyapis.signal.v1.Signal.Subscription.PayloadEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            }
          ]
        }
      ],
      "services": [],
      "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)"
    }
  ]
}