blob: e8a18bc35e0839cc2bdebb422e96d555b63176d8 [file] [log] [blame]
Feng Xiao96e379f2015-02-09 12:21:49 +08001// 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.
Feng Xiaoe841bac2015-12-11 17:09:20 -080030
Feng Xiao96e379f2015-02-09 12:21:49 +080031syntax = "proto3";
32
33package google.protobuf;
34
Jon Skeet739d13d2015-07-14 14:26:31 +010035option csharp_namespace = "Google.Protobuf.WellKnownTypes";
Feng Xiaoe841bac2015-12-11 17:09:20 -080036option java_package = "com.google.protobuf";
37option java_outer_classname = "AnyProto";
38option java_multiple_files = true;
39option java_generate_equals_and_hash = true;
Thomas Van Lenten30650d82015-05-01 08:57:16 -040040option objc_class_prefix = "GPB";
Feng Xiao96e379f2015-02-09 12:21:49 +080041
Feng Xiao96e379f2015-02-09 12:21:49 +080042// `Any` contains an arbitrary serialized message along with a URL
43// that describes the type of the serialized message.
44//
Feng Xiaoe841bac2015-12-11 17:09:20 -080045//
Jisi Liub0f66112015-08-21 11:18:45 -070046// JSON
47// ====
Feng Xiao96e379f2015-02-09 12:21:49 +080048// The JSON representation of an `Any` value uses the regular
49// representation of the deserialized, embedded message, with an
50// additional field `@type` which contains the type URL. Example:
51//
52// package google.profile;
53// message Person {
54// string first_name = 1;
55// string last_name = 2;
56// }
57//
58// {
59// "@type": "type.googleapis.com/google.profile.Person",
60// "firstName": <string>,
61// "lastName": <string>
62// }
63//
64// If the embedded message type is well-known and has a custom JSON
65// representation, that representation will be embedded adding a field
Feng Xiaoe841bac2015-12-11 17:09:20 -080066// `value` which holds the custom JSON in addition to the `@type`
67// field. Example (for message [google.protobuf.Duration][]):
Feng Xiao96e379f2015-02-09 12:21:49 +080068//
69// {
70// "@type": "type.googleapis.com/google.protobuf.Duration",
71// "value": "1.212s"
72// }
73//
74message Any {
75 // A URL/resource name whose content describes the type of the
76 // serialized message.
77 //
78 // For URLs which use the schema `http`, `https`, or no schema, the
79 // following restrictions and interpretations apply:
80 //
Feng Xiaoca9d1a02015-04-20 11:30:31 -070081 // * If no schema is provided, `https` is assumed.
Feng Xiao96e379f2015-02-09 12:21:49 +080082 // * The last segment of the URL's path must represent the fully
83 // qualified name of the type (as in `path/google.protobuf.Duration`).
Feng Xiaoe841bac2015-12-11 17:09:20 -080084 // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
Feng Xiao96e379f2015-02-09 12:21:49 +080085 // value in binary format, or produce an error.
86 // * Applications are allowed to cache lookup results based on the
87 // URL, or have them precompiled into a binary to avoid any
Feng Xiaoca9d1a02015-04-20 11:30:31 -070088 // lookup. Therefore, binary compatibility needs to be preserved
Feng Xiao96e379f2015-02-09 12:21:49 +080089 // on changes to types. (Use versioned type names to manage
90 // breaking changes.)
91 //
92 // Schemas other than `http`, `https` (or the empty schema) might be
93 // used with implementation specific semantics.
94 //
Feng Xiao96e379f2015-02-09 12:21:49 +080095 string type_url = 1;
96
97 // Must be valid serialized data of the above specified type.
98 bytes value = 2;
99}