diff --git a/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto b/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto index ceea6ee2c17b..ec83504a0601 100644 --- a/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto +++ b/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto @@ -1145,6 +1145,48 @@ message StandardCoders { // encoded with it's corresponding coder. // Components: single coder for the value NULLABLE = 17 [(beam_urn) = "beam:coder:nullable:v1"]; + + // Encodes an element, the windows it is in, the timestamp of the element, + // the pane of the element, and optionally element metadata. + // The encoding is represented as: + // timestamp windows pane [metadata_length metadata] element + // + // timestamp - Same as beam:coder:windowed_value:v1. + // windows - Same as beam:coder:windowed_value:v1. + // pane - Similar to beam:coder:windowed_value:v1, but the first byte + // has the high bit 0x80 set if element metadata + // is present. + // metadata_length - A VarInt64 representing the length of the metadata + // payload. Only present if the 0x80 bit is set on the first byte of + // pane. + // metadata - Serialized ElementMetadata proto bytes. Only present if the + // 0x80 bit is set on the first byte of pane. + // element - Same as beam:coder:windowed_value:v1. + // + // Components: The element coder and the window coder, in that order. + WINDOWED_VALUE_V2 = 19 [(beam_urn) = "beam:coder:windowed_value:v2"]; + + // Encodes a timer containing a user key, a dynamic timer tag, a clear bit, + // a fire timestamp, a hold timestamp, the windows, the paneinfo, and + // optionally element metadata. + // The encoding is represented as: + // user key - Same as beam:coder:timer:v1. + // dynamic timer tag - Same as beam:coder:timer:v1. + // windows - Same as beam:coder:timer:v1. + // clear bit - Same as beam:coder:timer:v1. + // If clear bit is false, it is followed by: + // fire timestamp - Same as beam:coder:timer:v1. + // hold timestamp - Same as beam:coder:timer:v1. + // paneinfo - Similar to beam:coder:timer:v1, but the first byte has + // the high bit 0x80 set if element metadata + // is present. + // metadata_length - A VarInt64 representing the length of the metadata + // payload. Only present if the 0x80 bit is set on the first byte of + // paneinfo. + // metadata - Serialized ElementMetadata proto bytes. Only present if the + // 0x80 bit is set on the first byte of paneinfo. + // Components: Coder for the key and windows. + TIMER_V2 = 20 [(beam_urn) = "beam:coder:timer:v2"]; } }