| |
| module ietf-any { |
| |
| |
| namespace "urn:opencord:params:xml:ns:voltha:ietf-any"; |
| prefix any; |
| |
| |
| organization "CORD"; |
| contact |
| " Any name"; |
| |
| description |
| ""; |
| |
| revision "2016-11-15" { |
| description "Initial revision."; |
| reference "reference"; |
| } |
| |
| |
| grouping Any { |
| description |
| "`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); |
| |
| |
| Example 3: Pack and unpack a message in Python. |
| |
| foo = Foo(...) |
| any = Any() |
| any.Pack(foo) |
| ... |
| if any.Is(Foo.DESCRIPTOR): |
| any.Unpack(foo) |
| ... |
| |
| 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 |
| "; |
| leaf type_url { |
| type string; |
| description |
| "A URL resource name whose content describes the type of the |
| serialized protocol buffer message. |
| |
| For URLs which use the scheme `http`, `https`, or no scheme, the |
| following restrictions and interpretations apply: |
| |
| If no scheme is provided, `https` is assumed. |
| 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). |
| 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.) |
| |
| Schemes other than `http`, `https` (or the empty scheme) might be |
| used with implementation specific semantics."; |
| } |
| |
| leaf value { |
| type binary; |
| description |
| "Must be a valid serialized protocol buffer of the above specified type."; |
| } |
| |
| } |
| |
| } |