[
  {
    "type": "record",
    "name": "Struct",
    "namespace": "google.protobuf",
    "fields": [
      {
        "name": "fields",
        "type": {
          "type": "map",
          "values": {
            "type": "record",
            "name": "Value",
            "namespace": "google.protobuf",
            "fields": [
              {
                "name": "kind",
                "type": [
                  {
                    "name": "NullValue",
                    "type": "enum",
                    "namespace": "google.protobuf",
                    "symbols": [
                      "NULL_VALUE"
                    ],
                    "doc": "`NullValue` is a singleton enumeration to represent the null value for the `Value` type union. The JSON representation for `NullValue` is JSON `null`."
                  },
                  "double",
                  "string",
                  "boolean",
                  "Struct",
                  {
                    "type": "record",
                    "name": "ListValue",
                    "namespace": "google.protobuf",
                    "fields": [
                      {
                        "name": "values",
                        "type": {
                          "type": "array",
                          "items": "Value"
                        },
                        "doc": "Repeated field of dynamically typed values."
                      }
                    ],
                    "doc": "`ListValue` is a wrapper around a repeated field of values. The JSON representation for `ListValue` is JSON array."
                  }
                ],
                "doc": "The kind of value."
              }
            ],
            "doc": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          }
        },
        "doc": "Unordered map of dynamically typed values."
      }
    ],
    "doc": "scripting languages like JS a struct is represented as an object. The details of that representation are described together with the proto support for the language. The JSON representation for `Struct` is JSON object."
  }
]