# Defining entities with YAML

Every entity in your Cortex catalog is defined by a YAML file called the Cortex entity descriptor—often referred to as an entity's *Cortex YAML*, after the `cortex.yaml` filename used in the GitOps approach. This applies whether you manage entities through the UI or GitOps; the descriptor is the underlying source of truth either way.

Each descriptor is a fully compliant OpenAPI 3 spec file, extended with Cortex-specific fields that unlock additional functionality in your catalog.

{% hint style="info" %}
You don't need to use OpenAPI or Swagger to use Cortex. The OpenAPI spec serves as the foundation for entity metadata because it's an open standard with official support for extensions, allowing Cortex to extend it into a full entity descriptor spec, while keeping the actual OpenAPI fields optional.
{% endhint %}

## Metadata in entity descriptor YAML files

You can extend an entity by adding metadata to the `info` section of its descriptor. Throughout the docs, you'll see snippets prefixed with `x-cortex-*`; these are descriptor blocks that belong inside `info` and unlock additional Cortex functionality.

{% hint style="info" %}
YAML comments aren't supported in entity descriptors. Cortex stores descriptors as JSON in the database, and JSON doesn't support comments. Most YAML parsers also strip comments during round-tripping, so any comments added to a descriptor will be lost.
{% endhint %}

### Required blocks

Every entity YAML requires the following:

<table><thead><tr><th width="180.3828125">Block</th><th>Description</th></tr></thead><tbody><tr><td><code>title</code></td><td>The name of the entity</td></tr><tr><td><code>x-cortex-tag</code></td><td>The <a href="#entity-tag">unique identifier for the entity</a></td></tr><tr><td><code>x-cortex-type</code></td><td><p>The <a href="#entity-types">entity type</a><br></p><ul><li>If the entity is a <a href="/pages/0BEkeCNaXgSo20PlGcRo#create-custom-entities-in-the-entity-descriptor">custom type</a>, you must also include <code>x-cortex-definition</code></li></ul></td></tr></tbody></table>

### **Recommended blocks**

Although they aren't required, it's strongly recommended to add a description, groups, and owners:

<table><thead><tr><th width="180.3984375">Block</th><th>Definition</th></tr></thead><tbody><tr><td><code>description</code></td><td>A description of the entity</td></tr><tr><td><code>x-cortex-groups</code></td><td><p>The entity's <a href="/pages/ruG8CemqPJPUPiLhd1o8">groups</a> - a tagging system used to segment entities<br></p><ul><li>Required field - <code>tag</code></li></ul></td></tr><tr><td><code>x-cortex-owners</code></td><td><p>The entity's <a href="/pages/3sA3UzKYpba4iDmzT7Gj">owners</a><br></p><ul><li>Required field - <code>type</code></li><li>Owners can be defined by <code>group</code> from an <a href="/pages/3sA3UzKYpba4iDmzT7Gj#entity-descriptor">ownership integration</a> or by email address</li><li><code>inheritance</code> - When creating a domain entity and adding owners to it, or while creating an entity relationship, you can set <a href="/pages/3sA3UzKYpba4iDmzT7Gj#ownership-inheritance">ownership inheritance</a> under this block to pass down to the entity's children. The inheritance type can be <code>APPEND</code>, <code>FALLBACK</code>, or <code>NONE</code>.</li></ul></td></tr></tbody></table>

### **Additional basic metadata blocks**

<table><thead><tr><th width="179.90625">Block</th><th>Definition</th></tr></thead><tbody><tr><td><code>x-cortex-custom-metadata</code>:</td><td><p>The entity's <a href="/pages/0pawHMQrFlZ2APpwlqa3">custom data</a><br></p><ul><li>Required fields - a key, <code>value</code>, and <code>description</code>. The key is the title for the custom data.</li></ul></td></tr><tr><td><code>x-cortex-dependency</code></td><td><p>The entity's <a href="/pages/lriEpowNUcQfWez9QDDX">dependencies</a><br></p><ul><li>Required fields - <code>tag</code>. If <code>method</code> is included, then <code>path</code> is also required.</li></ul></td></tr><tr><td><code>x-cortex-link</code></td><td><a href="/pages/5cEJd1jQZq1Shqjz7YAg">Documentation links</a> associated with the entity: <code>name</code>, <code>type</code>, and <code>url</code></td></tr><tr><td><code>x-cortex-parents</code> and <code>x-cortex-children</code></td><td><p>The entity's parent entities and children entities<br></p><ul><li>Required field - <code>tag</code></li><li>These fields are supported for entities that are members of a <a href="/pages/PVRYqXSfutvMjgCZhp3F#understanding-relationship-types-in-cortex">hierarchical entity relationship</a>, such as domains or teams</li></ul></td></tr><tr><td><code>x-cortex-relationships</code></td><td><p>A block that includes the entity's <a href="/pages/PVRYqXSfutvMjgCZhp3F#entity-descriptor">relationship type and destination entities</a><br></p><ul><li>Required fields - <code>type</code> and <code>destinations</code></li></ul></td></tr><tr><td><code>x-cortex-team</code></td><td><p>This appears in a <a href="/pages/k2dYsILMpH9zFdKGLhRj#entity-descriptor">team entity's YAML</a>. <code>members</code> can be defined under this block.<br></p><ul><li>A <code>member</code> is defined by <code>name</code> and <code>email</code>, and can also include <code>notificationsEnabled</code> and <code>roles</code>.</li></ul></td></tr></tbody></table>

### **Integration metadata blocks**

See the related linked documentation pages for instructions on adding metadata within each type of block.

<table><thead><tr><th width="299.6015625">Block</th><th></th></tr></thead><tbody><tr><td><code>x-cortex-alerts</code></td><td><a href="/pages/JEvChnD825Dk6Byn1mog">Opsgenie</a></td></tr><tr><td><code>x-cortex-apiiro</code></td><td><a href="/pages/rKjGunK2MAdxgaELbtSW">Apiiro</a></td></tr><tr><td><code>x-cortex-apm</code></td><td><a href="/pages/kRWtggFQYYp6FS6DzgLk">Datadog</a>, <a href="/pages/uOMTxgC5zj2oFsWsoXcq">Dynatrace</a>, <a href="/pages/3J3rOtgnvKCFiglcfy1O">New Relic</a></td></tr><tr><td><code>x-cortex-azure</code></td><td><a href="/pages/dLCbw5E6LxK8D3yCJCYD">Azure Resources</a></td></tr><tr><td><code>x-cortex-azure-devops</code></td><td><a href="/pages/UfaVrLl3RKIMq5MfGl8t">Azure DevOps</a></td></tr><tr><td><code>x-cortex-bugsnag</code></td><td><a href="/pages/o8Lte9uCwNidfXDXdtAc">BugSnag</a></td></tr><tr><td><code>x-cortex-ci-cd</code></td><td><a href="/pages/jGrBfRxtPPcGz3DNdZcs">Buildkite</a></td></tr><tr><td><code>x-cortex-checkmarx</code></td><td><a href="/pages/YApHGr8JiWQIwelMxuA7">Checkmarx</a></td></tr><tr><td><code>x-cortex-circle-ci</code></td><td><a href="/pages/SAZ8GgdTpdVOKEuuP3kU">CircleCI</a></td></tr><tr><td><code>x-cortex-coralogix</code></td><td><a href="/pages/B4Sw6S0xL3yKUhs5flhn">Coralogix</a></td></tr><tr><td><code>x-cortex-dashboards</code></td><td>Charts embedded from <a href="/pages/kRWtggFQYYp6FS6DzgLk">Datadog</a>, <a href="/pages/wc7RqyD55GDSaxYUmu8f">Grafana</a>, or <a href="/pages/3J3rOtgnvKCFiglcfy1O">New Relic</a></td></tr><tr><td><code>x-cortex-firehydrant</code></td><td><a href="/pages/rxkq9NIP59CbOPbVOe7p">FireHydrant</a></td></tr><tr><td><code>x-cortex-git</code></td><td><a href="/pages/UfaVrLl3RKIMq5MfGl8t">Azure DevOps</a>, <a href="/pages/kGrYUNlQZ02lIZkLr9GB">Bitbucket</a>, <a href="/pages/Xk8Sl5l7hncSwE0jkSC5">GitHub</a>, <a href="/pages/WW79Lsssh71ec7TlH7L2">GitLab</a></td></tr><tr><td><code>x-cortex-incident-io</code></td><td><a href="/pages/ZxMuzQi9AvvPGuN8njG5">incident.io</a></td></tr><tr><td><code>x-cortex-infra</code></td><td><a href="/pages/IpplVfBAjkvV30wggOAV">AWS</a>, <a href="/pages/lgZ9FTSqYCAkvTxVKYnR">Google</a></td></tr><tr><td><code>x-cortex-issues</code></td><td><a href="/pages/F0YEYLHAXU4ne0S0bb66">ClickUp</a>, <a href="/pages/Xk8Sl5l7hncSwE0jkSC5">GitHub</a>, <a href="/pages/hzJxJGhFlJtRBS9bw0ZM">Jira</a></td></tr><tr><td><code>x-cortex-k8s</code></td><td><a href="/pages/dLo7cW1bb9JvK7AJ9imS">Kubernetes</a></td></tr><tr><td><code>x-cortex-launch-darkly</code></td><td><a href="/pages/qCf8Um88KkPrjrn4hQSb">LaunchDarkly</a></td></tr><tr><td><code>x-cortex-microsoft-teams</code></td><td><a href="/pages/eA83dZvRK3iwWEE2NAJI">Microsoft Teams channels</a></td></tr><tr><td><code>x-cortex-oncall</code></td><td><a href="/pages/XDAUWFsDegInAZMY2ucB">PagerDuty</a>, <a href="/pages/uNmFSzHYVZklPYzhpikK">Splunk On-Call (VictorOps)</a>, <a href="/pages/sQYZHpisDx2OjQLnsP4A">xMatters</a></td></tr><tr><td><code>x-cortex-owners</code></td><td>When you specify <code>group</code> as the <code>type</code>, you can use the following integrations as the group <code>provider</code>: <a href="/pages/sezVtfvNGVEsZKLfOF2R">BambooHR</a>, <a href="/pages/kGrYUNlQZ02lIZkLr9GB">Bitbucket</a>, <a href="/pages/80JEbVo15jgcPcgvHwAZ">Entra ID (Azure AD)</a>, <a href="/pages/Xk8Sl5l7hncSwE0jkSC5">GitHub</a>, <a href="/pages/WW79Lsssh71ec7TlH7L2">GitLab</a>, <a href="/pages/lgZ9FTSqYCAkvTxVKYnR">Google</a>, <a href="/pages/jDIzrDn5NdqO33h6mzhy">Okta</a>, <a href="/pages/X7U6BovNifbqhXexFPxc">ServiceNow</a>, <a href="/pages/a13EpqM8gbXz8YVtYdvQ">Workday</a></td></tr><tr><td><code>x-cortex-rollbar</code></td><td><a href="/pages/ZHZIhHXr3KApkpZLigCU">Rollbar</a></td></tr><tr><td><code>x-cortex-rootly</code></td><td><a href="/pages/GmV26i9AeWtrz4VhaYwA">Rootly</a></td></tr><tr><td><code>x-cortex-sentry</code></td><td><a href="/pages/o0004rWtddFomLBsE48C">Sentry</a></td></tr><tr><td><code>x-cortex-semgrep</code></td><td><a href="/pages/HPYngZSFHEXMw12TF7I7">Semgrep</a></td></tr><tr><td><code>x-cortex-servicenow</code></td><td><a href="/pages/X7U6BovNifbqhXexFPxc">ServiceNow</a></td></tr><tr><td><code>x-cortex-slack</code></td><td><a href="/pages/E9axggeqAgqwSbjpIcUo">Slack channels</a></td></tr><tr><td><code>x-cortex-slos</code></td><td><a href="/pages/kRWtggFQYYp6FS6DzgLk">Datadog</a>, <a href="/pages/uOMTxgC5zj2oFsWsoXcq">Dynatrace</a>, <a href="/pages/lgZ9FTSqYCAkvTxVKYnR">Google</a>, <a href="/pages/RugXMwlZGeHNPfMTgavQ">Lightstep</a>, <a href="/pages/d5OW1jvVwAunmNp13nev">Prometheus</a>, <a href="/pages/YBtg2KsyFV3h411WSLOM">Splunk Observability Cloud (SignalFX)</a>, <a href="/pages/3MKMPLhBvPysG16IA7J3">Sumo Logic</a></td></tr><tr><td><code>x-cortex-snyk</code></td><td><a href="/pages/0dP78PbdmjrvRRBeFPsD">Snyk</a></td></tr><tr><td><code>x-cortex-static-analysis</code></td><td><a href="/pages/w9uMZxXgz3ZoMWzgiYXU">Codecov</a>, <a href="/pages/1Em0Q803ZImnzlIZfkxj">Mend</a>, <a href="/pages/LlpzID94xzZSAvmVKzFJ">SonarQube</a>, <a href="/pages/qgZciFiMo6NiLzGBjeW0">Veracode</a></td></tr><tr><td><code>x-cortex-wiz</code></td><td><a href="/pages/u7Q3UvY6KoFYL9TbRD8i">Wiz</a></td></tr></tbody></table>

## Example entity YAML

The example below demonstrates how you can use each of the blocks in an entity's YAML.

<pre class="language-yaml"><code class="lang-yaml">## API Spec and Version
openapi: 3.0.0

# Service Descriptors

# Required fields: info, title, x-cortex-tag
info:
  title: &#x3C;HUMAN_READABLE_SERVICE_NAME>
  x-cortex-tag: &#x3C;SERVICE_TAG>
   description: &#x3C;DESCRIPTION>

  # Groups
  # !Groups must contain only alphanumeric characters, and may not contain whitespaces!
  x-cortex-groups:
    - &#x3C;GROUP_NAME>
    - &#x3C;GROUP_NAME>
    - &#x3C;GROUP_NAME>
  
  # Owners
  x-cortex-owners:
    - type: group
      name: my-team
      provider: CORTEX # Use when referring to a team defined in Cortex; these teams do not map to identities from integrations
      description: This is a description for this owner
    - type: email
      email: user@example.com
      description: This is a description for this owner
    - type: group
      name: team-name
      provider: ACTIVE_DIRECTORY | AZURE_DEVOPS | BAMBOO_HR | GITHUB | GITLAB | GOOGLE | OKTA | OPSGENIE | SERVICE_NOW | WORKDAY
  # Also see the team entity example below
  
  # Links
  x-cortex-link:
     - name: &#x3C;HUMAN_READABLE_NAME>
       type: &#x3C;TYPE>
       url: &#x3C;URL_TO_LINK>
       description: &#x3C;DESCRIPTION>
  ## Note that type of OPENAPI/ASYNC_API will be displayed in the API Explorer tab in the Cortex UI
  ## Links support relative URLs

  # Dashboards
  x-cortex-dashboards:
   embeds:
     - type: &#x3C;datadog | grafana | newrelic>
       url: &#x3C;URL>

  # Custom Data
  x-cortex-custom-metadata:
     my-key: the value
     another-key:
       this: is
         an: object
     my-key-2:
       value: the actual value for the key
       description: This is the description
     final-key:
       - also
       - use
       - lists!
       
  # Custom entities
  # You cannot create a custom entity type via GitOps, but after creating the type in the UI or API, you can create custom entities via GitOps.
  title: Sally S
  description: Technical writer
  x-cortex-tag: employee-sally
  x-cortex-type: org-employees
  x-cortex-definition:
    location: San Diego
    department: Engineering

  # Parent and child relationships
  x-cortex-type: team
  x-cortex-children:
  - tag: child-team-1
  - tag: child-team-2
  
  x-cortex-type: domain
  x-cortex-parents:
  - tag: parent-team-1
  - tag: parent-team-2
  
  # Entity relationships
  x-cortex-relationships:
  - type: relationship-type-name
    destinations:
    - tag: destination-entity-1
    - tag: destination-entity-2
  

  # Dependencies
  # Required fields: x-cortex-tag, method (required if path present), path (required if method present)
  x-cortex-dependency:
       - tag: &#x3C;TAG>
         method: &#x3C;HTTP_METHOD>
         path: &#x3C;PATH_FOR_METHOD>
         description: &#x3C;DESCRIPTION>
         metadata:
           tags:
             - &#x3C;TAG_1>
             - &#x3C;TAG_2>
           prod: true
           
 # Team configurations
 title: Eng Team
 x-cortex-tag: eng-team
 x-cortex-type: team
 x-cortex-team:
   groups:
   - name: eng-team
     provider: OKTA
   members:
   - name: Eng Manager
     email: name@example.com
     notificationsEnabled: true 
   - name: Product Manager
     email: name@example.com
     notificationsEnabled: false
  x-cortex-children:
    - tag: infra-team
    - tag: sre-team
 
 # Domain configurations
   x-cortex-type: domain
   x-cortex-owners:
     - type: GROUP
       name: cortexapps/engineering
       provider: GITHUB
       interitance: APPEND | FALLBACK | NONE 
   x-cortex-children:
     - tag: chat-service
       tag: chat-database
       


  # Integrations
  
  # Apiiro
  x-cortex-apiiro:
    repositories:
      - alias: alias-one
        repositoryId: repository-one
      - alias: alias-two
        repositoryId: repository-two
    applications:
      - alias: alias-one
        applicationId: application-one
      - alias: alias-two
        applicationId: application-two
  
  # AWS Cloud Control types
  x-cortex-infra:
    aws:
      cloudControl:
      - type: AWS::RDS::DBInstance
        region: us-west-2
        accountId: "123456123456"
        identifier: rds-example
  
  # AWS ECS
  x-cortex-infra:
    aws:
      ecs:
        - clusterArn: &#x3C;CLUSTER_ARN>
          serviceArn: &#x3C;SERVICE_ARN>
        - clusterArn: &#x3C;CLUSTER_ARN_2>
          serviceArn: &#x3C;SERVICE_ARN_2>

  # Azure DevOps
  x-cortex-git:
    azure:
      project: &#x3C;project-name>
      repository: &#x3C;repository-name>
       
  # Azure Resources
  x-cortex-azure:
    ids:
    - id: /subscriptions/1fbb2da1-2ce7-45e4-b85f-676ab8e12345/resourceGroups/GROUP1/providers/Microsoft.Compute/disks/vm1_disk1_3d9f85717666435e9e87e4883d31a7e9
      alias: my-default-alias # alias is optional and only relevant if you have opted into multi account support
    - id: /subscriptions/1fbb2da1-2ce8-45e4-b85f-676ab8e12345/resourceGroups/GROUP2/providers/Microsoft.Compute/disks/vm1_disk1_3d9f85717666435e9e87e4883d31a7e0
      alias: my-other-alias # alias is optional and only relevant if you have opted into multi account support

  # BambooHR
  x-cortex-owners:
    - type: group
      name: &#x3C;TEAM_NAME>
      provider: BAMBOO_HR
      description: # optional

  # Bitbucket
  x-cortex-git:
    bitbucket:
      repository: &#x3C;workspace>/&#x3C;repo>
   x-cortex-owners:
       - type: group
         name: &#x3C;TEAM_NAME>
         provider: BITBUCKET
         description: # optional
         
  # Bugsnag
  x-cortex-bugsnag:
    project: &#x3C;PROJECT_KEY> # projectKey in Bugsnag
     
  # Buildkite
  x-cortex-ci-cd:
    buildkite:
      pipelines:
        - slug: my-buildkite-pipeline-slug-1
        - slug: my-buildkite-pipeline-slug-2
      tags:
        - tag: my-buildkite-tag-1
        - tag: my-buildkite-tag-2

  # Checkmarx
  x-cortex-checkmarx:
    projects:
      - projectName: My Cool Project
      - projectId: 1234
  
  # CircleCI
  x-cortex-circle-ci:
      projects:
      - projectSlug: circleci-projectslug # projectslug in CircleCI
        alias: circleci-alias # alias is optional and only relevant if you have opted into multi account support
  
  # ClickUp
  x-cortex-issues:
    clickup:
      spaces:
      - identifier: 123456789
        identifierType: ID
      folders:
      - identifier: my-folder
        identifierType: NAME
      tags:
      - name: tag a
      - name: tag b
  
  # Codecov
  x-cortex-static-analysis:
    codecov:
      owner: org-name
      repo: my-project
      provider: AZURE_DEVOPS | BITBUCKET | BITBUCKET_SERVER | GITHUB | GITHUB_ENTERPRISE | GITLAB | GITLAB_ENTERPRISE
      flag: flag

  # Coralogix
  x-cortex-coralogix:
    applications:
    - applicationName: my-app # application name tied to alert
      alias: my-alias # alias is optional and only relevant if you have opted into multi account support
  
  # Datadog
  x-cortex-apm:
    datadog:
      serviceTags: # List of tags &#x26; values
       - tag: &#x3C;KEY>
         value: &#x3C;VALUE>
       - tag: &#x3C;KEY>
         value: &#x3C;VALUE>
  .   serviceName: &#x3C;NAME IN DATADOG>
      monitors:
        - monitor-id
        - monitor-id-2
  x-cortex-slos:
     datadog: # List of SLO ids
       - id: slo-id-1
       - id: slo-id-1

  # Dynatrace
  x-cortex-apm:
    dynatrace:
      entityIds:
        - mock-service-id-1
        - mock-service-id-2
      entityNameMatchers:
        - "foo.*"
  x-cortex-slos:
    dynatrace:
      - id: slo-id-1
      - id: slo-id-2

  # Entra ID (Azure Active Directory)
  x-cortex-owners:
     - type: group
       name: &#x3C;TEAM_NAME>
       provider: ACTIVE_DIRECTORY
       description: # optional

  # FireHydrant
  x-cortex-firehydrant:
    services:
      - identifier: ASDF1234
        identifierType: ID
      - identifier: service-slug
        identifierType: SLUG

  # GitHub
  x-cortex-git:
    github:
      repository: &#x3C;org>/&#x3C;repo>
      basepath: &#x3C;SERVICE_NAME> # optional
   x-cortex-owners:
     - type: group
       name: &#x3C;ORGANIZATION>/&#x3C;TEAM> # Must be of form &#x3C;org>/&#x3C;team>
       provider: GITHUB
       description: # optional


  # GitLab
  x-cortex-git:
    gitlab:
      repository: &#x3C;namespace>/&#x3C;project>
      basepath: &#x3C;SERVICE_NAME> # optional
  x-cortex-owners:
    - type: group
      name: Team Name
      provider: GITLAB
      description: This is a description for this owner


  # Google
  x-cortex-owners:
    - type: group
      name: &#x3C;GROUP_NAME>
      provider: GOOGLE
  x-cortex-dependency:
    gcp:
      labels:
        - key: my-key-1
          value: my-value-1
        - key: my-key-2
          value: my-value-2
  x-cortex-infra:
    Google Cloud:
      resources:
        - resourceName: location/function
          projectId: project1
          resourceType: function
        - resourceName: example-bucket
          projectId: project1
          resourceType: storage
  x-cortex-slos:
    gcp:
      - projectId: cortex-gcp-integration
        serviceId: iLE2e4HvR_iVlxAaBbCc12
      - projectId: cortex-gcp-integration
        serviceId: adfdfdafd

  # Grafana
  x-cortex-dashboards:
    embeds:
      - type: grafana
        url: &#x3C;embed_url_to_dashboard>
         
  # incident.io
  x-cortex-incident-io:
    customFields:
    - name: Entity
      value: My Entity
      alias: my-default-alias
    - id: Entity_ID
      value: my-second-entity
      alias: my-other-alias

  # Jira
  x-cortex-issues:
    jira:
      labels:
        - &#x3C;LABEL1>
        - &#x3C;LABEL2>
      components:
        - &#x3C;COMPONENT1>
      projects:
        - project1
  # Optional: Override Cortex default Jira query
      defaultJql: 'status = "In Progress"'

  # Kubernetes
  x-cortex-k8s:
    deployment:
      - identifier: namespace/name
        cluster: dev # optional
      - identifier: experiment/scratch
        cluster: dev
      - identifier: default/cortex
        cluster: prod
    argorollout:
      - identifier: namespace/name
        cluster: dev
    statefulset:
      - identifier: namespace/name
        cluster: dev
    cronjob:
       - identifier: namespace/name
         cluster: dev

  # LaunchDarkly
  x-cortex-launch-darkly:
    projects:
      - key: project-key
        environments: # Optional
          - environmentName: prod
          - environmentName: staging
        alias: alias-1 # alias is optional and only relevant if you have opted into multi account support
      - tag: project-tag
        environments: # Optional
          - environmentName: prod
        alias: alias-2 # alias is optional and only relevant if you have opted into multi account support
    feature-flags:
      - tag: feature-flag-tag
        environments: # Optional
          - environmentName: staging
        alias: alias-3 # alias is optional and only relevant if you have opted into multi account support
  
  # Lightstep
  x-cortex-slos:
    lightstep:
      - streamId: &#x3C;STREAM_ID>
        targets:
        latency:
          - percentile: &#x3C;PERCENTILE>
            target: &#x3C;TARGET>
            slo: &#x3C;SLO>

  # Mend
  x-cortex-static-analysis:
    mend:
      applicationIds:
        - mend_id_1
        - mend_id_2
      projectIds:
        - project_id_1
        - project_id_2
  
  # Microsoft Teams
  x-cortex-microsoft-teams:
    channels:
    - name: team-engineering
      teamName: engineering
      description: This is a description for the engineering channel in Teams.
      notificationsEnabled: true
  
  # New Relic
  x-cortex-apm:
    newrelic:
      applications:
      - applicationId: &#x3C;APP_ID>
        alias: default-app
      tags:
      - tag: tagKey
        value: tagValue
        alias: default-app
  x-cortex-dashboards:
    embeds:
      - type: newrelic
        url: &#x3C;FULL_URL_TO_DASHBOARD>
  
  # While the `applications` wrapper format is the recommended format, Cortex also supports a flat array format:
  # x-cortex-apm:
  #   newrelic:
  #     - applicationId: &#x3C;APP_ID>

  # Okta
  x-cortex-owners:
    - type: group
      name: &#x3C;GROUP_NAME> # group name in Okta
      provider: OKTA
      description: # optional

  # OpsGenie
  x-cortex-oncall:
    opsgenie:
      type: SCHEDULE
      id: &#x3C;SCHEDULE_ID> # Optionally, can use the Rotation UUID instead
  x-cortex-owners:
    - type: group
      name: &#x3C;GROUP_NAME>
      provider: OPSGENIE
      description: # optional
  x-cortex-alerts:
    - type: opsgenie
      tag: &#x3C;KEY>
      value: &#x3C;VALUE>

  # PagerDuty
  x-cortex-oncall:
    pagerduty:
      id: &#x3C;SERVICE_ID> # Service ID
      type: SERVICE
  x-cortex-oncall:
    pagerduty:
      id: &#x3C;SCHEDULE_ID> # Schedule ID
      type: SCHEDULE
  x-cortex-oncall:
    pagerduty:
      id: &#x3C;POLICY_ID> # Escalation Policy ID
      type: ESCALATION_POLICY

  # Prometheus
  x-cortex-slos:
    prometheus:
      - errorQuery: &#x3C;query>
        totalQuery: &#x3C;query>
        slo: &#x3C;slo target number>
        alias: my-prometheus-instance
        name: my-slo-name

  # Rollbar
  x-cortex-rollbar:
    project: &#x3C;PROJECT_NAME> # projectName in Rollbar
     
  # Rootly
  x-cortex-rootly:
    services:
      - id: ASDF1234
      - slug: service-slug

  # Sentry
  x-cortex-sentry:
    projects:
      - name: my-project # projectName in Sentry
      - name: my-second-project
     
  # Semgrep
  x-cortex-semgrep:
    projects:
    - alias: my_org 
      projectId: 1234567
    - alias: other_org
      projectId: 7654321

  # ServiceNow
  x-cortex-servicenow:
    services:
    - tableName: cortex-services
      id: 1
  x-cortex-owners:
    - type: group
      name: My ServiceNow Team
      provider: SERVICE_NOW
      description: This is a description for this owner # optional

  # Slack
<strong>  x-cortex-slack:
</strong>    channels:
    - id: ABCDEF123
      notificationsEnabled: true
      description: This is a description for this Slack channel
    - name: team-engineering
      notificationsEnabled: true
      description: A description for this Slack channel.

  # Snyk
  x-cortex-snyk:
    projects:
      - organizationId:&#x3C;ORGANIZATION_ID>
        projectId: &#x3C;PROJECT_ID>
        source: CODE

  # SonarQube
  x-cortex-static-analysis:
    sonarqube:
      project: &#x3C;PROJECT_KEY> # projectKey in SonarQube
      alias: sonarqube-alias

  # Splunk Observability Cloud (SignalFX)
  x-cortex-slos:
    signalfx:
      - query: &#x3C;FULL_SFX_QUERY>  # Ex. sf_metric:"jvm.memory.max" AND area:"nonheap"
        rollup: &#x3C;ROLLUP>
        target: &#x3C;TARGET>
        lookback: &#x3C;LOOKBACK>
        operation: &#x3C;OPERATION>
  
  # Splunk On-Call (VictorOps)
  x-cortex-oncall:
    victorops:
      type: SCHEDULE
      id: &#x3C;SCHEDULE_ID>
       
  # Sumo Logic
  x-cortex-slos:
    sumologic:
      - id: 000000000001234
      - id: 000000000006789
      
  # Veracode
  x-cortex-static-analysis:
    veracode:
      applicationNames:
        - My Application
        - Second Application
      sandboxes:
        - applicationName: My Application
          sandboxName: My Sandbox
        - applicationName: Second Application
          sandboxName: Second Sandbox
          
  # Wiz
  x-cortex-wiz:
    projects:
      - projectId: 01234567-e65f-4b7b-a8b1-5b642894ec37
      
  # Workday
  x-cortex-owners:
    - type: group
      name: workday-team-tag
      provider: CORTEX
      description: This is a description for this owner.
      
  # xMatters
  x-cortex-oncall:
    xmatters:
      id: engineering_group
      type: SERVICE
</code></pre>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cortex.io/ingesting-data-into-cortex/entities-overview/entities/yaml.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
