Cisco XDR Observe API

This set of routes allow to get in depth investigation data about a threat You might use them at the start of any investigation to get the full picture and get to know if something has been seen in your environment.

OpenAPI Specification

cisco-xdr-observe-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: IROH-INT Enrich Observe API
  version: 1.0.107
  license:
    name: All Rights Reserved
    url: https://www.cisco.com
  contact:
    name: Cisco Security Business Group -- Advanced Threat
    email: cisco-intel-api-support@cisco.com
  description: 'IROH Integrations: configure and query Threat Response modules'
  x-provenance:
    method: harvested
    authored_by: Cisco XDR
    harvested_by: API Evangelist
    harvested_on: '2026-08-19'
    first_party: true
    note: Published by Cisco. Retrieved unmodified except for this x-provenance block.
    provider_published: true
  x-evidence:
  - type: source
    url: https://visibility.amp.cisco.com/iroh/iroh-enrich/index.html
  - type: raw
    url: https://visibility.amp.cisco.com/iroh/iroh-enrich/swagger.json
servers:
- url: https://visibility.amp.cisco.com/
security:
- iroh: []
- AuthorizationHeader: []
- oauth2:
  - telemetry
  - integration
  - private-intel
  - admin
  - cognitive
  - profile
  - inspect
  - asset
  - event
  - feedback
  - sse
  - registry
  - users
  - investigation
  - invite
  - casebook
  - orbital
  - enrich
  - oauth
  - vault
  - response
  - notification
  - global-intel:read
  - webhook
  - ao
tags:
- name: Observe
  description: This set of routes allow to get in depth investigation data about a threat You might use them at the start of any investigation to get the full picture and get to know if something has been seen in your environment.
paths:
  /iroh/iroh-enrich/observe/observables:
    post:
      x-no-doc: false
      tags:
      - Observe
      description: '[required scopes](/iroh/doc/iroh-auth/#scopes): `enrich/observables/observe:read`


        This route queries all enabled modules supporting the enrichment protocol with the supplied `Observables` in order to get any related `Threat Context`'
      responses:
        '200':
          description: A `Bundle` including Any CTIM Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/edn:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
        '401':
          description: A `NormalizedError` including a `trace_id`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/edn:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
        '500':
          description: A `NormalizedError` including a `trace_id`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/edn:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
      parameters:
      - in: query
        name: mids
        description: Use this parameter to query only some Modules passing their Ids
        required: false
        example:
        - a78f09b4-16fa-4617-8bbf-f6044284ec0f
        - 36716d80-2bd7-47fc-a179-cde2a0a8c5fe
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - in: query
        name: flags
        description: Use this parameter to use Modules which ModuleType flag matches with items provided as an argument.
        required: false
        example:
        - cisco
        - threat-intel
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - in: query
        name: product_categories
        description: Use this parameter to use Modules which ModuleType product_category matches with items provided as an argument.
        required: false
        example:
        - cloud-firewall
        - itsm
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      summary: Enrich Observables
      requestBody:
        content:
          application/json:
            schema:
              description: An Observable list
              example:
              - type: domain
                value: ilo.brenz.pl
              - type: email
                value: no-reply@internetbadguys.com
              - type: sha256
                value: 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
              type: array
              items:
                $ref: '#/components/schemas/Observable'
          application/x-yaml:
            schema:
              description: An Observable list
              example:
              - type: domain
                value: ilo.brenz.pl
              - type: email
                value: no-reply@internetbadguys.com
              - type: sha256
                value: 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
              type: array
              items:
                $ref: '#/components/schemas/Observable'
          application/edn:
            schema:
              description: An Observable list
              example:
              - type: domain
                value: ilo.brenz.pl
              - type: email
                value: no-reply@internetbadguys.com
              - type: sha256
                value: 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
              type: array
              items:
                $ref: '#/components/schemas/Observable'
          application/transit+json:
            schema:
              description: An Observable list
              example:
              - type: domain
                value: ilo.brenz.pl
              - type: email
                value: no-reply@internetbadguys.com
              - type: sha256
                value: 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
              type: array
              items:
                $ref: '#/components/schemas/Observable'
          application/transit+msgpack:
            schema:
              description: An Observable list
              example:
              - type: domain
                value: ilo.brenz.pl
              - type: email
                value: no-reply@internetbadguys.com
              - type: sha256
                value: 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
              type: array
              items:
                $ref: '#/components/schemas/Observable'
        description: An Observable list
        required: true
  /iroh/iroh-enrich/observe/targets:
    post:
      x-no-doc: false
      tags:
      - Observe
      description: '[required scopes](/iroh/doc/iroh-auth/#scopes): `enrich/targets/observe:read`


        This route queries all enabled modules supporting the enrichment protocol with the supplied `Observables` in order to get any related `Threat Context`'
      responses:
        '200':
          description: A `Bundle` including Any CTIM Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/edn:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/ObserveEnvelopedObserveBundle'
        '401':
          description: A `NormalizedError` including a `trace_id`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/edn:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/NormalizedError-401'
        '500':
          description: A `NormalizedError` including a `trace_id`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/edn:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/transit+json:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
            application/transit+msgpack:
              schema:
                $ref: '#/components/schemas/NormalizedError-500'
      parameters:
      - in: query
        name: mids
        description: Use this parameter to query only some Modules passing their Ids
        required: false
        example:
        - a78f09b4-16fa-4617-8bbf-f6044284ec0f
        - 36716d80-2bd7-47fc-a179-cde2a0a8c5fe
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      summary: Enrich Targets
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObserveTargetsBody'
          application/x-yaml:
            schema:
              $ref: '#/components/schemas/ObserveTargetsBody'
          application/edn:
            schema:
              $ref: '#/components/schemas/ObserveTargetsBody'
          application/transit+json:
            schema:
              $ref: '#/components/schemas/ObserveTargetsBody'
          application/transit+msgpack:
            schema:
              $ref: '#/components/schemas/ObserveTargetsBody'
        description: A list of Observables and an Optional Time Window
        required: true
components:
  schemas:
    AttackPattern:
      type: object
      properties:
        description:
          example: string
          description: A description of object, which may be detailed.
          type: string
        abstraction_level:
          example: aggregate
          description: The CAPEC abstraction level for patterns describing techniques to attack a system.
          type: string
          enum:
          - detailed
          - standard
          - aggregate
          - meta
          - category
        schema_version:
          example: 1.3.30
          description: CTIM schema version for this entity.
          type: string
        revision:
          example: 10
          description: A monotonically increasing revision, incremented each time the object is changed.
          type: integer
          format: int64
        type:
          example: attack-pattern
          type: string
          enum:
          - attack-pattern
        created:
          type: string
          format: date-time
        source:
          example: string
          description: Represents the source of the intelligence that led to the creation of the entity.
          type: string
        external_ids:
          example:
          - string
          description: "It is used to store a list of external identifiers that can be linked to the incident, providing a reliable and manageable way to correlate and group related events across multiple data sources. It is especially useful in larger organizations that rely on multiple security information and event management (SIEM) systems to detect security incidents. For instance, it can be used to track events across different network sensors, intrusion detection and prevention systems (IDPS), or log management platforms. \n The field can also be used to facilitate automation and orchestration workflows, where additional information can be shared among incident management systems. It can be used to cross-reference with other external tools such as threat intelligence feeds and vulnerability scanners."
          type: array
          items:
            type: string
        modified:
          type: string
          format: date-time
        short_description:
          example: string
          description: A single line, short summary of the object.
          type: string
        title:
          example: string
          description: A short title for this object, used as primary display and reference value.
          type: string
        external_references:
          example:
          - source_name: string
            description: string
            url: string
            hashes:
            - string
            external_id: string
          description: "Specifies a list of external references which refers to non-CTIM information.\n\nSimilar to `external_ids` field with major differences:\n\n- `external_ids` field is used to store a list of external identifiers that can be used to link entities across different data sources. These identifiers are typically standardized and well-known, such as CVE IDs, US-CERT advisories, or other industry-standard threat intelligence feeds. The `external_ids` field can be used to facilitate automation and orchestration workflows, where additional information can be shared among incident management systems. \n\n- `external_references` field, on the other hand, is used to provide a more general mechanism for linking entities to external sources of information. The `external_references` field can include references to blog posts, articles, external documents, threat intelligence reports, and other sources of information that may not have a standardized format or identifier."
          type: array
          items:
            $ref: '#/components/schemas/ExternalReference'
        source_uri:
          example: string
          description: URI of the source of the intelligence that led to the creation of the entity.
          type: string
        x_mitre_platforms:
          example:
          - string
          description: ATT&CK Technique.Platforms.
          type: array
          items:
            type: string
        language:
          example: string
          description: 'The `language` field is used to specify the primary language of the affected system or the target of an attack. It can be used to provide additional context and information about the entity. The primary purpose of this field is to help analysts filter and prioritize entities based on their knowledge and expertise of different languages.


            For example, if an incident involves an attack on a system in a country where a specific language is predominant, the `language` field can be used to indicate that language, which can help analysts to quickly identify and respond to incidents that may be geographically or culturally relevant. This information can be used to prioritize incidents based on their potential impact. The `language` field can also be used to help with correlation of incidents across different systems and regions, as well as to help with data analysis and reporting.'
          type: string
        id:
          example: string
          description: Globally unique URI identifying this object.
          type: string
        tlp:
          example: green
          description: 'TLP stands for [Traffic Light Protocol](https://www.us-cert.gov/tlp), which indicates precisely how a resource is intended to be shared, replicated, copied, etc.


            It is used to indicate the sensitivity of the information contained within the message. This allows recipients to determine the appropriate handling and dissemination of the information based on their clearance level and need-to-know.


            For example, an entity containing information about a critical vulnerability in a widely-used software might be marked as `red`, indicating that it should only be shared with a small group of highly trusted individuals who need to know in order to take appropriate action. On the other hand, a message containing more general information about security threats might be marked as `amber` or `green`, indicating that it can be shared more broadly within an organization.'
          type: string
          enum:
          - white
          - green
          - red
          - amber
        x_mitre_data_sources:
          example:
          - string
          description: ATT&CK Technique.Data Sources.
          type: array
          items:
            type: string
        kill_chain_phases:
          example:
          - kill_chain_name: string
            phase_name: string
          description: A kill chain is a series of steps that an attacker must go through to successfully achieve their objective. The concept was originally developed by the military, but has been adapted to the cybersecurity field to describe the steps an attacker goes through to compromise a target system and achieve their goal.
          type: array
          items:
            $ref: '#/components/schemas/KillChainPhase'
        client_id:
          type: string
        x_mitre_contributors:
          example:
          - string
          description: ATT&CK Technique.Contributors.
          type: array
          items:
            type: string
        timestamp:
          example: '2016-01-01T01:01:01.000Z'
          description: The time this object was created at, or last modified.
          type: string
          format: date-time
      additionalProperties: false
      required:
      - description
      - schema_version
      - type
      - short_description
      - title
      - id
    Assertion:
      example:
        name: cisco:ctr:ad:host_domain_name
        value: string
      type: object
      properties:
        name:
          example: cisco:ctr:ad:host_domain_name
          description: An open vocabulary containing well known assertion types
          type: string
        value:
          example: string
          type: string
      additionalProperties: false
      required:
      - name
      - value
    LibraryLoadType:
      example:
        time:
          start_time: '2016-01-01T01:01:01.000Z'
          end_time: '2016-01-01T01:01:01.000Z'
        process_id: 10
        process_name: string
        process_guid: 10
        process_username: string
        type: LibraryLoadEvent
        dll_library_name: string
        dll_library_path: string
      type: object
      properties:
        time:
          $ref: '#/components/schemas/ObservedTime'
        process_id:
          example: 10
          type: integer
          format: int64
        process_name:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_guid:
          example: 10
          type: integer
          format: int64
        process_username:
          example: string
          description: String with at most 1024 characters.
          type: string
        type:
          example: LibraryLoadEvent
          type: string
          enum:
          - LibraryLoadEvent
        dll_library_name:
          example: string
          description: String with at most 1024 characters.
          type: string
        dll_library_path:
          example: string
          description: String with at most 2048 characters.
          type: string
      additionalProperties: false
      required:
      - time
      - process_id
      - process_name
      - type
      - dll_library_name
      - dll_library_path
    CompositeIndicatorExpression:
      example:
        operator: and
        indicator_ids:
        - string
      type: object
      properties:
        operator:
          example: and
          type: string
          enum:
          - not
          - or
          - and
        indicator_ids:
          example:
          - string
          type: array
          items:
            type: string
      additionalProperties: false
      required:
      - operator
      - indicator_ids
    NormalizedError-500:
      example:
        error: unknown server error
        error_description: An unknown error has occurred during the enrichment
        trace_id: 2e790e2c-e7fe-42ed-a18b-7413d9f1f4b0
      type: object
      properties:
        error:
          type: string
        error_description:
          type: string
        error_code:
          type: string
        error_uri:
          type: string
        trace_id:
          type: string
        schema.core.AnythingSchema@3c6f0b88: {}
      additionalProperties: {}
    OperatingSystem:
      example:
        prevalence: Often
        name: string
        version: string
        cpe_id: string
        class: Android
      type: object
      properties:
        prevalence:
          example: Often
          description: Defines the different regularities that guide the applicability of platforms.
          type: string
          enum:
          - Undetermined
          - Sometimes
          - Often
          - Rarely
        name:
          example: string
          description: String with at most 1024 characters.
          type: string
        version:
          example: string
          description: String with at most 1024 characters.
          type: string
        cpe_id:
          example: string
          description: String with at most 1024 characters.
          type: string
        class:
          example: Android
          description: Class of Operating System.
          type: string
      additionalProperties: false
      required:
      - prevalence
    NetflowType:
      example:
        parent_process_name: string
        byte_count_in: 10
        process_guid: 10
        process_path: string
        traffic:
          destination_host_name: string
          protocol: 10
          source_ip: string
          destination_subnet: string
          destination_ip: string
          source_subnet: string
          destination_port: 10
          direction: incoming
          source_port: 10
        flow_time: '2016-01-01T01:01:01.000Z'
        time:
          start_time: '2016-01-01T01:01:01.000Z'
          end_time: '2016-01-01T01:01:01.000Z'
        parent_process_account: string
        type: NetflowEvent
        process_account_type: string
        parent_process_path: string
        parent_process_id: 10
        parent_process_args: string
        process_name: string
        process_account: string
        parent_process_account_type: string
        process_hash: string
        process_id: 10
        parent_process_hash: string
        process_username: string
        byte_count_out: 10
        process_args: string
      type: object
      properties:
        parent_process_name:
          example: string
          description: String with at most 1024 characters.
          type: string
        byte_count_in:
          example: 10
          type: integer
          format: int64
        process_guid:
          example: 10
          type: integer
          format: int64
        process_path:
          example: string
          description: String with at most 1024 characters.
          type: string
        traffic:
          $ref: '#/components/schemas/Traffic'
        flow_time:
          example: '2016-01-01T01:01:01.000Z'
          description: Schema definition for all date or timestamp values.  Serialized as a string, the field should follow the rules of the [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) standard.
          type: string
          format: date-time
        time:
          $ref: '#/components/schemas/ObservedTime'
        parent_process_account:
          example: string
          description: String with at most 1024 characters.
          type: string
        type:
          example: NetflowEvent
          type: string
          enum:
          - NetflowEvent
        process_account_type:
          example: string
          description: String with at most 1024 characters.
          type: string
        parent_process_path:
          example: string
          description: String with at most 1024 characters.
          type: string
        parent_process_id:
          example: 10
          type: integer
          format: int64
        parent_process_args:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_name:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_account:
          example: string
          description: String with at most 1024 characters.
          type: string
        parent_process_account_type:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_hash:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_id:
          example: 10
          type: integer
          format: int64
        parent_process_hash:
          example: string
          description: String with at most 1024 characters.
          type: string
        process_username:
          example: string
          description: String with at most 1024 characters.
          type: string
        byte_count_out:
          example: 10
          type: integer
          format: int64
        process_args:
          example: string
          description: String with at most 1024 characters.
          type: string
      additionalProperties: false
      required:
      - traffic
      - time
      - type
      - process_name
      - process_id
    OpenIOCSpecification:
      example:
        type: OpenIOC
        open_IOC: string
      description: An indicator which contains an XML blob of an openIOC indicator.
      type: object
      properties:
        type:
          example: OpenIOC
          type: string
          enum:
          - OpenIOC
        open_IOC:
          example: string
          type: string
      additionalProperties: false
      required:
      - type
      - open_IOC
    ObservedTime:
      example:
        start_time: '2016-01-01T01:01:01.000Z'
        end_time: '2016-01-01T01:01:01.000Z'
      description: Period of time when a cyber observation is valid. `start_time` must come before `end_time` (if specified).
      type: object
      properties:
        start_time:
          example: '2016-01-01T01:01:01.000Z'
          description: Time of the observation. If the observation was made over a period of time, than this field indicates the start of that period.
          type: string
          format: date-time
        end_time:
          example: '2016-01-01T01:01:01.000Z'
          description: If the observation was made over a period of time, than this field indicates the end of that period.
          type: string
          format: date-time
      additionalProperties: false
      required:
      - start_time
    ActionType:
      example:
        type: alert
      type: object
      properties:
        type:
          example: alert
          type: string
          enum:
          - stop
          - save
          - delete
          - remediate
          - redirect
          - alert
          - query
          - augment
          - snapshot
          - update
          - allow
          - scan
          - investigate
          - modify
          - sync
          - start
          - pause
          - deny
          - substitute
          - distill
          - move
          - restart
          - other
          - detonate
          - response
          - set
          - notify
          - report
          - restore
          - get
          - throttle
          - mitigate
          - resume
          - locate
          - contain
      additionalProperties: false
      required:
      - type
    Incident:
      type: object
      properties:
        description:
          example: string
          description: A description of object, which may be detailed.
          type: string
        assignees:
          example:
          - string
          description: A set of owners assigned to this incident.
          type: array
          items:
            type: string
        detection_sources:
          example:
          - string
          description: A set of sources that contributed threat detections to the incident.
          type: array
          items:
            type: string
        meta:
          $ref: '#/components/schemas/MetaData'
        schema_version:
          example: 1.3.30
          description: CTIM schema version for this entity.
          type: string
        revision:
          example: 10
          description: A monotonically increasing revision, incremented each time the object is changed.
          type: integer
          format: int64
        type:
          example: incident
          type: string
          enum:
          - incident
        created:
          type: string
          format: date-time
        source:
          example: string
          description: Represents the source of the intelligence that led to the creation of the entity.
          type: string
        external_ids:
          example:
          - string
          description: "It is used to store a list of external identifiers that can be linked to the incident, providing a reliable and manageable way to correlate and group related events across multiple data sources. It is especially useful in larger organizations that rely on multiple security information and event management (SIEM) systems to detect security incidents. For instance, it can be used to track events across different network sensors, intrusion detection and prevention systems (IDPS), or log management platforms. \n The field can also be used to facilitate automation and orchestration workflows, where additional information can be shared among incident management systems. It can be used to cross-reference with other external tools such as threat intelligence feeds and vulnerability scanners."
          type: array
          items:
            type: string
        modified:
          type: string
          format: date-time
        short_description:
          example: string
          description: A single line, short summary of the object.
          type: string
        title:
          example: string
          description: A short title for this object, used as primary display and reference value.
          type: string
        incident_time:
          $ref: '#/components/schemas/IncidentTime'
        external_references:
          example:
          - source_name: string
            description: string
            url: string
            hashes:
            - string
            external_id: string
          description: "Specifies a list of external references which refers to non-CTIM information.\n\nSimilar to `external_ids` field with major differences:\n\n- `external_ids` field is used to store a list of external identifiers that can be used to link entities across different data sources. These identifiers are typically standardized and well-known, such as CVE IDs, US-CERT advisories, or other industry-standard threat intelligence feeds. The `external_ids` field can be used to facilitate automation and orchestration workflows, where additional informa

# --- truncated at 32 KB (315 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cisco-xdr/refs/heads/main/openapi/cisco-xdr-observe-api-openapi.yml