github.com/amazechain/amc@v0.1.3/api/protocol/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 = "google.golang.org/protobuf/types/known/anypb";
    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 := anypb.New(foo)
    81  //      if err != nil {
    82  //        ...
    83  //      }
    84  //      ...
    85  //      foo := &pb.Foo{}
    86  //      if err := any.UnmarshalTo(foo); err != nil {
    87  //        ...
    88  //      }
    89  //
    90  // The pack methods provided by protobuf library will by default use
    91  // 'type.googleapis.com/full.type.name' as the type URL and the unpack
    92  // methods only use the fully qualified type name after the last '/'
    93  // in the type URL, for example "foo.bar.com/x/y.z" will yield type
    94  // name "y.z".
    95  //
    96  //
    97  // JSON
    98  // ====
    99  // The JSON representation of an `Any` value uses the regular
   100  // representation of the deserialized, embedded message, with an
   101  // additional field `@type` which contains the type URL. Example:
   102  //
   103  //     package google.profile;
   104  //     message Person {
   105  //       string first_name = 1;
   106  //       string last_name = 2;
   107  //     }
   108  //
   109  //     {
   110  //       "@type": "type.googleapis.com/google.profile.Person",
   111  //       "firstName": <string>,
   112  //       "lastName": <string>
   113  //     }
   114  //
   115  // If the embedded message type is well-known and has a custom JSON
   116  // representation, that representation will be embedded adding a field
   117  // `value` which holds the custom JSON in addition to the `@type`
   118  // field. Example (for message [google.protobuf.Duration][]):
   119  //
   120  //     {
   121  //       "@type": "type.googleapis.com/google.protobuf.Duration",
   122  //       "value": "1.212s"
   123  //     }
   124  //
   125  message Any {
   126    // A URL/resource name that uniquely identifies the type of the serialized
   127    // protocol buffer message. This string must contain at least
   128    // one "/" character. The last segment of the URL's path must represent
   129    // the fully qualified name of the type (as in
   130    // `path/google.protobuf.Duration`). The name should be in a canonical form
   131    // (e.g., leading "." is not accepted).
   132    //
   133    // In practice, teams usually precompile into the binary all types that they
   134    // expect it to use in the context of Any. However, for URLs which use the
   135    // scheme `http`, `https`, or no scheme, one can optionally set up a type
   136    // server that maps type URLs to message definitions as follows:
   137    //
   138    // * If no scheme is provided, `https` is assumed.
   139    // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
   140    //   value in binary format, or produce an error.
   141    // * Applications are allowed to cache lookup results based on the
   142    //   URL, or have them precompiled into a binary to avoid any
   143    //   lookup. Therefore, binary compatibility needs to be preserved
   144    //   on changes to types. (Use versioned type names to manage
   145    //   breaking changes.)
   146    //
   147    // Note: this functionality is not currently available in the official
   148    // protobuf release, and it is not used for type URLs beginning with
   149    // type.googleapis.com.
   150    //
   151    // Schemes other than `http`, `https` (or the empty scheme) might be
   152    // used with implementation specific semantics.
   153    //
   154    string type_url = 1;
   155  
   156    // Must be a valid serialized protocol buffer of the above specified type.
   157    bytes value = 2;
   158  }