package google.protobuf

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message Any

any.proto:125

`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) ... 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" }

Used in: build.bazel.remote.execution.v2.ExecutedActionMetadata, build_event_stream.ActionExecuted, devtools.build.v1.BuildEvent, devtools.build.v1.BuildEvent.BuildEnqueued, devtools.build.v1.BuildEvent.BuildFinished, devtools.build.v1.BuildEvent.InvocationAttemptFinished, devtools.build.v1.BuildEvent.InvocationAttemptStarted, devtools.build.v1.BuildStatus, longrunning.Operation, rpc.Status

message BoolValue

wrappers.proto:104

Wrapper message for `bool`. The JSON representation for `BoolValue` is JSON `true` and `false`.

message BytesValue

wrappers.proto:120

Wrapper message for `bytes`. The JSON representation for `BytesValue` is JSON string.

message DescriptorProto

descriptor.proto:94

Describes a message type.

Used in: FileDescriptorProto

message DescriptorProto.ExtensionRange

descriptor.proto:103

Used in: DescriptorProto

message DescriptorProto.ReservedRange

descriptor.proto:118

Range of reserved tag numbers. Reserved tag numbers may not be used by fields or extension ranges in the same message. Reserved ranges may not overlap.

Used in: DescriptorProto

message DoubleValue

wrappers.proto:56

Wrapper message for `double`. The JSON representation for `DoubleValue` is JSON number.

message Duration

duration.proto:103

A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years. # Examples Example 1: Compute Duration from two Timestamps in pseudo code. Timestamp start = ...; Timestamp end = ...; Duration duration = ...; duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos; if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; } Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. Timestamp start = ...; Duration duration = ...; Timestamp end = ...; end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos; if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; } Example 3: Compute Duration from datetime.timedelta in Python. td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td) # JSON Mapping In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".

Used in: build.bazel.remote.asset.v1.FetchBlobRequest, build.bazel.remote.asset.v1.FetchDirectoryRequest, build.bazel.remote.execution.v2.Action, build.bazel.remote.execution.v2.ExecutedActionMetadata, build_event_stream.BuildMetrics.ActionSummary.ActionData, build_event_stream.TargetComplete, build_event_stream.TestResult, build_event_stream.TestResult.ExecutionInfo.TimingBreakdown, build_event_stream.TestSummary, devtools.build.lib.packages.metrics.PackageLoadMetrics, devtools.build.v1.PublishLifecycleEventRequest, longrunning.WaitOperationRequest

message Empty

empty.proto:52

A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.

Used as response type in: com.github.trace_machina.nativelink.remote_execution.WorkerApi.ExecutionResponse, com.github.trace_machina.nativelink.remote_execution.WorkerApi.GoingAway, com.github.trace_machina.nativelink.remote_execution.WorkerApi.KeepAlive, devtools.build.v1.PublishBuildEvent.PublishLifecycleEvent, longrunning.Operations.CancelOperation, longrunning.Operations.DeleteOperation

Used as field type in: com.github.trace_machina.nativelink.events.RequestEvent, com.github.trace_machina.nativelink.events.ResponseEvent, com.github.trace_machina.nativelink.events.StreamEvent, com.github.trace_machina.nativelink.remote_execution.UpdateForWorker

(message has no fields)

message EnumDescriptorProto

descriptor.proto:248

Describes an enum type.

Used in: DescriptorProto, FileDescriptorProto

message EnumDescriptorProto.EnumReservedRange

descriptor.proto:261

Range of reserved numeric values. Reserved values may not be used by entries in the same enum. Reserved ranges may not overlap. Note that this is distinct from DescriptorProto.ReservedRange in that it is inclusive such that it can appropriately represent the entire int32 domain.

Used in: EnumDescriptorProto

message EnumOptions

descriptor.proto:634

Used in: EnumDescriptorProto

message EnumValueDescriptorProto

descriptor.proto:277

Describes a value within an enum.

Used in: EnumDescriptorProto

message EnumValueOptions

descriptor.proto:655

Used in: EnumValueDescriptorProto

message ExtensionRangeOptions

descriptor.proto:128

Used in: DescriptorProto.ExtensionRange

message FieldDescriptorProto

descriptor.proto:138

Describes a field within a message.

Used in: DescriptorProto, FileDescriptorProto

enum FieldDescriptorProto.Label

descriptor.proto:172

Used in: FieldDescriptorProto

enum FieldDescriptorProto.Type

descriptor.proto:139

Used in: FieldDescriptorProto

message FieldOptions

descriptor.proto:533

Used in: FieldDescriptorProto

enum FieldOptions.CType

descriptor.proto:539

Used in: FieldOptions

enum FieldOptions.JSType

descriptor.proto:566

Used in: FieldOptions

message FileDescriptorProto

descriptor.proto:62

Describes a complete .proto file.

Used in: FileDescriptorSet

message FileDescriptorSet

descriptor.proto:57

The protocol compiler can output a FileDescriptorSet containing the .proto files it parses.

message FileOptions

descriptor.proto:342

Used in: FileDescriptorProto

enum FileOptions.OptimizeMode

descriptor.proto:379

Generated classes can be optimized for speed or code size.

Used in: FileOptions

message FloatValue

wrappers.proto:64

Wrapper message for `float`. The JSON representation for `FloatValue` is JSON number.

message GeneratedCodeInfo

descriptor.proto:888

Describes the relationship between generated code and its original source file. A GeneratedCodeInfo message is associated with only one generated source file, but may contain references to different source .proto files.

message GeneratedCodeInfo.Annotation

descriptor.proto:892

Used in: GeneratedCodeInfo

message Int32Value

wrappers.proto:88

Wrapper message for `int32`. The JSON representation for `Int32Value` is JSON number.

Used in: devtools.build.v1.BuildStatus

message Int64Value

wrappers.proto:72

Wrapper message for `int64`. The JSON representation for `Int64Value` is JSON string.

message MessageOptions

descriptor.proto:467

Used in: DescriptorProto

message MethodDescriptorProto

descriptor.proto:293

Describes a method of a service.

Used in: ServiceDescriptorProto

message MethodOptions

descriptor.proto:689

Used in: MethodDescriptorProto

enum MethodOptions.IdempotencyLevel

descriptor.proto:705

Is this method side-effect-free (or safe in HTTP parlance), or idempotent, or neither? HTTP based RPC implementation may choose GET verb for safe methods, and PUT verb for idempotent methods instead of the default POST.

Used in: MethodOptions

message OneofDescriptorProto

descriptor.proto:242

Describes a oneof.

Used in: DescriptorProto

message OneofOptions

descriptor.proto:626

Used in: OneofDescriptorProto

message ServiceDescriptorProto

descriptor.proto:285

Describes a service.

Used in: FileDescriptorProto

message ServiceOptions

descriptor.proto:669

Used in: ServiceDescriptorProto

message SourceCodeInfo

descriptor.proto:754

Encapsulates information about the original source file from which a FileDescriptorProto was generated.

Used in: FileDescriptorProto

message SourceCodeInfo.Location

descriptor.proto:799

Used in: SourceCodeInfo

message StringValue

wrappers.proto:112

Wrapper message for `string`. The JSON representation for `StringValue` is JSON string.

message Timestamp

timestamp.proto:136

A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Examples Example 1: Compute Timestamp from POSIX `time()`. Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); Example 2: Compute Timestamp from POSIX `gettimeofday()`. struct timeval tv; gettimeofday(&tv, NULL); Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000); Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. long millis = System.currentTimeMillis(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build(); Example 5: Compute Timestamp from Java `Instant.now()`. Instant now = Instant.now(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(now.getEpochSecond()) .setNanos(now.getNano()).build(); Example 6: Compute Timestamp from current time in Python. timestamp = Timestamp() timestamp.GetCurrentTime() # JSON Mapping In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset). For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017. In JavaScript, one can convert a Date object to this format using the standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) method. In Python, a standard `datetime.datetime` object can be converted to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a formatter capable of generating timestamps in this format.

Used in: build.bazel.remote.asset.v1.FetchBlobRequest, build.bazel.remote.asset.v1.FetchBlobResponse, build.bazel.remote.asset.v1.FetchDirectoryRequest, build.bazel.remote.asset.v1.FetchDirectoryResponse, build.bazel.remote.asset.v1.PushBlobRequest, build.bazel.remote.asset.v1.PushDirectoryRequest, build.bazel.remote.execution.v2.ExecutedActionMetadata, build.bazel.remote.execution.v2.NodeProperties, build_event_stream.ActionExecuted, build_event_stream.BuildFinished, build_event_stream.BuildStarted, build_event_stream.TestResult, build_event_stream.TestSummary, com.github.trace_machina.nativelink.remote_execution.StartExecute, devtools.build.v1.BuildEvent

message UInt32Value

wrappers.proto:96

Wrapper message for `uint32`. The JSON representation for `UInt32Value` is JSON number.

Used in: build.bazel.remote.execution.v2.NodeProperties

message UInt64Value

wrappers.proto:80

Wrapper message for `uint64`. The JSON representation for `UInt64Value` is JSON string.

message UninterpretedOption

descriptor.proto:727

A message representing a option the parser does not recognize. This only appears in options protos created by the compiler::Parser class. DescriptorPool resolves these when building Descriptor objects. Therefore, options protos in descriptor objects (e.g. returned by Descriptor::options(), or produced by Descriptor::CopyTo()) will never have UninterpretedOptions in them.

Used in: EnumOptions, EnumValueOptions, ExtensionRangeOptions, FieldOptions, FileOptions, MessageOptions, MethodOptions, OneofOptions, ServiceOptions

message UninterpretedOption.NamePart

descriptor.proto:733

The name of the uninterpreted option. Each string represents a segment in a dot-separated name. is_extension is true iff a segment represents an extension (denoted with parentheses in options specs in .proto files). E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents "foo.(bar.baz).qux".

Used in: UninterpretedOption