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