> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siftstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# channel_parsing_options

> sift/protobuf_descriptors/v2/channel_parsing_options.proto

<a name="sift_protobuf_descriptors_v2_channel_parsing_options-proto" />

These are message and field options that can be used when ingesting protobuf messages. These can be applied to protobuf fields
and messages before compiling and uploading the descriptor set.

* [File-level Extensions](#sift_protobuf_descriptors_v2_channel_parsing_options-proto-extensions)

<a name="sift_protobuf_descriptors_v2_channel_parsing_options-proto-services" />

## Services

*RPC methods exposed by this API.*

<a name="sift_protobuf_descriptors_v2_channel_parsing_options-proto-messages" />

## Messages

*Data models used across requests/responses.*

### TagSource

Message representing a tag source

Setting either of these values indicates that the field is a tag source
and the value can be applied to allowed tag\_targets.
Tag sources apply only to the nearest ancestor (if any) and do not propagate
to ancestors that are lists or maps or beyond.
They can apply to both ancestor and sibling fields.

| Field                | Type                            | Label    | Description                                                                                                                                                                                                                           |
| :------------------- | :------------------------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| allowed\_tag\_target | [TagTargetType](#tagtargettype) | optional | Indicates which tag\_target relationships are allowed to have this tag. If set to ANCESTOR\_TARGETS, sibling tag\_targets will not have this value. If set to SIBLING\_TARGETS, it will not apply to tag\_targets that are ancestors. |
| tag\_name            | string                          | optional | The name of the tag. It defaults to the field name but can be overridden here.                                                                                                                                                        |

### TagTarget

Message representing a tag target

| Field                | Type                            | Label    | Description                                                                                                                                                                                                                          |
| :------------------- | :------------------------------ | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| allowed\_tag\_source | [TagSourceType](#tagsourcetype) | optional | Setting this value indicates the allowed sources for tag values. If set to SIBLING\_SOURCES, tag\_sources from descendant proto fields will not be applied. If set to DESCENDANT\_SOURCES, sibling tag\_sources will not be applied. |

<a name="sift_protobuf_descriptors_v2_channel_parsing_options-proto-enums" />

## Enums

*Allowed constant values used in message fields.*

### ArrayIndexOverrideType

Enum for the source and destination of an array index override

| Name                                  | Number | Description                                                                                                 |
| :------------------------------------ | :----- | :---------------------------------------------------------------------------------------------------------- |
| ARRAY\_INDEX\_OVERRIDE\_UNSPECIFIED   | 0      | Default value, will be ignored                                                                              |
| ARRAY\_INDEX\_OVERRIDE\_TARGET        | 1      | Array Index will be replaced on fields with this type specified                                             |
| ARRAY\_INDEX\_OVERRIDE\_SOURCE        | 2      | Array Index will be sourced from fields with this type specified                                            |
| ARRAY\_INDEX\_OVERRIDE\_REMOVE\_INDEX | 3      | Array Index will be removed from fields with this type specified                                            |
| ARRAY\_INDEX\_OVERRIDE\_ENUM          | 4      | Array Index will be replaced with the enum name specified by the display\_override\_enum value on the field |

### BytesDecodingType

Enum for how to decode bytes fields

| Name                               | Number | Description                                |
| :--------------------------------- | :----- | :----------------------------------------- |
| BYTES\_DECODING\_TYPE\_UNSPECIFIED | 0      | Default value, will be stored as raw bytes |
| BYTES\_DECODING\_TYPE\_UTF8        | 1      | Decode bytes as UTF-8                      |

### MapKeyOverrideType

Enum for the source and destination of a map key override

| Name                            | Number | Description                                                                                             |
| :------------------------------ | :----- | :------------------------------------------------------------------------------------------------------ |
| MAP\_KEY\_OVERRIDE\_UNSPECIFIED | 0      | Default value, will be ignored                                                                          |
| MAP\_KEY\_OVERRIDE\_TARGET      | 1      | Map key will be replaced on fields with this type specified                                             |
| MAP\_KEY\_OVERRIDE\_SOURCE      | 2      | Map key will be sourced from fields with this type specified                                            |
| MAP\_KEY\_OVERRIDE\_REMOVE\_KEY | 3      | Map key will be removed from fields with this type specified                                            |
| MAP\_KEY\_OVERRIDE\_ENUM        | 4      | Map key will be replaced with the enum name specified by the display\_override\_enum value on the field |

### TagSourceType

Enum for different types of tag sources

| Name                              | Number | Description                                                 |
| :-------------------------------- | :----- | :---------------------------------------------------------- |
| DESCENDANT\_SOURCES               | 0      | Tags can be sourced from descendant fields                  |
| SIBLING\_SOURCES                  | 1      | Tags can be sourced from sibling fields                     |
| DESCENDANT\_AND\_SIBLING\_SOURCES | 2      | Tags can be sourced from both descendant and sibling fields |

### TagTargetType

Enum for different types of tag targets

| Name                            | Number | Description                                             |
| :------------------------------ | :----- | :------------------------------------------------------ |
| ANCESTOR\_TARGETS               | 0      | Tags can be applied to ancestor fields                  |
| SIBLING\_TARGETS                | 1      | Tags can be applied to sibling fields                   |
| ANCESTOR\_AND\_SIBLING\_TARGETS | 2      | Tags can be applied to both ancestor and sibling fields |

<a name="sift_protobuf_descriptors_v2_channel_parsing_options-proto-extensions" />

## File-level Extensions

*File-wide options and annotations.*

| Extension                    | Type                   | Base                            | Number | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| :--------------------------- | :--------------------- | :------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| array\_index\_override\_type | ArrayIndexOverrideType | .google.protobuf.FieldOptions   | 50009  | Adding the array\_index\_override\_type FieldOption to a repeated type field with the `ARRAY_INDEX_OVERRIDE_TARGET` type indicates that this field can have the array index replaced in the display name by a descendant field. Adding this to a primitive type field with the `ARRAY_INDEX_OVERRIDE_SOURCE` type indicates that this field is the replacement value for an ancestor array's index display. Note that sources within nested arrays will not apply to ancestor arrays that contain those arrays. This tag will be ignored if the field is not an array or if there are no `ARRAY_INDEX_OVERRIDE_SOURCE` fields that apply. If multiple apply then the first override will be applied and an error will be logged. |
| bytes\_decoding\_type        | BytesDecodingType      | .google.protobuf.FieldOptions   | 50006  | Adding the bytes\_decoding\_type FieldOption to a bytes field indicates how the bytes should be decoded If not set, the bytes fields will be ignored and an error will be logged.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| description                  | string                 | .google.protobuf.FieldOptions   | 50002  | Adding the description FieldOption to a field sets the description for the channel in the chart                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| display\_override\_enum      | string                 | .google.protobuf.FieldOptions   | 50008  | Adding the display\_override\_enum FieldOption to a field with that has map\_key\_override\_type set to MAP\_KEY\_OVERRIDE\_ENUM will look up the enum value in the enum referenced by this field and use that to look up the enum value by number and replace it with the enum value name.                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ignore\_field                | bool                   | .google.protobuf.FieldOptions   | 50007  | Adding the ignore\_field FieldOption with a value of true will cause the field to be ignored when ingesting the proto                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| map\_key\_override\_type     | MapKeyOverrideType     | .google.protobuf.FieldOptions   | 50005  | Adding the map\_key\_override\_type FieldOption to a map type field with the `MAP_KEY_OVERRIDE_TARGET` type indicates that this field can have the map key replaced in the display name by a descendant field. Adding this to a primitive type field with the `MAP_KEY_OVERRIDE_SOURCE` indicates that this field is the replacement value for an ancestor map's key display. Note that sources within arrays will not apply to ancestor maps that contain those arrays. This tag will be ignored if the field is not a map or if there are no map\_key\_override\_sources that apply. If multiple apply then the first override will be applied and an error will be logged.                                                    |
| store\_message\_as\_bytes    | bool                   | .google.protobuf.FieldOptions   | 50010  | Adding the store\_message\_as\_bytes FieldOption to a message field indicates that the message should be stored as serialized protobuf. When enabled, instead of creating channels for each field in the message, a single bytes channel will be created for the entire message. This tag will cause a validation error if the field is not a message type.                                                                                                                                                                                                                                                                                                                                                                      |
| tag\_source                  | TagSource              | .google.protobuf.FieldOptions   | 50004  | Adding the tag\_source FieldOption allows the value of the annotated field to be added to applicable fields that are annotated with tag\_target. These fields can be either ancestor fields or sibling fields, depending on their respective fields' allowed\_tag\_source and allowed\_tag\_target values.                                                                                                                                                                                                                                                                                                                                                                                                                       |
| tag\_target                  | TagTarget              | .google.protobuf.FieldOptions   | 50003  | Adding the tag\_target FieldOption indicates that this field can have tag values appended to the field name. The tag values will come from descendant or sibling fields in the proto path that have the tag\_source FieldOption applied.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| units                        | string                 | .google.protobuf.FieldOptions   | 50001  | Adding the units FieldOption to a field sets the units displayed on the channel when charted                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| message\_is\_tag\_target     | bool                   | .google.protobuf.MessageOptions | 50001  | The message\_is\_tag\_target option indicates that the message will allow its fields to have tags added to them. This option only accepts descendant sources. It can be helpful to annotate top-level messages with tags from deeper in the proto path.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
