| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | // Protocol Buffers - Google's data interchange format// Copyright 2008 Google Inc.  All rights reserved.// https://developers.google.com/protocol-buffers///// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:////     * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.//     * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.//     * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived from// this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.syntax = "proto3";package google.protobuf;option go_package = "google.golang.org/protobuf/types/known/anypb";option java_package = "com.google.protobuf";option java_outer_classname = "AnyProto";option java_multiple_files = true;option objc_class_prefix = "GPB";option csharp_namespace = "Google.Protobuf.WellKnownTypes";// `Any` contains an arbitrary serialized protocol buffer message along with a// URL that describes the type of the serialized message.//// Protobuf library provides support to pack/unpack Any values in the form// of utility functions or additional generated methods of the Any type.//// Example 1: Pack and unpack a message in C++.////     Foo foo = ...;//     Any any;//     any.PackFrom(foo);//     ...//     if (any.UnpackTo(&foo)) {//       ...//     }//// Example 2: Pack and unpack a message in Java.////     Foo foo = ...;//     Any any = Any.pack(foo);//     ...//     if (any.is(Foo.class)) {//       foo = any.unpack(Foo.class);//     }//     // or ...//     if (any.isSameTypeAs(Foo.getDefaultInstance())) {//       foo = any.unpack(Foo.getDefaultInstance());//     }////  Example 3: Pack and unpack a message in Python.////     foo = Foo(...)//     any = Any()//     any.Pack(foo)//     ...//     if any.Is(Foo.DESCRIPTOR)://       any.Unpack(foo)//       ...////  Example 4: Pack and unpack a message in Go////      foo := &pb.Foo{...}//      any, err := anypb.New(foo)//      if err != nil {//        ...//      }//      ...//      foo := &pb.Foo{}//      if err := any.UnmarshalTo(foo); err != nil {//        ...//      }//// The pack methods provided by protobuf library will by default use// 'type.googleapis.com/full.type.name' as the type URL and the unpack// methods only use the fully qualified type name after the last '/'// in the type URL, for example "foo.bar.com/x/y.z" will yield type// name "y.z".//// JSON// ====// The JSON representation of an `Any` value uses the regular// representation of the deserialized, embedded message, with an// additional field `@type` which contains the type URL. Example:////     package google.profile;//     message Person {//       string first_name = 1;//       string last_name = 2;//     }////     {//       "@type": "type.googleapis.com/google.profile.Person",//       "firstName": <string>,//       "lastName": <string>//     }//// If the embedded message type is well-known and has a custom JSON// representation, that representation will be embedded adding a field// `value` which holds the custom JSON in addition to the `@type`// field. Example (for message [google.protobuf.Duration][]):////     {//       "@type": "type.googleapis.com/google.protobuf.Duration",//       "value": "1.212s"//     }//message Any {  // A URL/resource name that uniquely identifies the type of the serialized  // protocol buffer message. This string must contain at least  // one "/" character. The last segment of the URL's path must represent  // the fully qualified name of the type (as in  // `path/google.protobuf.Duration`). The name should be in a canonical form  // (e.g., leading "." is not accepted).  //  // In practice, teams usually precompile into the binary all types that they  // expect it to use in the context of Any. However, for URLs which use the  // scheme `http`, `https`, or no scheme, one can optionally set up a type  // server that maps type URLs to message definitions as follows:  //  // * If no scheme is provided, `https` is assumed.  // * An HTTP GET on the URL must yield a [google.protobuf.Type][]  //   value in binary format, or produce an error.  // * Applications are allowed to cache lookup results based on the  //   URL, or have them precompiled into a binary to avoid any  //   lookup. Therefore, binary compatibility needs to be preserved  //   on changes to types. (Use versioned type names to manage  //   breaking changes.)  //  // Note: this functionality is not currently available in the official  // protobuf release, and it is not used for type URLs beginning with  // type.googleapis.com. As of May 2023, there are no widely used type server  // implementations and no plans to implement one.  //  // Schemes other than `http`, `https` (or the empty scheme) might be  // used with implementation specific semantics.  //  string type_url = 1;  // Must be a valid serialized protocol buffer of the above specified type.  bytes value = 2;}
 |