github.com/polarismesh/polaris@v1.17.8/common/api/protoc/include/google/protobuf/any.proto (about)

     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";
    36  option go_package = "github.com/golang/protobuf/ptypes/any";
    37  option java_package = "com.google.protobuf";
    38  option java_outer_classname = "AnyProto";
    39  option java_multiple_files = true;
    40  option objc_class_prefix = "GPB";
    41  
    42  // `Any` contains an arbitrary serialized protocol buffer message along with a
    43  // URL that describes the type of the serialized message.
    44  //
    45  // Protobuf library provides support to pack/unpack Any values in the form
    46  // of utility functions or additional generated methods of the Any type.
    47  //
    48  // Example 1: Pack and unpack a message in C++.
    49  //
    50  //     Foo foo = ...;
    51  //     Any any;
    52  //     any.PackFrom(foo);
    53  //     ...
    54  //     if (any.UnpackTo(&foo)) {
    55  //       ...
    56  //     }
    57  //
    58  // Example 2: Pack and unpack a message in Java.
    59  //
    60  //     Foo foo = ...;
    61  //     Any any = Any.pack(foo);
    62  //     ...
    63  //     if (any.is(Foo.class)) {
    64  //       foo = any.unpack(Foo.class);
    65  //     }
    66  //
    67  //  Example 3: Pack and unpack a message in Python.
    68  //
    69  //     foo = Foo(...)
    70  //     any = Any()
    71  //     any.Pack(foo)
    72  //     ...
    73  //     if any.Is(Foo.DESCRIPTOR):
    74  //       any.Unpack(foo)
    75  //       ...
    76  //
    77  //  Example 4: Pack and unpack a message in Go
    78  //
    79  //      foo := &pb.Foo{...}
    80  //      any, err := ptypes.MarshalAny(foo)
    81  //      ...
    82  //      foo := &pb.Foo{}
    83  //      if err := ptypes.UnmarshalAny(any, foo); err != nil {
    84  //        ...
    85  //      }
    86  //
    87  // The pack methods provided by protobuf library will by default use
    88  // 'type.googleapis.com/full.type.name' as the type URL and the unpack
    89  // methods only use the fully qualified type name after the last '/'
    90  // in the type URL, for example "foo.bar.com/x/y.z" will yield type
    91  // name "y.z".
    92  //
    93  //
    94  // JSON
    95  // ====
    96  // The JSON representation of an `Any` value uses the regular
    97  // representation of the deserialized, embedded message, with an
    98  // additional field `@type` which contains the type URL. Example:
    99  //
   100  //     package google.profile;
   101  //     message Person {
   102  //       string first_name = 1;
   103  //       string last_name = 2;
   104  //     }
   105  //
   106  //     {
   107  //       "@type": "type.googleapis.com/google.profile.Person",
   108  //       "firstName": <string>,
   109  //       "lastName": <string>
   110  //     }
   111  //
   112  // If the embedded message type is well-known and has a custom JSON
   113  // representation, that representation will be embedded adding a field
   114  // `value` which holds the custom JSON in addition to the `@type`
   115  // field. Example (for message [google.protobuf.Duration][]):
   116  //
   117  //     {
   118  //       "@type": "type.googleapis.com/google.protobuf.Duration",
   119  //       "value": "1.212s"
   120  //     }
   121  //
   122  message Any {
   123    // A URL/resource name that uniquely identifies the type of the serialized
   124    // protocol buffer message. This string must contain at least
   125    // one "/" character. The last segment of the URL's path must represent
   126    // the fully qualified name of the type (as in
   127    // `path/google.protobuf.Duration`). The name should be in a canonical form
   128    // (e.g., leading "." is not accepted).
   129    //
   130    // In practice, teams usually precompile into the binary all types that they
   131    // expect it to use in the context of Any. However, for URLs which use the
   132    // scheme `http`, `https`, or no scheme, one can optionally set up a type
   133    // server that maps type URLs to message definitions as follows:
   134    //
   135    // * If no scheme is provided, `https` is assumed.
   136    // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
   137    //   value in binary format, or produce an error.
   138    // * Applications are allowed to cache lookup results based on the
   139    //   URL, or have them precompiled into a binary to avoid any
   140    //   lookup. Therefore, binary compatibility needs to be preserved
   141    //   on changes to types. (Use versioned type names to manage
   142    //   breaking changes.)
   143    //
   144    // Note: this functionality is not currently available in the official
   145    // protobuf release, and it is not used for type URLs beginning with
   146    // type.googleapis.com.
   147    //
   148    // Schemes other than `http`, `https` (or the empty scheme) might be
   149    // used with implementation specific semantics.
   150    //
   151    string type_url = 1;
   152  
   153    // Must be a valid serialized protocol buffer of the above specified type.
   154    bytes value = 2;
   155  }