Chapter 14. ComplianceService 14.1. GetAggregatedResults GET /v1/compliance/aggregatedresults 14.1.1. Description 14.1.2. Parameters 14.1.2.1. Query Parameters Name Description Required Default Pattern groupBy String - null unit - UNKNOWN where.query - null where.pagination.limit - null where.pagination.offset - null where.pagination.sortOption.field - null where.pagination.sortOption.reversed - null where.pagination.sortOption.aggregateBy.aggrFunc - UNSET where.pagination.sortOption.aggregateBy.distinct - null 14.1.3. Return Type StorageComplianceAggregationResponse 14.1.4. Content Type application/json 14.1.5. Responses Table 14.1. HTTP Response Codes Code Message Datatype 200 A successful response. StorageComplianceAggregationResponse 0 An unexpected error response. RuntimeError 14.1.6. Samples 14.1.7. Common object reference 14.1.7.1. ComplianceAggregationAggregationKey Field Name Required Nullable Type Description Format scope StorageComplianceAggregationScope UNKNOWN, STANDARD, CLUSTER, CATEGORY, CONTROL, NAMESPACE, NODE, DEPLOYMENT, CHECK, id String 14.1.7.2. ProtobufAny 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++. Example 2: Pack and unpack a message in Java. 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". 14.1.7.2.1. JSON representation 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: 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][]): Field Name Required Nullable Type Description Format typeUrl String 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. value byte[] Must be a valid serialized protocol buffer of the above specified type. byte 14.1.7.3. RuntimeError Field Name Required Nullable Type Description Format error String code Integer int32 message String details List of ProtobufAny 14.1.7.4. StorageComplianceAggregationResponse Field Name Required Nullable Type Description Format results List of StorageComplianceAggregationResult sources List of StorageComplianceAggregationSource errorMessage String 14.1.7.5. StorageComplianceAggregationResult Field Name Required Nullable Type Description Format aggregationKeys List of ComplianceAggregationAggregationKey unit StorageComplianceAggregationScope UNKNOWN, STANDARD, CLUSTER, CATEGORY, CONTROL, NAMESPACE, NODE, DEPLOYMENT, CHECK, numPassing Integer int32 numFailing Integer int32 numSkipped Integer int32 14.1.7.6. StorageComplianceAggregationScope Enum Values UNKNOWN STANDARD CLUSTER CATEGORY CONTROL NAMESPACE NODE DEPLOYMENT CHECK 14.1.7.7. StorageComplianceAggregationSource Field Name Required Nullable Type Description Format clusterId String standardId String successfulRun StorageComplianceRunMetadata failedRuns List of StorageComplianceRunMetadata 14.1.7.8. StorageComplianceRunMetadata Field Name Required Nullable Type Description Format runId String standardId String clusterId String startTimestamp Date date-time finishTimestamp Date date-time success Boolean errorMessage String domainId String 14.2. GetRunResults GET /v1/compliance/runresults 14.2.1. Description 14.2.2. Parameters 14.2.2.1. Query Parameters Name Description Required Default Pattern clusterId - null standardId - null runId Specifies the run ID for which to return results. If empty, the most recent run is returned. CAVEAT: Setting this field circumvents the results cache on the server-side, which may lead to significantly increased memory pressure and decreased performance. - null 14.2.3. Return Type V1GetComplianceRunResultsResponse 14.2.4. Content Type application/json 14.2.5. Responses Table 14.2. HTTP Response Codes Code Message Datatype 200 A successful response. V1GetComplianceRunResultsResponse 0 An unexpected error response. RuntimeError 14.2.6. Samples 14.2.7. Common object reference 14.2.7.1. ComplianceResultValueEvidence Field Name Required Nullable Type Description Format state StorageComplianceState COMPLIANCE_STATE_UNKNOWN, COMPLIANCE_STATE_SKIP, COMPLIANCE_STATE_NOTE, COMPLIANCE_STATE_SUCCESS, COMPLIANCE_STATE_FAILURE, COMPLIANCE_STATE_ERROR, message String messageId Integer int32 14.2.7.2. ComplianceRunResultsEntityResults Field Name Required Nullable Type Description Format controlResults Map of StorageComplianceResultValue 14.2.7.3. ProtobufAny 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++. Example 2: Pack and unpack a message in Java. 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". 14.2.7.3.1. JSON representation 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: 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][]): Field Name Required Nullable Type Description Format typeUrl String 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. value byte[] Must be a valid serialized protocol buffer of the above specified type. byte 14.2.7.4. RuntimeError Field Name Required Nullable Type Description Format error String code Integer int32 message String details List of ProtobufAny 14.2.7.5. StorageComplianceDomain Field Name Required Nullable Type Description Format id String cluster StorageComplianceDomainCluster nodes Map of StorageComplianceDomainNode deployments Map of StorageComplianceDomainDeployment 14.2.7.6. StorageComplianceDomainCluster Field Name Required Nullable Type Description Format id String name String 14.2.7.7. StorageComplianceDomainDeployment Field Name Required Nullable Type Description Format id String name String type String namespace String namespaceId String clusterId String clusterName String 14.2.7.8. StorageComplianceDomainNode Field Name Required Nullable Type Description Format id String name String clusterId String clusterName String 14.2.7.9. StorageComplianceResultValue Field Name Required Nullable Type Description Format evidence List of ComplianceResultValueEvidence overallState StorageComplianceState COMPLIANCE_STATE_UNKNOWN, COMPLIANCE_STATE_SKIP, COMPLIANCE_STATE_NOTE, COMPLIANCE_STATE_SUCCESS, COMPLIANCE_STATE_FAILURE, COMPLIANCE_STATE_ERROR, 14.2.7.10. StorageComplianceRunMetadata Field Name Required Nullable Type Description Format runId String standardId String clusterId String startTimestamp Date date-time finishTimestamp Date date-time success Boolean errorMessage String domainId String 14.2.7.11. StorageComplianceRunResults Field Name Required Nullable Type Description Format domain StorageComplianceDomain runMetadata StorageComplianceRunMetadata clusterResults ComplianceRunResultsEntityResults nodeResults Map of ComplianceRunResultsEntityResults deploymentResults Map of ComplianceRunResultsEntityResults machineConfigResults Map of ComplianceRunResultsEntityResults 14.2.7.12. StorageComplianceState Enum Values COMPLIANCE_STATE_UNKNOWN COMPLIANCE_STATE_SKIP COMPLIANCE_STATE_NOTE COMPLIANCE_STATE_SUCCESS COMPLIANCE_STATE_FAILURE COMPLIANCE_STATE_ERROR 14.2.7.13. V1GetComplianceRunResultsResponse Field Name Required Nullable Type Description Format results StorageComplianceRunResults failedRuns List of StorageComplianceRunMetadata 14.3. GetStandards GET /v1/compliance/standards 14.3.1. Description 14.3.2. Parameters 14.3.3. Return Type V1GetComplianceStandardsResponse 14.3.4. Content Type application/json 14.3.5. Responses Table 14.3. HTTP Response Codes Code Message Datatype 200 A successful response. V1GetComplianceStandardsResponse 0 An unexpected error response. RuntimeError 14.3.6. Samples 14.3.7. Common object reference 14.3.7.1. ProtobufAny 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++. Example 2: Pack and unpack a message in Java. 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". 14.3.7.1.1. JSON representation 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: 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][]): Field Name Required Nullable Type Description Format typeUrl String 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. value byte[] Must be a valid serialized protocol buffer of the above specified type. byte 14.3.7.2. RuntimeError Field Name Required Nullable Type Description Format error String code Integer int32 message String details List of ProtobufAny 14.3.7.3. V1ComplianceStandardMetadata Field Name Required Nullable Type Description Format id String name String description String numImplementedChecks Integer int32 scopes List of V1ComplianceStandardMetadataScope dynamic Boolean hideScanResults Boolean 14.3.7.4. V1ComplianceStandardMetadataScope Enum Values UNSET CLUSTER NAMESPACE DEPLOYMENT NODE 14.3.7.5. V1GetComplianceStandardsResponse Field Name Required Nullable Type Description Format standards List of V1ComplianceStandardMetadata 14.4. GetStandard GET /v1/compliance/standards/{id} 14.4.1. Description 14.4.2. Parameters 14.4.2.1. Path Parameters Name Description Required Default Pattern id X null 14.4.3. Return Type V1GetComplianceStandardResponse 14.4.4. Content Type application/json 14.4.5. Responses Table 14.4. HTTP Response Codes Code Message Datatype 200 A successful response. V1GetComplianceStandardResponse 0 An unexpected error response. RuntimeError 14.4.6. Samples 14.4.7. Common object reference 14.4.7.1. ProtobufAny 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++. Example 2: Pack and unpack a message in Java. 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". 14.4.7.1.1. JSON representation 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: 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][]): Field Name Required Nullable Type Description Format typeUrl String 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. value byte[] Must be a valid serialized protocol buffer of the above specified type. byte 14.4.7.2. RuntimeError Field Name Required Nullable Type Description Format error String code Integer int32 message String details List of ProtobufAny 14.4.7.3. V1ComplianceControl Field Name Required Nullable Type Description Format id String standardId String groupId String name String description String implemented Boolean interpretationText String 14.4.7.4. V1ComplianceControlGroup Field Name Required Nullable Type Description Format id String standardId String name String description String numImplementedChecks Integer int32 14.4.7.5. V1ComplianceStandard Field Name Required Nullable Type Description Format metadata V1ComplianceStandardMetadata groups List of V1ComplianceControlGroup controls List of V1ComplianceControl 14.4.7.6. V1ComplianceStandardMetadata Field Name Required Nullable Type Description Format id String name String description String numImplementedChecks Integer int32 scopes List of V1ComplianceStandardMetadataScope dynamic Boolean hideScanResults Boolean 14.4.7.7. V1ComplianceStandardMetadataScope Enum Values UNSET CLUSTER NAMESPACE DEPLOYMENT NODE 14.4.7.8. V1GetComplianceStandardResponse Field Name Required Nullable Type Description Format standard V1ComplianceStandard 14.5. UpdateComplianceStandardConfig PATCH /v1/compliance/standards/{id} 14.5.1. Description 14.5.2. Parameters 14.5.2.1. Path Parameters Name Description Required Default Pattern id X null 14.5.2.2. Body Parameter Name Description Required Default Pattern body V1UpdateComplianceRequest X 14.5.3. Return Type Object 14.5.4. Content Type application/json 14.5.5. Responses Table 14.5. HTTP Response Codes Code Message Datatype 200 A successful response. Object 0 An unexpected error response. RuntimeError 14.5.6. Samples 14.5.7. Common object reference 14.5.7.1. ProtobufAny 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++. Example 2: Pack and unpack a message in Java. 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". 14.5.7.1.1. JSON representation 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: 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][]): Field Name Required Nullable Type Description Format typeUrl String 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. value byte[] Must be a valid serialized protocol buffer of the above specified type. byte 14.5.7.2. RuntimeError Field Name Required Nullable Type Description Format error String code Integer int32 message String details List of ProtobufAny 14.5.7.3. V1UpdateComplianceRequest Field Name Required Nullable Type Description Format id String hideScanResults Boolean

Commands:
Next available tag: 3
Foo foo = ...; Any any; any.PackFrom(foo); if (any.UnpackTo(&foo)) { }
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 { }
package google.profile; message Person { string first_name = 1; string last_name = 2; }
{ "@type": "type.googleapis.com/google.profile.Person", "firstName": <string>, "lastName": <string> }
@type: type.googleapis.com/google.protobuf.Duration
value: 1.212s
Next available tag: 3
Next available tag: 5
Next available tag: 5
Next available tag: 5
Foo foo = ...; Any any; any.PackFrom(foo); if (any.UnpackTo(&foo)) { }
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 { }
package google.profile; message Person { string first_name = 1; string last_name = 2; }
{ "@type": "type.googleapis.com/google.profile.Person", "firstName": <string>, "lastName": <string> }
@type: type.googleapis.com/google.protobuf.Duration
value: 1.212s
Next available tag: 5
These must mirror the tags _exactly_ in cluster.proto for backwards compatibility
This must mirror the tags _exactly_ in deployment.proto for backwards compatibility
These must mirror the tags _exactly_ in node.proto for backwards compatibility
Next available tag: 5
Next available tag: 6
Foo foo = ...; Any any; any.PackFrom(foo); if (any.UnpackTo(&foo)) { }
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 { }
package google.profile; message Person { string first_name = 1; string last_name = 2; }
{ "@type": "type.googleapis.com/google.profile.Person", "firstName": <string>, "lastName": <string> }
@type: type.googleapis.com/google.protobuf.Duration
value: 1.212s
Foo foo = ...; Any any; any.PackFrom(foo); if (any.UnpackTo(&foo)) { }
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 { }
package google.profile; message Person { string first_name = 1; string last_name = 2; }
{ "@type": "type.googleapis.com/google.profile.Person", "firstName": <string>, "lastName": <string> }
@type: type.googleapis.com/google.protobuf.Duration
value: 1.212s
Foo foo = ...; Any any; any.PackFrom(foo); if (any.UnpackTo(&foo)) { }
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 { }
package google.profile; message Person { string first_name = 1; string last_name = 2; }
{ "@type": "type.googleapis.com/google.profile.Person", "firstName": <string>, "lastName": <string> }
@type: type.googleapis.com/google.protobuf.Duration
value: 1.212s