Instana Application Analyze API

The API endpoints of this group expose our analyze functionality. It includes: **Grouped Metrics** Two group endpoints to retrieve metrics for traces and calls. **List of traces and its detailed information** You can also [search and filter all traces](#operation/getTraces) and retrieve [all details](#operation/getTraceDownload) attached to the trace. Furthermore, you can also retrive [all details](#operation/getCallDetails) of a call. ## Parameters ### Mandatory Parameters (only for group Endpoints): **group** It is mandatory to select a tag by which the calls and traces are grouped for the distinct endpoint call * *groupByTag* select a tag by which the calls and traces are grouped * a full list of available tags can be retrieved from the [application tag catalog](#operation/getApplicationTagCatalog) * for the trace endpoint only two tags are reasonable and working: `trace.endpoint.name` and `trace.service.name` which indicate the entry endpoint or service for the trace * *groupByTagSecondLevelKey* tags of type KEY_VALUE_PAIR need a second parameter e.g for `kubernetes.deployment.label` you would need provide the label you want to groupBy here. ### Optional Parameters **pagination** * *offset* set the starting point for the data retrieval * *retrievalSize* you set the number of returned values * *ingestionTime* if you want to paginate through your result set you are interested in having the data for a fixed time point, the results set has a `cursor` class that has a ingestionTime property that indicates what you have to enter here. **order** **timeFrame** As in our UI you can specify the timeframe for metrics retrieval. ``` windowSize to (ms) (unix-timestamp) <----------------------| ``` The timeFrame might be adjusted to fit the metric granularity so that there is no partial bucket. For example, if the query timeFrame is 08:02 - 09:02 and the metric granularity is 5 minutes, the timeFrame will be adjusted to 08:05 - 09:00. The adjusted timeFrame will be returned in the response payload. If the query does not have any metric with granularity, a default granularity will be used for adjustment. **tagFilters** As in the UI you able to filter your query by a tag. To get a list of all available tags you can query the [application tag catalog](#operation/getApplicationTagCatalog) * *name* The name of the tag as returned by the catalog * *value* The filter value of the tag, possible types are: * "STRING" alphanumerical values, valid operators: "EQUALS", "CONTAINS", "NOT_EQUAL", "NOT_CONTAIN", "NOT_EMPTY", "IS_EMPTY" * "NUMBER" numerical values, valid operators: "EQUALS", "LESS_THAN" "GREATER_THAN" * "KEY_VALUE_PAIR" * *operator* one of the valid operators for the type of the selected tag **metrics** A list of metric objects that define which metric should be returned, with the defined aggregation. Each metrics objects consists of minimum two items: 1. *metric* select a particular metric, available metrics in this context are * Latency Mean * Error Rate * Traces Sum 2. *aggregation* depending on the selected metric different aggregations are available e.g. SUM, MEAN, P95. The aforementioned [catalog endpoint](#operation/getApplicationCatalogMetrics) gives you the metrics with the available aggregations. **Note**: The above mentioned list of available metrics with its supported metrics can also be found in [Get grouped call metrics](#operation/getCallGroup) and [Get grouped trace metrics](#operation/getTraceGroups). 3. *granularity* * If it is not set you will get a an aggregated value for the selected timeframe * If the granularity is set you will get data points with the specified granularity **in seconds** * The granularity should not be greater than the `windowSize` (important: `windowSize` is expressed in **milliseconds**) * The granularity should not be set too small relative to the `windowSize` to avoid creating an excessively large number of data points (max 600) ### Defaults: **timeFrame** ``` "timeFrame": { "windowSize": 60000, "to": {current timestamp} } ```

OpenAPI Specification

instana-application-analyze-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  contact:
    email: support@instana.com
    name: © Instana
    url: http://instana.com
  termsOfService: https://www.instana.com/terms-of-use/
  title: Instana REST API documentation Application Analyze API
  version: 1.307.1417
  x-ibm-ahub-try: true
  x-logo:
    altText: instana logo
    backgroundColor: '#FAFBFC'
    url: header-logo.svg
  description: "Searching for answers and best pratices? Check our [IBM Instana Community](https://community.ibm.com/community/user/aiops/communities/community-home?CommunityKey=58f324a3-3104-41be-9510-5b7c413cc48f).\n\n<div style=\"background-color:#e6f0ff; padding: 12px; border-left: 6px solid #0052cc; font-size: 14px; display: flex; align-items: center;\">\n  <img src=\"https://img.icons8.com/ios-filled/50/0052cc/info.png\" width=\"18\" height=\"18\" style=\"margin-right: 8px;\" alt=\"info icon\"/>\n  <span>\n    <b>Our API documentation is moving to</b> \n    <a href=\"https://developer.ibm.com/apis/catalog/instana--instana-rest-api/Introduction\" target=\"_blank\">API Hub</a>\n\t — please update your bookmarks now, as the current site will be deprecated after Release-306.\n  </span>\n</div>\n\n## Overview\nThe Instana REST API provides programmatic access to the Instana platform. It can be used to retrieve data available through the Instana UI Dashboard -- metrics, events, traces, etc -- and also to automate configuration tasks such as user management.\n\n### Navigating the API documentation\nThe API endpoints are grouped by product area and functionality. This generally maps to how our UI Dashboard is organized, hopefully making it easier to locate which endpoints you'd use to fetch the data you see visualized in our UI. The [UI sections](https://www.ibm.com/docs/en/instana-observability/current?topic=working-user-interface#navigation-menu) include:\n- Websites & Mobile Apps\n- Applications\n- Infrastructure\n- Synthetic Monitoring\n- Events\n- Automation\n- Service Levels\n- Settings\n- etc\n\n### Rate Limiting\nA rate limit is applied to API usage. Up to 5,000 calls per hour can be made. How many remaining calls can be made and when this call limit resets, can inspected via three headers that are part of the responses of the API server.\n\n- **X-RateLimit-Limit:** Shows the maximum number of calls that may be executed per hour.\n- **X-RateLimit-Remaining:** How many calls may still be executed within the current hour.\n- **X-RateLimit-Reset:** Time when the remaining calls will be reset to the limit. For compatibility reasons with other rate limited APIs, this date is not the date in milliseconds, but instead in seconds since 1970-01-01T00:00:00+00:00.\n\n### Further Reading\nWe provide additional documentation for our REST API in our [product documentation](https://www.ibm.com/docs/en/instana-observability/current?topic=apis-web-rest-api). Here you'll also find some common queries for retrieving data and configuring Instana.\n\n## Getting Started with the REST API\n\n### API base URL\nThe base URL for an specific instance of Instana can be determined using the tenant and unit information.\n- `base`: This is the base URL of a tenant unit, e.g. `https://test-example.instana.io`. This is the same URL that is used to access the Instana user interface.\n- `apiToken`: Requests against the Instana API require valid API tokens. An initial API token can be generated via the Instana user interface. Any additional API tokens can be generated via the API itself.\n\n### Curl Example\nHere is an Example to use the REST API with Curl. First lets get all the available metrics with possible aggregations with a GET call.\n\n```bash\ncurl --request GET \\\n  --url https://test-instana.instana.io/api/application-monitoring/catalog/metrics \\\n  --header 'authorization: apiToken xxxxxxxxxxxxxxxx'\n```\n\nNext we can get every call grouped by the endpoint name that has an error count greater then zero. As a metric we could get the mean error rate for example.\n\n```bash\ncurl --request POST \\\n  --url https://test-instana.instana.io/api/application-monitoring/analyze/call-groups \\\n  --header 'authorization: apiToken xxxxxxxxxxxxxxxx' \\\n  --header 'content-type: application/json' \\\n  --data '{\n  \"group\":{\n      \"groupbyTag\":\"endpoint.name\"\n  },\n  \"tagFilters\":[\n  \t{\n  \t\t\"name\":\"call.error.count\",\n  \t\t\"value\":\"0\",\n  \t\t\"operator\":\"GREATER_THAN\"\n  \t}\n  ],\n  \"metrics\":[\n  \t{\n  \t\t\"metric\":\"errors\",\n  \t\t\"aggregation\":\"MEAN\"\n  \t}\n  ]\n  }'\n```\n\n### Generating REST API clients\n\nThe API is specified using the [OpenAPI v3](https://github.com/OAI/OpenAPI-Specification) (previously known as Swagger) format.\nYou can download the current specification at our [GitHub API documentation](https://instana.github.io/openapi/openapi.yaml).\n\nOpenAPI tries to solve the issue of ever-evolving APIs and clients lagging behind. Please make sure that you always use the latest version of the generator, as a number of improvements are regularly made.\nTo generate a client library for your language, you can use the [OpenAPI client generators](https://github.com/OpenAPITools/openapi-generator).\n\n#### Go\nFor example, to generate a client library for Go to interact with our backend, you can use the following script; mind replacing the values of the `UNIT_NAME` and `TENANT_NAME` environment variables using those for your tenant unit:\n\n```bash\n#!/bin/bash\n\n### This script assumes you have the `java` and `wget` commands on the path\n\nexport UNIT_NAME='myunit' # for example: prod\nexport TENANT_NAME='mytenant' # for example: awesomecompany\n\n//Download the generator to your current working directory:\nwget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/4.3.1/openapi-generator-cli-4.3.1.jar -O openapi-generator-cli.jar --server-variables \"tenant=${TENANT_NAME},unit=${UNIT_NAME}\"\n\n//generate a client library that you can vendor into your repository\njava -jar openapi-generator-cli.jar generate -i https://instana.github.io/openapi/openapi.yaml -g go \\\n    -o pkg/instana/openapi \\\n    --skip-validate-spec\n\n//(optional) format the Go code according to the Go code standard\ngofmt -s -w pkg/instana/openapi\n```\n\nThe generated clients contain comprehensive READMEs, and you can start right away using the client from the example above:\n\n```go\nimport instana \"./pkg/instana/openapi\"\n\n// readTags will read all available application monitoring tags along with their type and category\nfunc readTags() {\n\tconfiguration := instana.NewConfiguration()\n\tconfiguration.Host = \"tenant-unit.instana.io\"\n\tconfiguration.BasePath = \"https://tenant-unit.instana.io\"\n\n\tclient := instana.NewAPIClient(configuration)\n\tauth := context.WithValue(context.Background(), instana.ContextAPIKey, instana.APIKey{\n\t\tKey:    apiKey,\n\t\tPrefix: \"apiToken\",\n\t})\n\n\ttags, _, err := client.ApplicationCatalogApi.GetApplicationTagCatalog(auth)\n\tif err != nil {\n\t\tfmt.Fatalf(\"Error calling the API, aborting.\")\n\t}\n\n\tfor _, tag := range tags {\n\t\tfmt.Printf(\"%s (%s): %s\\n\", tag.Category, tag.Type, tag.Name)\n\t}\n}\n```\n\n#### Java\nFollow the instructions provided in the official documentation from [OpenAPI Tools](https://github.com/OpenAPITools) to download the [openapi-generator-cli.jar](https://github.com/OpenAPITools/openapi-generator?tab=readme-ov-file#13---download-jar).\n\nDepending on your environment, use one of the following java http client implementations which will create a valid client for our OpenAPI specification:\n```\n//Nativ Java HTTP Client\njava -jar openapi-generator-cli.jar generate -i https://instana.github.io/openapi/openapi.yaml -g java -o pkg/instana/openapi --skip-validate-spec  -p dateLibrary=java8 --library native\n\n//Spring WebClient\njava -jar openapi-generator-cli.jar generate -i https://instana.github.io/openapi/openapi.yaml -g java -o pkg/instana/openapi --skip-validate-spec  -p dateLibrary=java8,hideGenerationTimestamp=true --library webclient\n\n//Spring RestTemplate\njava -jar openapi-generator-cli.jar generate -i https://instana.github.io/openapi/openapi.yaml -g java -o pkg/instana/openapi --skip-validate-spec  -p dateLibrary=java8,hideGenerationTimestamp=true --library resttemplate\n\n```\n"
servers:
- description: Instana Backend
  url: https://{unit}-{tenant}.instana.io
  variables:
    tenant:
      default: tenant
      description: Customer tenant unit
    unit:
      default: unit
      description: Customer tenant name
- description: Instana Self-Hosted Backend
  url: https://{domain}
  variables:
    domain:
      default: example.com
      description: Customer Self-Hosted domain
tags:
- name: Application Analyze
  description: "The API endpoints of this group expose our analyze functionality.\nIt includes:\n\n**Grouped Metrics**\n\nTwo group endpoints to retrieve metrics for traces and calls. \n\n**List of traces and its detailed information**\n\nYou can also [search and filter all traces](#operation/getTraces) and retrieve [all details](#operation/getTraceDownload) attached to the trace. Furthermore, you can also retrive [all details](#operation/getCallDetails) of a call.\n\n## Parameters\n### Mandatory Parameters (only for group Endpoints):\n**group** It is mandatory to select a tag by which the calls and traces are grouped for the distinct endpoint call\n* *groupByTag* select a tag by which the calls and traces are grouped \n  * a full list of available tags can be retrieved from the [application tag catalog](#operation/getApplicationTagCatalog)\n  * for the trace endpoint only two tags are reasonable and working: `trace.endpoint.name` and `trace.service.name` which indicate the entry endpoint or service for the trace\n* *groupByTagSecondLevelKey* tags of type KEY_VALUE_PAIR need a second parameter e.g for `kubernetes.deployment.label` you would need provide the label you want to groupBy here.\n\n### Optional Parameters\n**pagination**\n* *offset* set the starting point for the data retrieval\n* *retrievalSize* you set the number of returned values\n* *ingestionTime* if you want to paginate through your result set you are interested in having the data for a fixed time point, the results set has a `cursor` class that has a ingestionTime property that indicates what you have to enter here.\n**order**\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n  windowSize           to\n     (ms)       (unix-timestamp)\n<----------------------|\n```\nThe timeFrame might be adjusted to fit the metric granularity so that there is no partial bucket. For example, if the query timeFrame is 08:02 - 09:02 and the metric granularity is 5 minutes, the timeFrame will be adjusted to 08:05 - 09:00. The adjusted timeFrame will be returned in the response payload. If the query does not have any metric with granularity, a default granularity will be used for adjustment.\n\n**tagFilters** As in the UI you able to filter your query by a tag. To get a list of all available tags you can query the [application tag catalog](#operation/getApplicationTagCatalog)\n* *name* The name of the tag as returned by the catalog\n* *value* The filter value of the tag, possible types are:\n  * \"STRING\" alphanumerical values, valid operators: \"EQUALS\", \"CONTAINS\", \"NOT_EQUAL\", \"NOT_CONTAIN\", \"NOT_EMPTY\",  \"IS_EMPTY\"\n  * \"NUMBER\" numerical values, valid operators: \"EQUALS\", \"LESS_THAN\" \"GREATER_THAN\"\n  * \"KEY_VALUE_PAIR\" \n* *operator* one of the valid operators for the type of the selected tag\n\n**metrics** A list of metric objects that define which metric should be returned, with the defined aggregation. Each metrics objects consists of minimum two items:\n1. *metric* select a particular metric, available metrics in this context are\n   * Latency Mean\n   * Error Rate\n   * Traces Sum\n2. *aggregation* depending on the selected metric different aggregations are available e.g. SUM, MEAN, P95. The aforementioned [catalog endpoint](#operation/getApplicationCatalogMetrics) gives you the metrics with the available aggregations.\n\n**Note**: The above mentioned list of available metrics with its supported metrics can also be found in [Get grouped call metrics](#operation/getCallGroup) and [Get grouped trace metrics](#operation/getTraceGroups).\n\n3. *granularity* \n   * If it is not set you will get a an aggregated value for the selected timeframe\n   * If the granularity is set you will get data points with the specified granularity **in seconds**\n    * The granularity should not be greater than the `windowSize` (important: `windowSize` is expressed in **milliseconds**)\n    * The granularity should not be set too small relative to the `windowSize` to avoid creating an excessively large number of data points (max 600)\n\n### Defaults:\n**timeFrame**\n```\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n"
paths:
  /api/application-monitoring/analyze/backend-correlation:
    get:
      description: 'Resolves backend trace IDs using correlation IDs from website and mobile app monitoring beacons.

        For more information on Application Analyze please access the https://developer.ibm.com/apis/catalog/instana--instana-rest-api/Applications#application-analyze.'
      operationId: getCorrelatedTraces
      parameters:
      - description: 'Here, the `backendTraceId` is typically used which can be obtained from the `Get all beacons` API endpoint for website and mobile app monitoring.

          For XHR, fetch, or HTTP beacons, the `beaconId` retrieved from the same API endpoint can also serve as the `correlationId`.

          '
        example: 0v7f55879ca12345
        in: query
        name: correlationId
        required: true
        schema:
          type: string
          maxLength: 128
          minLength: 0
      responses:
        '200':
          content:
            application/json:
              example:
              - traceId: c606ccf3578135c6
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BackendTraceReference'
          description: OK
      security:
      - ApiKeyAuth:
        - Default
      summary: Resolve Trace IDs from Monitoring Beacons.
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
  /api/application-monitoring/analyze/call-groups:
    post:
      operationId: getCallGroup
      parameters:
      - description: If enabled, fill the missing data points in the metric result with timestamp and value 0.
        in: query
        name: fillTimeSeries
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            example:
              group:
                groupbyTag: service.name
                groupbyTagEntity: DESTINATION
              metrics:
              - aggregation: SUM
                metric: calls
              - aggregation: P75
                metric: latency
                granularity: 360
              includeInternal: false
              includeSynthetic: false
              order:
                by: calls
                direction: DESC
              pagination:
                retrievalSize: 20
              tagFilterExpression:
                type: EXPRESSION
                logicalOperator: AND
                elements:
                - type: TAG_FILTER
                  name: call.type
                  operator: EQUALS
                  entity: NOT_APPLICABLE
                  value: DATABASE
                - type: TAG_FILTER
                  name: service.name
                  operator: EQUALS
                  entity: DESTINATION
                  value: ratings
              timeFrame:
                to: '1688366990000'
                windowSize: '600000'
            schema:
              $ref: '#/components/schemas/GetCallGroups'
      responses:
        '200':
          content:
            application/json:
              example:
                items:
                - name: ratings
                  timestamp: 1688366520000
                  cursor:
                    '@class': .IngestionOffsetCursor
                    ingestionTime: 1688980829000
                    offset: 1
                  metrics:
                    latency.p75.360:
                    - - 1688366520000
                      - 1
                canLoadMore: false
                totalHits: 1
                totalRepresentedItemCount: 1
                totalRetainedItemCount: 1
                adjustedTimeframe:
                  windowSize: 360000
                  to: 1688366880000
              schema:
                $ref: '#/components/schemas/CallGroupsResult'
          description: OK
      security:
      - ApiKeyAuth:
        - Default
      summary: Get grouped call metrics
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
      description: "This endpoint retrieves the metrics for calls.\r\n\r\n## Deprecated Parameters\r\n**tagFilters:** The list of tag filters. It is replaced by **tagFilterExpression**, **includeInternal** and **includeSynthetic**.\r\n\r\n## Supported Aggregation on Get Grouped call metrics\r\n\r\n| Metric           | Description                                                                                | Allowed Aggregations |\r\n|------------------|--------------------------------------------------------------------------------------------|----------------------|\r\n| `calls`          | Number of received calls                                                                   | `PER_SECOND`, `SUM`  |\r\n| `erroneousCalls` | The number of erroneous calls                                                              |`PER_SECOND`, `SUM`   |\r\n| `latency`        | Latency of received calls in milliseconds                                                  | `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `SUM`, `MEAN`, `MAX`, `MIN`        |\r\n| `errors`         | Error rate of received calls. A value between 0 and 1                                      | `MEAN`               |\r\n| `services`       | The number of Services                                                                     |`DISTINCT_COUNT`      |"
  /api/application-monitoring/analyze/trace-groups:
    post:
      operationId: getTraceGroups
      parameters:
      - description: If enabled, fill the missing data points in the metric result with timestamp and value 0.
        in: query
        name: fillTimeSeries
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            example:
              group:
                groupbyTag: trace.endpoint.name
                groupbyTagEntity: NOT_APPLICABLE
              metrics:
              - aggregation: SUM
                metric: latency
              order:
                by: latency
                direction: ASC
              pagination:
                retrievalSize: 20
              tagFilterExpression:
                type: EXPRESSION
                logicalOperator: AND
                elements:
                - type: TAG_FILTER
                  name: call.type
                  operator: EQUALS
                  entity: NOT_APPLICABLE
                  value: DATABASE
                - type: TAG_FILTER
                  name: service.name
                  operator: EQUALS
                  entity: DESTINATION
                  value: ratings
            schema:
              $ref: '#/components/schemas/GetTraceGroups'
      responses:
        '200':
          content:
            application/json:
              example:
                items:
                - name: GET /api/cart-total
                  timestamp: 1688542673148
                  cursor:
                    '@class': .IngestionOffsetCursor
                    ingestionTime: 1688543264000
                    offset: 1
                  metrics:
                    latency.sum:
                    - - 1688543260000
                      - 31
                canLoadMore: true
                totalHits: 2595
                totalRepresentedItemCount: 2595
                totalRetainedItemCount: 2595
                adjustedTimeframe:
                  windowSize: 600000
                  to: 1687939110000
              schema:
                $ref: '#/components/schemas/TraceGroupsResult'
          description: OK
      security:
      - ApiKeyAuth:
        - Default
      summary: Get grouped trace metrics
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
      description: "The API endpoint retrieves metrics for traces that are grouped in the endpoint or service name.\n\nThe supported `groupbyTag` are `trace.endpoint.name` and `trace.service.name`. \n\n## Supported Aggregation on Get grouped trace metrics\n\n| Metric           | Description                                                                                | Allowed Aggregations |\n|------------------|--------------------------------------------------------------------------------------------|----------------------|\n| `erroneousCalls` | The number of erroneous calls                                                              |`PER_SECOND`, `SUM`   |\n| `latency`        | Latency of received calls in milliseconds                                                  | `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `SUM`, `MEAN`, `MAX`, `MIN`        |\n| `errors`         | Error rate of received calls. A value between 0 and 1                                      | `MEAN`               |\n"
  /api/application-monitoring/analyze/traces:
    post:
      operationId: getTraces
      requestBody:
        content:
          application/json:
            examples:
              analyze/traces:
                description: analyze/traces
                value:
                  includeInternal: false
                  includeSynthetic: false
                  pagination:
                    retrievalSize: 1
                  tagFilterExpression:
                    type: EXPRESSION
                    logicalOperator: AND
                    elements:
                    - type: TAG_FILTER
                      name: endpoint.name
                      operator: EQUALS
                      entity: DESTINATION
                      value: GET /
                    - type: TAG_FILTER
                      name: service.name
                      operator: EQUALS
                      entity: DESTINATION
                      value: groundskeeper
                  order:
                    by: traceLabel
                    direction: DESC
            schema:
              $ref: '#/components/schemas/GetTraces'
      responses:
        '200':
          content:
            application/json:
              example:
                items:
                - trace:
                    id: 506aef767d8ec147
                    label: sdk.reloading-config-cache
                    startTime: 1725601763937
                    duration: 0
                    erroneous: false
                    service:
                      id: 84b5041665ce4ed6f60b47d1fd96c12d4132c9ed
                      label: appdata-processor
                      types: []
                      technologies: []
                      snapshotIds: []
                      entityType: SERVICE
                    endpoint: null
                  cursor:
                    '@class': .IngestionOffsetCursor
                    ingestionTime: 1725601787000
                    offset: 1
                canLoadMore: true
                totalHits: 154
                totalRepresentedItemCount: 154
                totalRetainedItemCount: 154
                adjustedTimeframe:
                  windowSize: 600000
                  to: 1725601780000
              schema:
                $ref: '#/components/schemas/TraceResult'
          description: OK
          x-example: TraceResult
      security:
      - ApiKeyAuth:
        - Default
      summary: Get all traces
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
      description: "Use the endpoint to retrieve a list of traces.\r\n\r\n**Deprecated Parameter:** `tagFilters` is deprecated. It is replaced by `tagFilterExpression`.\r\n"
  /api/application-monitoring/v2/analyze/traces/{id}:
    get:
      description: 'Use this API endpoint if one wants to retrive comprehensive details of a particular trace.

        For more information on Application Analyze please access the https://developer.ibm.com/apis/catalog/instana--instana-rest-api/Applications#application-analyze.'
      operationId: getTraceDownload
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
          description: An Instana generated unique identifier for a trace.
      - in: query
        name: retrievalSize
        schema:
          type: integer
          format: int32
          description: 'The number of records to retrieve in a single request.

            For example, when retrievalSize is set to 30, offset is 20, and ingestionTime is 1725519793, the API request will fetch 30 records starting from the 21st record after the specified `ingestionTime`.

            Minimum value is 1 and maximum value is 10000.

            '
          maximum: 10000
          minimum: 1
      - in: query
        name: offset
        schema:
          type: integer
          format: int32
          description: 'The number of records to be skipped from the `ingestionTime`.

            For example: when `offset` is 20 and `ingestionTime` is 1725519793, the API response should have records starting from the 21st record after the specified `ingestionTime`.

            Note that if `offset` value is not empty, `ingestionTime` can''t be empty.

            '
      - in: query
        name: ingestionTime
        schema:
          type: integer
          format: int64
          description: 'The timestamp indicating the starting point from which data was ingested.

            The format of the timestamp is in Unix epoch Time.

            For example, `Thursday, 5 September 2024 07:03:13 GMT` can be represented as `1725519793`.

            '
      responses:
        '200':
          content:
            application/json:
              example:
                items:
                - id: daa9141549aea210
                  timestamp: 1688544599223
                  parentId: null
                  foreignParentId: null
                  name: GET /api/shipping/cities/dk
                  duration: 30
                  minSelfTime: 1
                  networkTime: null
                  callCount: 1
                  errorCount: 0
                  destination:
                    service:
                      id: ce4b152bac7b99744d8314838e49b799afd6dd96
                      label: nginx-web
                    endpoint:
                      id: wAS2omB44e0EK4xqL7f-e-wt4C4
                      label: upstream shipping
                      type: HTTP
                    technologies: []
                  cursor:
                    '@class': .IngestionOffsetCursor
                    ingestionTime: 1688547327000
                    offset: 1
                canLoadMore: false
                totalHits: 3
                totalRepresentedItemCount: 3
                totalRetainedItemCount: 3
              schema:
                $ref: '#/components/schemas/TraceDownloadResult'
          description: OK
      security:
      - ApiKeyAuth:
        - Default
      summary: Get trace detail
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
  /api/application-monitoring/v2/analyze/traces/{traceId}/calls/{callId}/details:
    get:
      description: 'Use this API endpoint to retrieve a vast information about a call present in a trace.


        For more information on Application Analyze please access the https://developer.ibm.com/apis/catalog/instana--instana-rest-api/Applications#application-analyze.'
      operationId: getCallDetails
      parameters:
      - in: path
        name: traceId
        required: true
        schema:
          type: string
          description: An Instana generated unique identifier for a trace.
      - in: path
        name: callId
        required: true
        schema:
          type: string
          description: 'The call ID. A unique identifier for an individual call. For example: `1bcad5c82338deaf`.'
      responses:
        '200':
          content:
            application/json:
              example:
                id: 14219b3deb6a6bc5
                label: GET /api/shipping/cities/bg
                start: 1707295859759
                duration: 3597
                minSelfTime: 2
                networkTime: null
                errorCount: 0
                batchSize: 1
                batchSelfTime: 3597
                source:
                  applications: []
                  service:
                    id: ROOT
                    label: ''
                  endpoint:
                    id: XCjGvnwuiak0m3ISke3naE-NrGA
                    label: Unspecified
                    type: UNDEFINED
                  physicalContext: {}
                destination:
                  applications: []
                  service:
                    id: ce4b152bac7b99744d8314838e49b799afd6dd96
                    label: nginx-web
                  endpoint:
                    id: wAS2omB44e0EK4xqL7f-e-wt4C4
                    label: upstream shipping
                    type: HTTP
                  physicalContext:
                    process:
                      id: jXvrnXHuBqfhlZQTux-ck1PYd6Y
                      time: 1707258023000
                      label: Node @30303
                      plugin: nginx
                      data: null
                spans:
                - id: 14219b3deb6a6bc5
                  parentId: ''
                  name: sdk.http.entry
                  kind: ENTRY
                  foreignParentId: ''
                  start: 1707295859759
                  duration: 3597
                  errorCount: 0
                  stackTrace: []
                  data:
                    service: nginx-web
                    http:
                      path: /api/shipping/cities/bg
                      protocol: http
                      route_id: upstream shipping
                      method: GET
                      host: web:8080
                      url: http://web:8080//api/shipping/cities/bg
                      status: 200
                logs: []
                synthetic: false
              schema:
                $ref: '#/components/schemas/TraceActivityTreeNodeDetails'
          description: OK
      security:
      - ApiKeyAuth:
        - Default
      summary: Get call detail
      tags:
      - Application Analyze
      x-ibm-ahub-byok: true
components:
  schemas:
    GetTraceGroups:
      type: object
      properties:
        group:
          $ref: '#/components/schemas/Group'
        includeInternal:
          type: boolean
          description: Flag to include Internal Calls. These calls are work done inside a service and correspond to intermediate spans in custom tracing.
        includeSynthetic:
          type: boolean
          description: Flag to include Synthetic Calls. These calls have a synthetic endpoint as their destination, such as calls to health-check endpoints.
        metrics:
          type: array
          description: 'A list of objects each of which defines a metric and the (statistical) aggregation -- MEAN, SUM, MAX, etc -- that should be used to summarize it for the defined time frame. Eg: `[{ ''metric'': ''latency'', ''aggregation'': ''MEAN''}]`. To know more about supported metrics and its aggregation, See `Get Metric catalog`.'
          items:
            $ref: '#/components/schemas/MetricConfig'
          maxItems: 5
          minItems: 1
        order:
          $ref: '#/components/schemas/Order'
        pagination:
          $ref: '#/components/schemas/CursorPagination'
        tagFilterExpression:
          $ref: '#/components/schemas/TagFilterExpressionElement'
        tagFilters:
          type: array
          items:
            $ref: '#/components/schemas/DeprecatedTagFilter'
          maxItems: 32
          minItems: 0
        timeFrame:
          $ref: '#/components/schemas/TimeFrame'
      required:
      - group
      - metrics
    GetCallGroups:
      type: object
      properties:
        group:
          $ref: '#/components/schemas/Group'
        includeInternal:
          type: 

# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/instana/refs/heads/main/openapi/instana-application-analyze-api-openapi.yml