[[ecs-category-field-values-reference]]
== {ecs} Categorization Fields

At a high level, ECS provides fields to classify events in two different ways:
"Where it's from" (e.g., `event.module`, `event.dataset`, `agent.type`, `observer.type`, etc.),
and "What it is." The categorization fields hold the "What it is" information,
independent of the source of the events.

ECS defines four categorization fields for this purpose, each of which falls under the `event.*` field set.

[float]
[[ecs-category-fields]]
=== Categorization Fields

* <<ecs-allowed-values-event-kind,event.kind>>
* <<ecs-allowed-values-event-category,event.category>>
* <<ecs-allowed-values-event-type,event.type>>
* <<ecs-allowed-values-event-outcome,event.outcome>>

NOTE: If your events don't match any of these categorization values, you should
leave the fields empty. This will ensure you can start populating the fields
once the appropriate categorization values are published, in a later release.

[float]
[[ecs-category-usage]]
=== Categorization Usage

<<ecs-using-the-categorization-fields,Using the categorization fields>> contains examples combining the categorization fields to classify different types of events.

{% for field in fields %}
[[ecs-allowed-values-{{ field['dashed_name'] }}]]
=== ECS Categorization Field: {{ field['flat_name'] }}

{{ field['description']|replace("\n", "\n\n") }}

*Allowed Values*
{% for value_details in field['allowed_values'] %}
* <<ecs-{{ field['dashed_name'] }}-{{ value_details['name'] }},{{ value_details['name'] }}>>
{%- endfor %}
{% for value_details in field['allowed_values'] %}
[float]
[[ecs-{{ field['dashed_name'] }}-{{ value_details['name'] }}]]
==== {{ value_details['name'] -}}

{% if value_details['beta'] %}

beta:[ {{ value_details['beta'] }} ]

{%- endif %}

{{ value_details['description']|replace("\n", "\n\n") }}

{% if 'expected_event_types' in value_details %}
*Expected event types for category {{ value_details['name'] }}:*

{{ value_details['expected_event_types']|join(', ') }}
{% endif %}
{% endfor %}
{%- endfor %}

include::field-values-usage.asciidoc[]
