Qlik Sense Owl API

The owl API from Qlik Sense — 1 operation(s) for owl.

Operations 1

GET /api/analytics/discovery-agent/adaptive-cards List Adaptive Cards #

Documentation

📖
Documentation
https://qlik.dev/apis/rest/analytics/apps/
📖
APIReference
https://qlik.dev/apis/rest/analytics/apps/
📖
Documentation
https://qlik.dev/apis/rest/analytics/change-stores/
📖
APIReference
https://qlik.dev/apis/rest/analytics/change-stores/
📖
Documentation
https://qlik.dev/apis/rest/analytics/discovery-agent/adaptive-cards/
📖
APIReference
https://qlik.dev/apis/rest/analytics/discovery-agent/adaptive-cards/
📖
Documentation
https://qlik.dev/apis/rest/analytics/odag-apps/
📖
APIReference
https://qlik.dev/apis/rest/analytics/odag-apps/
📖
Documentation
https://qlik.dev/apis/rest/analytics/odag-links/
📖
APIReference
https://qlik.dev/apis/rest/analytics/odag-links/
📖
Documentation
https://qlik.dev/apis/rest/analytics/odag-requests/
📖
APIReference
https://qlik.dev/apis/rest/analytics/odag-requests/
📖
Documentation
https://qlik.dev/apis/rest/analytics/odag-settings/
📖
APIReference
https://qlik.dev/apis/rest/analytics/odag-settings/
📖
Documentation
https://qlik.dev/apis/rest/api-keys/
📖
APIReference
https://qlik.dev/apis/rest/api-keys/
📖
Documentation
https://qlik.dev/apis/rest/apps/
📖
APIReference
https://qlik.dev/apis/rest/apps/
📖
Documentation
https://qlik.dev/apis/rest/assistants/
📖
APIReference
https://qlik.dev/apis/rest/assistants/
📖
Documentation
https://qlik.dev/apis/rest/audits/
📖
APIReference
https://qlik.dev/apis/rest/audits/
📖
Documentation
https://qlik.dev/apis/rest/automation-connections/
📖
APIReference
https://qlik.dev/apis/rest/automation-connections/
📖
Documentation
https://qlik.dev/apis/rest/automation-connectors/
📖
APIReference
https://qlik.dev/apis/rest/automation-connectors/
📖
Documentation
https://qlik.dev/apis/rest/automations/
📖
APIReference
https://qlik.dev/apis/rest/automations/
📖
Documentation
https://qlik.dev/apis/rest/automl-deployments/
📖
APIReference
https://qlik.dev/apis/rest/automl-deployments/
📖
Documentation
https://qlik.dev/apis/rest/automl-predictions/
📖
APIReference
https://qlik.dev/apis/rest/automl-predictions/
📖
Documentation
https://qlik.dev/apis/rest/banners/
📖
APIReference
https://qlik.dev/apis/rest/banners/
📖
Documentation
https://qlik.dev/apis/rest/brands/
📖
APIReference
https://qlik.dev/apis/rest/brands/
📖
Documentation
https://qlik.dev/apis/rest/collections/
📖
APIReference
https://qlik.dev/apis/rest/collections/
📖
Documentation
https://qlik.dev/apis/rest/conditions/
📖
APIReference
https://qlik.dev/apis/rest/conditions/
📖
Documentation
https://qlik.dev/apis/rest/consumption/
📖
APIReference
https://qlik.dev/apis/rest/consumption/
📖
Documentation
https://qlik.dev/apis/rest/core/auth-settings/
📖
APIReference
https://qlik.dev/apis/rest/core/auth-settings/
📖
Documentation
https://qlik.dev/apis/rest/core/ip-policies/
📖
APIReference
https://qlik.dev/apis/rest/core/ip-policies/
📖
Documentation
https://qlik.dev/apis/rest/csp-origins/
📖
APIReference
https://qlik.dev/apis/rest/csp-origins/
📖
Documentation
https://qlik.dev/apis/rest/csrf-token/
📖
APIReference
https://qlik.dev/apis/rest/csrf-token/
📖
Documentation
https://qlik.dev/apis/rest/data-alerts/
📖
APIReference
https://qlik.dev/apis/rest/data-alerts/
📖
Documentation
https://qlik.dev/apis/rest/data-assets/
📖
APIReference
https://qlik.dev/apis/rest/data-assets/
📖
Documentation
https://qlik.dev/apis/rest/data-connections/
📖
APIReference
https://qlik.dev/apis/rest/data-connections/
📖
Documentation
https://qlik.dev/apis/rest/data-credentials/
📖
APIReference
https://qlik.dev/apis/rest/data-credentials/
📖
Documentation
https://qlik.dev/apis/rest/data-files/
📖
APIReference
https://qlik.dev/apis/rest/data-files/
📖
Documentation
https://qlik.dev/apis/rest/data-governance/data-products/
📖
APIReference
https://qlik.dev/apis/rest/data-governance/data-products/
📖
Documentation
https://qlik.dev/apis/rest/data-governance/data-qualities/
📖
APIReference
https://qlik.dev/apis/rest/data-governance/data-qualities/
📖
Documentation
https://qlik.dev/apis/rest/data-governance/trust-scores/
📖
APIReference
https://qlik.dev/apis/rest/data-governance/trust-scores/
📖
Documentation
https://qlik.dev/apis/rest/data-qualities/
📖
APIReference
https://qlik.dev/apis/rest/data-qualities/
📖
Documentation
https://qlik.dev/apis/rest/data-sets/
📖
APIReference
https://qlik.dev/apis/rest/data-sets/
📖
Documentation
https://qlik.dev/apis/rest/data-sources/
📖
APIReference
https://qlik.dev/apis/rest/data-sources/
📖
Documentation
https://qlik.dev/apis/rest/data-stores/
📖
APIReference
https://qlik.dev/apis/rest/data-stores/
📖
Documentation
https://qlik.dev/apis/rest/di-projects/
📖
APIReference
https://qlik.dev/apis/rest/di-projects/
📖
Documentation
https://qlik.dev/apis/rest/direct-access-agents/
📖
APIReference
https://qlik.dev/apis/rest/direct-access-agents/
📖
Documentation
https://qlik.dev/apis/rest/encryption/
📖
APIReference
https://qlik.dev/apis/rest/encryption/
📖
Documentation
https://qlik.dev/apis/rest/extensions/
📖
APIReference
https://qlik.dev/apis/rest/extensions/
📖
Documentation
https://qlik.dev/apis/rest/glossaries/
📖
APIReference
https://qlik.dev/apis/rest/glossaries/
📖
Documentation
https://qlik.dev/apis/rest/groups/
📖
APIReference
https://qlik.dev/apis/rest/groups/
📖
Documentation
https://qlik.dev/apis/rest/identity-providers/
📖
APIReference
https://qlik.dev/apis/rest/identity-providers/
📖
Documentation
https://qlik.dev/apis/rest/items/
📖
APIReference
https://qlik.dev/apis/rest/items/
📖
Documentation
https://qlik.dev/apis/rest/knowledgebases/
📖
APIReference
https://qlik.dev/apis/rest/knowledgebases/
📖
Documentation
https://qlik.dev/apis/rest/licenses/
📖
APIReference
https://qlik.dev/apis/rest/licenses/
📖
Documentation
https://qlik.dev/apis/rest/lineage-graphs/
📖
APIReference
https://qlik.dev/apis/rest/lineage-graphs/
📖
Documentation
https://qlik.dev/apis/rest/login/
📖
APIReference
https://qlik.dev/apis/rest/login/
📖
Documentation
https://qlik.dev/apis/rest/ml/
📖
APIReference
https://qlik.dev/apis/rest/ml/
📖
Documentation
https://qlik.dev/apis/rest/notes/
📖
APIReference
https://qlik.dev/apis/rest/notes/
📖
Documentation
https://qlik.dev/apis/rest/notifications/
📖
APIReference
https://qlik.dev/apis/rest/notifications/
📖
Documentation
https://qlik.dev/apis/rest/oauth-clients/
📖
APIReference
https://qlik.dev/apis/rest/oauth-clients/
📖
Documentation
https://qlik.dev/apis/rest/oauth-tokens/
📖
APIReference
https://qlik.dev/apis/rest/oauth-tokens/
📖
Documentation
https://qlik.dev/apis/rest/questions/
📖
APIReference
https://qlik.dev/apis/rest/questions/
📖
Documentation
https://qlik.dev/apis/rest/quotas/
📖
APIReference
https://qlik.dev/apis/rest/quotas/
📖
Documentation
https://qlik.dev/apis/rest/reload-tasks/
📖
APIReference
https://qlik.dev/apis/rest/reload-tasks/
📖
Documentation
https://qlik.dev/apis/rest/reloads/
📖
APIReference
https://qlik.dev/apis/rest/reloads/
📖
Documentation
https://qlik.dev/apis/rest/report-templates/
📖
APIReference
https://qlik.dev/apis/rest/report-templates/
📖
Documentation
https://qlik.dev/apis/rest/reports/
📖
APIReference
https://qlik.dev/apis/rest/reports/
📖
Documentation
https://qlik.dev/apis/rest/roles/
📖
APIReference
https://qlik.dev/apis/rest/roles/
📖
Documentation
https://qlik.dev/apis/rest/scheduling/tasks/
📖
APIReference
https://qlik.dev/apis/rest/scheduling/tasks/
📖
Documentation
https://qlik.dev/apis/rest/sharing-tasks/
📖
APIReference
https://qlik.dev/apis/rest/sharing-tasks/
📖
Documentation
https://qlik.dev/apis/rest/spaces/
📖
APIReference
https://qlik.dev/apis/rest/spaces/
📖
Documentation
https://qlik.dev/apis/rest/tasks/
📖
APIReference
https://qlik.dev/apis/rest/tasks/
📖
Documentation
https://qlik.dev/apis/rest/temp-contents/
📖
APIReference
https://qlik.dev/apis/rest/temp-contents/
📖
Documentation
https://qlik.dev/apis/rest/tenant-settings/
📖
APIReference
https://qlik.dev/apis/rest/tenant-settings/
📖
Documentation
https://qlik.dev/apis/rest/tenants/
📖
APIReference
https://qlik.dev/apis/rest/tenants/
📖
Documentation
https://qlik.dev/apis/rest/themes/
📖
APIReference
https://qlik.dev/apis/rest/themes/
📖
Documentation
https://qlik.dev/apis/rest/transports/
📖
APIReference
https://qlik.dev/apis/rest/transports/
📖
Documentation
https://qlik.dev/apis/rest/ui-config/
📖
APIReference
https://qlik.dev/apis/rest/ui-config/
📖
Documentation
https://qlik.dev/apis/rest/users/
📖
APIReference
https://qlik.dev/apis/rest/users/
📖
Documentation
https://qlik.dev/apis/rest/web-integrations/
📖
APIReference
https://qlik.dev/apis/rest/web-integrations/
📖
Documentation
https://qlik.dev/apis/rest/web-notifications/
📖
APIReference
https://qlik.dev/apis/rest/web-notifications/
📖
Documentation
https://qlik.dev/apis/rest/webhooks/
📖
APIReference
https://qlik.dev/apis/rest/webhooks/
📖
Documentation
https://qlik.dev/apis/rest/workflows/automation-connections/
📖
APIReference
https://qlik.dev/apis/rest/workflows/automation-connections/
📖
Documentation
https://qlik.dev/apis/rest/workflows/automation-connectors/
📖
APIReference
https://qlik.dev/apis/rest/workflows/automation-connectors/
📖
Documentation
https://qlik.dev/apis/rest/workflows/automations/
📖
APIReference
https://qlik.dev/apis/rest/workflows/automations/
📖
Documentation
https://qlik.dev/apis/rest
📖
Authentication
https://qlik.dev/authenticate

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/qliksense-owl-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

qliksense-owl-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: analytics/discovery-agent/adaptive-cards Owl API
  version: ''
servers:
- url: https://{tenant}.{region}.qlikcloud.com
  variables:
    region:
      default: us
      description: The region the tenant is hosted in
    tenant:
      default: your-tenant
      description: Name of the tenant that will be called
tags:
- name: owl
paths:
  /api/analytics/discovery-agent/adaptive-cards:
    get:
      tags:
      - owl
      summary: List Adaptive Cards
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdaptiveCards'
          description: Returns the requested Adaptive Cards.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Bad request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Unauthorized, JWT invalid or not provided.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: 'Forbidden, the requesting JWT does not allow retrieval of Adaptive Cards (error code: OWL-003).'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Internal server error.
      parameters:
      - in: query
        name: analysisTypes
        style: form
        schema:
          type: array
          items:
            $ref: '#/components/schemas/AnalysisTypeEnum'
          example:
          - spikesUp
          - spikesDown
        explode: false
        required: false
        description: 'Filter by analysis type. Repeat the parameter to include multiple types. When this parameter is present, all matching results are returned regardless of ranking.

          '
      - in: query
        name: appIds
        style: form
        schema:
          type: array
          items:
            type: string
        explode: false
        examples:
          singleAppId:
            value:
            - 9b89de1e-9a1b-11ef-9974-563d08542bef
            summary: Single app
          multipleAppIds:
            value:
            - 9b89de1e-9a1b-11ef-9974-563d08542bef
            summary: Multiple apps
        required: false
        description: 'Filter by app ID(s). Use this to scope results to specific apps. When combined with measures, returns only cards matching BOTH criteria (AND logic). Repeat the parameter to supply multiple app IDs (OR logic within appIds).


          **Recommendation:** Use consistent parameter order for better HTTP cache hit rates:

          1. appIds (if present)

          2. measures (if present)

          3. other filters

          4. pagination (limit, next, prev)


          **Example - One app, multiple measures:**

          `?appIds=app-123&measures=Sum(Sales)&measures=Avg(Revenue)&measures=Count(Orders)`


          **Example - Multiple apps, one measure:**

          `?appIds=app-retail&appIds=app-wholesale&measures=Sum(Sales)`


          **Example - Multiple apps, multiple measures:**

          `?appIds=app-sales&appIds=app-hr&measures=Sum(Revenue)&measures=Avg(Salary)`

          '
      - in: query
        name: breakdowns
        style: form
        schema:
          type: array
          items:
            type: string
            example: Region:EMEA
        explode: false
        examples:
          singleBreakdown:
            value:
            - Region:EMEA
            summary: Single breakdown selection
          multipleBreakdowns:
            value:
            - Region:EMEA
            summary: Multiple breakdown selections
        required: false
        description: 'Filter by one or more breakdown selections in the form `dimension:value` (example `Region:EMEA`). Values are selected from the UI dropdown — not free text — and should match available dimension/value pairs.

          Repeat the parameter to supply multiple breakdowns; results match any of the provided breakdown pairs.

          '
      - in: query
        name: categories
        style: form
        schema:
          type: array
          items:
            type: string
        explode: false
        examples:
          single:
            value:
            - 6db0fd8e-2115-4ac6-8d51-1729adbc4cfd
            summary: Single category
          multiple:
            value:
            - 6db0fd8e-2115-4ac6-8d51-1729adbc4cfd
            summary: Multiple categories
        required: false
        description: Filter by category IDs from the business glossary. Category filtering is not currently applied to the result set.
      - in: query
        name: comparisonPeriods
        style: form
        schema:
          type: array
          items:
            $ref: '#/components/schemas/AggregationFrequencyEnum'
        explode: false
        required: false
        description: 'Filter by comparison period. Example values: `D`, `W`, `M`, `Q`, `Y`. When this parameter is present, all matching results are returned regardless of ranking.

          '
      - in: query
        name: dimensions
        style: form
        schema:
          type: array
          items:
            type: string
        explode: false
        examples:
          singleDimension:
            value:
            - Date
            summary: Single dimension
          multipleDimensions:
            value:
            - Date
            summary: Multiple dimensions
        required: false
        description: Filter by dimension(s). Matching is case-sensitive; leading and trailing whitespace will be trimmed. Repeat the parameter to supply multiple dimensions.
      - in: query
        name: limit
        schema:
          type: integer
          format: int32
          default: 10
          maximum: 100
          minimum: 1
        required: false
        description: The maximum number of resources to return for a request. The limit must be an integer between 1 and 100 (inclusive).
      - in: query
        name: measures
        style: form
        schema:
          type: array
          items:
            type: string
        explode: false
        examples:
          singleMeasure:
            value:
            - Sum(Sales)
            summary: Single measure selection
          multipleMeasures:
            value:
            - Sum(Sales)
            summary: Multiple measure selections
        required: false
        description: Filter by measure(s). Matching is case-sensitive; leading and trailing whitespace will be trimmed. Repeat the parameter to supply multiple measures.
      - in: query
        name: metricIds
        style: form
        schema:
          type: array
          items:
            type: string
        explode: false
        examples:
          oneMetricId:
            value:
            - 123e4567-e89b-12d3-a456-426614174000
            summary: Single metric
          multipleMetricIds:
            value:
            - 123e4567-e89b-12d3-a456-426614174000
            summary: Multiple metrics
        required: false
        description: Filter by metric ID. Repeat the parameter to supply multiple IDs. When omitted, returns cards for all metrics visible to the caller.
      - in: query
        name: next
        schema:
          type: integer
          format: int32
          example: 10
        required: false
        description: The numeric offset to the next page of resources. Provide either the next or prev parameter, but not both.
      - in: query
        name: prev
        schema:
          type: integer
          format: int32
          example: 5
        required: false
        description: The numeric offset to the previous page of resources. Provide either the next or prev parameter, but not both.
      - in: query
        name: sort
        schema:
          enum:
          - creationTime
          - +creationTime
          - -creationTime
          type: string
          default: +creationTime
        required: false
        description: The field to sort by, with +/- prefix indicating sort order
      - in: query
        name: timeRangeEnd
        schema:
          type: string
          format: date-time
          example: '2023-10-31T00:00:00.000Z'
        required: false
        description: Exclusive upper bound for filtering by analysis result end time. Use ISO 8601 format.
      - in: query
        name: timeRangeStart
        schema:
          type: string
          format: date-time
          example: '2023-10-01T00:00:00.000Z'
        required: false
        description: Inclusive lower bound for filtering by analysis result end time. Use ISO 8601 format.
      - in: query
        name: type
        schema:
          enum:
          - measures
          - dimensions
          - breakdowns
          type: string
        required: false
        description: Filter by Adaptive Card category. When omitted, cards from all categories are returned.
      - in: header
        name: Authorization
        schema:
          type: string
        required: true
        description: JWT containing tenant credentials.
      description: 'Retrieves Adaptive Cards for in-app metrics. Supports fetching a single card by metric ID or multiple cards by a list of metric IDs. Supports filtering by app IDs, measures, dimensions, categories, breakdown dimensions, analysis types, and triggered time range. When filtering by measures, use the `appIds` parameter to scope results to specific apps, as the same measure expression can exist across multiple apps.


        When called without any filter parameters, only the top-ranked result per metric is returned. When any filtering parameter is supplied (`metricIds`, `dimensions`, `measures`, `appIds`, `breakdowns`, `analysisTypes`, `comparisonPeriods`, `timeRangeStart`, `timeRangeEnd`), ranking is not applied and all matching results are returned.'
      operationId: getAdaptiveCards
      x-qlik-stability: stable
      x-qlik-visibility: public
      x-qlik-deprecated: false
      x-qlik-tier:
        tier: '1'
        limit: 1000
components:
  schemas:
    ConditionType:
      enum:
      - general
      - compare
      type: string
      example: general
      description: Condition evaluation type
    BreakDownDimension:
      type: object
      example:
        filter:
          type: values
          values:
          - Europe
          - Asia
        values:
        - Europe
        - Asia
        dimension: Region
      required:
      - dimension
      properties:
        filter:
          $ref: '#/components/schemas/BreakdownFilter'
        values:
          type: array
          items:
            type: string
            example: Europe
            description: A dimension value to include in the breakdown.
          example:
          - Europe
          - Asia
          description: List of values (kept for backward compatibility)
        dimension:
          type: string
          example: Region
          description: The dimension name
      description: 'Breakdown dimension with filtering capabilities.

        - `dimension` is required.

        - `values` and `filter` are optional. If both are omitted (or `values` is empty and `filter` is null), the API interprets this as "analyze all values" for the given dimension.

        '
    AdaptiveCardsLinks:
      type: object
      properties:
        next:
          $ref: '#/components/schemas/Href'
        prev:
          $ref: '#/components/schemas/Href'
        self:
          $ref: '#/components/schemas/Href'
    TopBottomType:
      enum:
      - top
      - bottom
      type: string
      example: top
      description: Whether to select top or bottom values
    BreakdownSearchFilter:
      type: object
      required:
      - searchType
      properties:
        searchType:
          $ref: '#/components/schemas/SearchType'
        searchString:
          type: string
          example: Marketing
          description: String to search for. If empty, all dimension values are analyzed.
      description: Search-based filtering configuration. If searchString is empty or not provided, all dimension values will be analyzed (no filtering applied).
    TopBottomUnit:
      enum:
      - numerical
      - percentage
      type: string
      example: numerical
      description: Unit for top/bottom selection
    AggregationFrequencyEnum:
      enum:
      - D
      - W
      - M
      - Q
      - Y
      type: string
      example: D
      description: Comparison period for the analysis.
    AdaptiveCard:
      type: object
      description: Adaptive Card
    Errors:
      type: object
      example:
        errors:
        - code: OWL-001
          title: Invalid request.
          details: ''
        - code: OWL-002
          title: Unauthorized access.
          detail: You may need to login to access this resource.
        - code: OWL-003
          title: Resource not found.
          detail: The resource either never existed, or may have been deleted.
        - code: OWL-013
          title: The analysis can not be started because the analysis frequency quota has been met.
          detail: ''
        - code: OWL-015
          title: Too many breakdown dimensions.
          detail: ''
        - code: OWL-016
          title: Too many breakdown values.
          detail: ''
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    StatusEnum:
      enum:
      - 0
      - 1
      type: integer
      example: 1
      description: Status of the in app metrics (0 - inactive, 1 - active).
    BreakdownFilter:
      type: object
      example:
        type: values
        values:
        - Europe
        - Asia
        - North America
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/BreakdownFilterType'
        search:
          $ref: '#/components/schemas/BreakdownSearchFilter'
        values:
          type: array
          items:
            type: string
            example: Europe
            description: A dimension value to filter by.
          example:
          - Europe
          - Asia
          description: List of values to filter by (used when type is Values)
        exclude:
          type: boolean
          default: false
          description: 'When set to true, the filter values are excluded from analysis instead of included.

            - If exclude is false or omitted, only the matched values are analyzed (max 50).

            - If exclude is true, all dimension values EXCEPT the matched values are analyzed (max 50).

            '
        condition:
          $ref: '#/components/schemas/BreakdownConditionFilter'
        topBottom:
          $ref: '#/components/schemas/BreakdownTopBottomFilter'
      description: Filter configuration for a breakdown dimension
    AggregationType:
      enum:
      - sum
      - avg
      - count
      - max
      - min
      type: string
      example: sum
      description: Aggregation operation type
    AdaptiveCards:
      type: object
      required:
      - data
      - links
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AdaptiveCard'
        links:
          $ref: '#/components/schemas/AdaptiveCardsLinks'
        inAppMetrics:
          type: array
          items:
            $ref: '#/components/schemas/FormattedInAppMetricRecord'
    ComparisonType:
      enum:
      - '>'
      - '>='
      - <
      - <=
      - '> <'
      - '>= <='
      type: string
      example: '>'
      description: Comparison operation type
    Href:
      type: object
      example:
        href: http://example.com
      properties:
        href:
          type: string
          format: uri
          example: http://example.com
    ValueType:
      enum:
      - calculated
      - fixed
      type: string
      example: fixed
      description: Whether the value is calculated or fixed
    AnalysisTypeEnum:
      enum:
      - recordHigh
      - recordLow
      - aboveModel
      - belowModel
      - spikesUp
      - spikesDown
      - newBaseLine
      - trendChanges
      type: string
      example: spikesUp
      description: Type of analysis performed on the in-app metric.
    FormattedInAppMetricRecord:
      type: object
      required:
      - id
      - tenantId
      - appId
      - userId
      - creationTime
      - updateTime
      - definition
      - status
      - links
      properties:
        id:
          type: string
          example: 67cab2cf3d74cae279940b99
          description: The ID of the in-app metric in the database.
        appId:
          type: string
          example: 9b89de1e-9a1b-11ef-9974-563d08542bef
          description: The ID of the app.
        links:
          type: object
          properties:
            self:
              $ref: '#/components/schemas/Href'
        status:
          $ref: '#/components/schemas/StatusEnum'
        userId:
          type: string
          example: FyPG6xWp6prDU6BXQ3g7LY9gWR_YRkkx
          description: The ID of the user who created the in-app-metric.
        tenantId:
          type: string
          example: efSCcpNYuayTysONkUcE3F80zYQ_LV9w
          description: The ID of the tenant who owns the in-app metric.
        definition:
          $ref: '#/components/schemas/FormattedInAppMetricDefinition'
        updateTime:
          type: string
          example: '2023-10-01T12:00:00Z'
          description: The time when the in-app metric was last updated.
        creationTime:
          type: string
          example: '2023-10-01T12:00:00Z'
          description: The time when the in-app metric was created.
    BreakdownFilterType:
      enum:
      - values
      - search
      - condition
      - topBottom
      type: string
      example: values
      description: Type of breakdown filter
    BreakdownConditionFilter:
      type: object
      required:
      - conditionType
      - comparisonType
      properties:
        field:
          type: string
          example: Sales
          description: Primary field for calculated values
        value:
          type: number
          example: 100
          description: Fixed numeric value (used by single comparisons with Compare.Fixed and General.Fixed)
        field2:
          type: string
          example: Cost
          description: Additional field used only by General.Calculated for single comparisons
        toField:
          type: string
          example: MaxPrice
          description: Upper bound field for range comparisons with Calculated value type (used with > < or >= <=)
        toValue:
          type: number
          example: 500
          description: Upper bound value for range comparisons with Fixed value type (used with > < or >= <=)
        fromField:
          type: string
          example: MinPrice
          description: Lower bound field for range comparisons with Calculated value type (used with > < or >= <=)
        fromValue:
          type: number
          example: 100
          description: Lower bound value for range comparisons with Fixed value type (used with > < or >= <=)
        valueType:
          $ref: '#/components/schemas/ValueType'
        aggregation:
          $ref: '#/components/schemas/AggregationType'
        aggregation2:
          $ref: '#/components/schemas/AggregationType'
        conditionType:
          $ref: '#/components/schemas/ConditionType'
        toAggregation:
          $ref: '#/components/schemas/AggregationType'
        comparisonType:
          $ref: '#/components/schemas/ComparisonType'
        fromAggregation:
          $ref: '#/components/schemas/AggregationType'
      description: 'Condition-based filtering configuration. Supports single comparisons (>, >=, <, <=) and range comparisons (> <, >= <=).


        **Single Comparisons:**

        - Compare type: Uses `value` (Fixed) or `aggregation`+`field` (Calculated)

        - General type: Uses `aggregation`+`field` and either `value` (Fixed) or `aggregation2`+`field2` (Calculated)


        **Range Comparisons (> < or >= <=):**

        - Compare type: Uses `fromValue`+`toValue` (Fixed) or `fromAggregation`+`fromField`+`toAggregation`+`toField` (Calculated)

        - General type: Uses `aggregation`+`field` plus either `fromValue`+`toValue` (Fixed) or `fromAggregation`+`fromField`+`toAggregation`+`toField` (Calculated)

        '
    SearchType:
      enum:
      - contains
      - exactMatch
      - startsWith
      - endsWith
      - beginningOfWord
      type: string
      example: contains
      description: Search operation type
    Categories:
      type: object
      properties:
        glossaryId:
          type: string
          example: 5a7482f5-892a-4194-9f48-366ccb48a1e7
          description: The ID of the glossary that the category belongs to.
        categoryIds:
          type: array
          items:
            type: string
            example: 6db0fd8e-2115-4ac6-8d51-1729adbc4cfd
            description: Category ID
          example:
          - 6db0fd8e-2115-4ac6-8d51-1729adbc4cfd
          description: The IDs of the categories.
    FormattedInAppMetricDefinition:
      type: object
      required:
      - name
      - dimension
      - measure
      - analysisTypes
      properties:
        name:
          type: string
          example: Profit by region Europe
        status:
          $ref: '#/components/schemas/StatusEnum'
        measure:
          type: string
          example: Sum({<Region='Europe'>} Profit)
        upwardIs:
          $ref: '#/components/schemas/UpwardIsEnum'
        dimension:
          type: string
          example: ShipDate
        categories:
          type: array
          items:
            $ref: '#/components/schemas/Categories'
          example:
          - glossaryId: fe7df4a8-abb4-42da-95e7-4ee8db22a7cb
            categoryIds:
            - 6db0fd8e-2115-4ac6-8d51-1729adbc4cfd
        glossaryId:
          type: string
          example: 5a7482f5-892a-4194-9f48-366ccb48a1e7
          description: The ID of the glossary that the in-app metric belongs to.
        description:
          type: string
          example: This metric shows the profit by region in Europe.
          description: A description of the in-app metric.
        analysisTypes:
          type: array
          items:
            $ref: '#/components/schemas/AnalysisTypeEnum'
          example:
          - recordHigh
          - aboveModel
          - spikesUp
        comparisonPeriods:
          type: array
          items:
            $ref: '#/components/schemas/AggregationFrequencyEnum'
          example:
          - D
          - W
          - M
          - Q
          - Y
        breakDownDimensions:
          type: array
          items:
            $ref: '#/components/schemas/BreakDownDimension'
        nextExecutionOffset:
          type: integer
          example: 7
          description: Number of days to offset the execution of analyses for this aggregation period.
    UpwardIsEnum:
      enum:
      - 0
      - 1
      - -1
      type: integer
      example: 1
      description: Indicates whether an increase in the metric is considered neutral (0), positive (1) or negative (-1).
    BreakdownTopBottomFilter:
      type: object
      required:
      - type
      - unit
      - number
      properties:
        type:
          $ref: '#/components/schemas/TopBottomType'
        unit:
          $ref: '#/components/schemas/TopBottomUnit'
        number:
          type: integer
          example: 10
          description: Number of top/bottom values to select
      description: Top/bottom filtering configuration
    Error:
      type: object
      required:
      - code
      - title
      properties:
        code:
          type: string
          example: OWL-001
          description: The error code is in the form of 'OWL-xxx', ranges from 'OWL-001' to 'OWL-016'.
        title:
          type: string
        detail:
          type: string