Brian Silverman | 9c614bc | 2016-02-15 20:20:02 -0500 | [diff] [blame] | 1 | // Protocol Buffers - Google's data interchange format |
| 2 | // Copyright 2008 Google Inc. All rights reserved. |
| 3 | // https://developers.google.com/protocol-buffers/ |
| 4 | // |
| 5 | // Redistribution and use in source and binary forms, with or without |
| 6 | // modification, are permitted provided that the following conditions are |
| 7 | // met: |
| 8 | // |
| 9 | // * Redistributions of source code must retain the above copyright |
| 10 | // notice, this list of conditions and the following disclaimer. |
| 11 | // * Redistributions in binary form must reproduce the above |
| 12 | // copyright notice, this list of conditions and the following disclaimer |
| 13 | // in the documentation and/or other materials provided with the |
| 14 | // distribution. |
| 15 | // * Neither the name of Google Inc. nor the names of its |
| 16 | // contributors may be used to endorse or promote products derived from |
| 17 | // this software without specific prior written permission. |
| 18 | // |
| 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 | |
| 31 | syntax = "proto3"; |
| 32 | |
| 33 | package google.protobuf; |
| 34 | |
| 35 | option csharp_namespace = "Google.Protobuf.WellKnownTypes"; |
Austin Schuh | 40c1652 | 2018-10-28 20:27:54 -0700 | [diff] [blame^] | 36 | option cc_enable_arenas = true; |
| 37 | option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; |
Brian Silverman | 9c614bc | 2016-02-15 20:20:02 -0500 | [diff] [blame] | 38 | option java_package = "com.google.protobuf"; |
| 39 | option java_outer_classname = "StructProto"; |
| 40 | option java_multiple_files = true; |
Brian Silverman | 9c614bc | 2016-02-15 20:20:02 -0500 | [diff] [blame] | 41 | option objc_class_prefix = "GPB"; |
| 42 | |
| 43 | |
| 44 | // `Struct` represents a structured data value, consisting of fields |
| 45 | // which map to dynamically typed values. In some languages, `Struct` |
| 46 | // might be supported by a native representation. For example, in |
| 47 | // scripting languages like JS a struct is represented as an |
| 48 | // object. The details of that representation are described together |
| 49 | // with the proto support for the language. |
| 50 | // |
| 51 | // The JSON representation for `Struct` is JSON object. |
| 52 | message Struct { |
Austin Schuh | 40c1652 | 2018-10-28 20:27:54 -0700 | [diff] [blame^] | 53 | // Unordered map of dynamically typed values. |
Brian Silverman | 9c614bc | 2016-02-15 20:20:02 -0500 | [diff] [blame] | 54 | map<string, Value> fields = 1; |
| 55 | } |
| 56 | |
| 57 | // `Value` represents a dynamically typed value which can be either |
| 58 | // null, a number, a string, a boolean, a recursive struct value, or a |
| 59 | // list of values. A producer of value is expected to set one of that |
| 60 | // variants, absence of any variant indicates an error. |
| 61 | // |
| 62 | // The JSON representation for `Value` is JSON value. |
| 63 | message Value { |
| 64 | // The kind of value. |
| 65 | oneof kind { |
| 66 | // Represents a null value. |
| 67 | NullValue null_value = 1; |
| 68 | // Represents a double value. |
| 69 | double number_value = 2; |
| 70 | // Represents a string value. |
| 71 | string string_value = 3; |
| 72 | // Represents a boolean value. |
| 73 | bool bool_value = 4; |
| 74 | // Represents a structured value. |
| 75 | Struct struct_value = 5; |
| 76 | // Represents a repeated `Value`. |
| 77 | ListValue list_value = 6; |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | // `NullValue` is a singleton enumeration to represent the null value for the |
| 82 | // `Value` type union. |
| 83 | // |
| 84 | // The JSON representation for `NullValue` is JSON `null`. |
| 85 | enum NullValue { |
| 86 | // Null value. |
| 87 | NULL_VALUE = 0; |
| 88 | } |
| 89 | |
| 90 | // `ListValue` is a wrapper around a repeated field of values. |
| 91 | // |
| 92 | // The JSON representation for `ListValue` is JSON array. |
| 93 | message ListValue { |
| 94 | // Repeated field of dynamically typed values. |
| 95 | repeated Value values = 1; |
| 96 | } |