openapi: 3.0.1
info:
  description: |
    We are happy to announce the release of the Internet Insights API set. This limited release includes endpoints that:

    * Make our catalog provider and Internet outage data accessible to API users.
    * Provide access to advanced filtering, which is part of our next-generation API efforts to allow API users to fine-tune queries across all of our APIs in a consistent manner.

    Internet Insights provide visibility into core Internet infrastructure, including ISPs, DNS providers, IaaS, CDNs , and SaaS providers.
    It tracks the macro-level impact of Internet events on individual users and enterprise networks connecting at the edge of the Internet. These events include Outages, Routing hijacks and leaks, DDoS attacks, And political interference, among others.

    Future releases of the Internet Insights API set will further unlock access to core Internet Insights functionality, unlocking potential integrations to enrich customer process flows.

    For more information about Internet Insights, see the [Internet Insights](https://docs.thousandeyes.com/product-documentation/internet-insights).
  title: Internet Insights API
  version: 7.0.34
servers:
- description: ThousandEyes API production URL
  url: https://api.thousandeyes.com/v7
security:
- BearerAuth: []
tags:
- name: Internet Insights Catalog Providers
- name: Internet Insights Outages
paths:
  /internet-insights/catalog/providers/filter:
    post:
      description: |
        Returns a list of catalog providers using the specified filters. Returns high-level information about each catalog provider. For more details about a specific provider, call the Get a catalog provider endpoint.

        <b>Note:</b> Support for pagination will be added in the future.
      operationId: filterCatalogProviders
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCatalogProviderFilter'
        required: true
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiCatalogProviderResponse'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
        "500":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Internal server error
                status: 500
                detail: Optional detail about the internal error message.
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal server error
        "502":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Gateway
        default:
          description: An error occurred
      summary: List catalog providers
      tags:
      - Internet Insights Catalog Providers
  /internet-insights/catalog/providers/{providerId}:
    get:
      description: |
        Returns the details of a catalog provider.
      operationId: getCatalogProvider
      parameters:
      - explode: false
        in: path
        name: providerId
        required: true
        schema:
          example: 85602a0a-54a7-4e97-946e-67492ef1fa26
          format: uuid
          type: string
        style: simple
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiCatalogProviderDetails'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
        "500":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Internal server error
                status: 500
                detail: Optional detail about the internal error message.
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal server error
        "502":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Gateway
        default:
          description: An error occurred
      summary: Retrieve a catalog provider
      tags:
      - Internet Insights Catalog Providers
  /internet-insights/outages/filter:
    post:
      description: |
        Returns a list of network and application outages using a filter object. Advanced Filter persistance is not currently supported.

        <b>Note:</b> Support for pagination will be added in the future.

         ## Samples Queries with Different Filter Permutations

         ### Window
         ```
         curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token
        --header 'Accept-Encoding: application/gzip'
        --header 'Content-Type: application/json'
        --data-raw '{
          "window" : "1d"
          }'
        ```

        ### Date Range
        ```
        curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token'
        --header 'Content-Type: application/json'
        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z"
          }'
        ```

        ### Date Range with Scope
        ```
        curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token'
        --header 'Content-Type: application/json'
        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z",
            "outageScope": "with-affected-test"
          }'
        ```
        ### Date Range with Network
        ```
          curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
          --header 'Authorization: Bearer $token'
          --header 'Content-Type: application/json'
          --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "interfaceNetwork":  ["Telianet"]
            }'
        ```

        ### Date Range with Application
        ```
        curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
          --header 'Authorization: Bearer $token'
          --header 'Content-Type: application/json'
          --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "applicationName": ["Google"]
          }'
        ```
        ### Date Range with Provider
        ```
        curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token'
        --header 'Content-Type: application/json'
        --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "providerName": ["Century Link", "Microsoft"]
          }'

        ```
        ### Date Range with Application and Scope
        ```
        curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token'
        --header 'Content-Type: application/json'
        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z",
            "outageScope": "all",
            "applicationName": ["Google"]
        }'
        ```
      operationId: filterOutages
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiOutageFilter'
        required: true
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiOutagesResponse'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
        "500":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Internal server error
                status: 500
                detail: Optional detail about the internal error message.
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal server error
        "502":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Gateway
        default:
          description: An error occurred
      summary: List network and application outages
      tags:
      - Internet Insights Outages
  /internet-insights/outages/net/{outageId}:
    get:
      description: |
        Returns the details of a network outage.
      operationId: getNetworkOutage
      parameters:
      - explode: false
        in: path
        name: outageId
        required: true
        schema:
          example: 694D8656960F34F76489BCE5E9BCD58EC53027462740D75F
          type: string
        style: simple
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiNetworkOutageDetails'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
        "500":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Internal server error
                status: 500
                detail: Optional detail about the internal error message.
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal server error
        "502":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Gateway
        default:
          description: An error occurred
      summary: Retrieve network outage
      tags:
      - Internet Insights Outages
  /internet-insights/outages/app/{outageId}:
    get:
      description: |
        Returns the details of an application outage.
      operationId: getAppOutage
      parameters:
      - explode: false
        in: path
        name: outageId
        required: true
        schema:
          example: F73E24F17E4996923196826A208BB572508A8EB13BEE14B0
          type: string
        style: simple
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiApplicationOutageDetails'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
        "500":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Internal server error
                status: 500
                detail: Optional detail about the internal error message.
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal server error
        "502":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Gateway
        default:
          description: An error occurred
      summary: Retrieve application outage
      tags:
      - Internet Insights Outages
components:
  parameters:
    AccountGroupId:
      description: A unique identifier associated with your account group. You can
        retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that
        you must be assigned to the target account group. Specifying this parameter
        without being assigned to the target account group will result in an error
        response.
      in: query
      name: aid
      required: false
      schema:
        example: "1234"
        type: string
  responses:
    "400":
      content:
        application/problem+json:
          example:
            type: about:blank
            title: Request validation failed. There are invalid or missing fields
            status: 400
            detail: Your request object contains invalid fields.
            instance: /v7
            errors:
            - code: AM-5432
              field: firstName
              message: firstName cannot have fancy characters
            - code: DASH-5622
              field: password
              message: Password cannot be blank
          schema:
            $ref: '#/components/schemas/ValidationError'
      description: Bad Request
    "401":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/UnauthorizedError'
      description: Unauthorized
    "403":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Insufficient permissions to query endpoint
    "404":
      content:
        application/problem+json:
          example:
            type: about:blank
            title: URI Resource Not Found
            status: 404
            detail: Details explaining if the 404 error is related to an invalid URI
              or a wrong ID
            instance: /v7
          schema:
            $ref: '#/components/schemas/Error'
      description: Not found
    "429":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Exhausted rate limit for the organization
    "500":
      content:
        application/problem+json:
          example:
            type: about:blank
            title: Internal server error
            status: 500
            detail: Optional detail about the internal error message.
            instance: /v7
          schema:
            $ref: '#/components/schemas/Error'
      description: Internal server error
    "502":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Bad Gateway
    GeneralError:
      description: An error occurred
  schemas:
    ApiAsn:
      properties:
        id:
          description: ASN (Autonomous Systems Number)
          example: 1
          type: integer
        name:
          description: ASN (Autonomous Systems Number) name
          example: "LVLT-1 - Level 3 Communications, Inc."
          type: string
      type: object
    InternetInsightsApiAffectedTest:
      properties:
        id:
          example: 5
          format: int64
          type: integer
        name:
          example: amazon-test2
          type: string
      type: object
    InternetInsightsApiAffectedAgent:
      properties:
        id:
          example: 11
          format: int64
          type: integer
        name:
          example: "London, England"
          type: string
      type: object
    ApiApplicationOutageAffectedServer:
      properties:
        domain:
          example: amazon.com
          type: string
        prefix:
          example: 123.176.185.0/23
          type: string
      type: object
    ApiApplicationOutageAffectedLocation:
      properties:
        location:
          description: The affected location.
          example: "Chicago, Illinois, US"
          type: string
        affectedServers:
          description: The number of affected servers in this location.
          items:
            $ref: '#/components/schemas/ApiApplicationOutageAffectedServer'
          type: array
      type: object
    ApiNetworkOutageAffectedLocation:
      properties:
        location:
          description: The affected location.
          example: "Chicago, Illinois, US"
          type: string
        affectedInterfaces:
          description: The affected interfaces in this location.
          items:
            example: 50.51.52.53
            type: string
          type: array
      type: object
    ApiNetworkOutageDetails:
      properties:
        id:
          description: The ID of the outage.
          example: 8EF2760862C705783A2F8BCBAAABB44F28DBC670DBA3B610
          type: string
        providerName:
          description: The name of the affected provider.
          example: Rackspace
          type: string
        providerType:
          description: The type of the affected provider.
          example: IAAS
          type: string
        networkName:
          description: The affected network.
          example: Rackspace Hosting
          type: string
        asn:
          description: ASN number
          example: 19994
          type: integer
        startDate:
          description: Date and time when the outage started.
          example: 2023-01-27T20:50:51.256Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        startRoundId:
          description: Epoch time (seconds) when the outage started.
          example: 1674852600
          format: int64
          type: integer
        endDate:
          description: Date and time when the outage ended.
          example: 2023-01-27T20:53:51.256Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        endRoundId:
          description: Epoch time (seconds) when the outage ended.
          example: 1674852600
          format: int64
          type: integer
        duration:
          description: Duration of the outage in seconds.
          example: 180
          format: int64
          type: integer
        affectedTests:
          description: List of affected tests.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedTest'
          type: array
          uniqueItems: true
        affectedDomains:
          description: List of affected domains.
          items:
            example: periodic-failure.com
            type: string
          type: array
          uniqueItems: true
        affectedAgents:
          description: List of affected agents.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedAgent'
          type: array
          uniqueItems: true
        affectedLocations:
          description: List of affected locations.
          items:
            $ref: '#/components/schemas/ApiNetworkOutageAffectedLocation'
          type: array
          uniqueItems: true
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiApplicationOutageDetails:
      properties:
        id:
          description: The ID of the outage.
          example: 0CC4C4209887126DE42E92252FB43962CBB3193147F318EA
          type: string
        providerName:
          description: The name of the affected provider.
          example: Amazon Web Services
          type: string
        providerType:
          description: The type of the affected provider.
          example: SAAS
          type: string
        applicationName:
          description: The name of the affected application.
          example: Amazon Web Services
          type: string
        startDate:
          description: Date and time when the outage started.
          example: 2023-01-27T20:50:51.256Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        startRoundId:
          description: Epoch time (seconds) when the outage started.
          example: 1674852600
          format: int64
          type: integer
        endDate:
          description: Date and time when the outage ended.
          example: 2023-01-27T20:53:51.256Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        endRoundId:
          description: Epoch time (seconds) when the outage ended.
          example: 1674852600
          format: int64
          type: integer
        duration:
          description: Duration of the outage in seconds.
          example: 180
          format: int64
          type: integer
        affectedTests:
          description: List of affected tests.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedTest'
          type: array
          uniqueItems: true
        affectedDomains:
          description: List of affected domains.
          items:
            example: amazon.com
            type: string
          type: array
          uniqueItems: true
        affectedAgents:
          description: List of affected agents.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedAgent'
          type: array
          uniqueItems: true
        errors:
          description: List of errors.
          items:
            example: HTTP_SERVER_TIMEOUT
            type: string
          type: array
          uniqueItems: true
        affectedLocations:
          description: List of affected locations.
          items:
            $ref: '#/components/schemas/ApiApplicationOutageAffectedLocation'
          type: array
          uniqueItems: true
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiOutageFilter:
      description: "Advanced filter query used to filter the response. Can filter\
        \ on: - outageScope (all, affected tests (e.g. my tests only)). - providerName\
        \ - interfaceNetwork - applicationName - startDate, endDate - window"
      example:
        startDate: 2022-03-01T01:30:00Z
        endDate: 2022-03-01T23:30:15Z
        outageScope: all
        providerName:
        - Telia
        - Amazon
        interfaceNetwork:
        - Telianet
        - Cloudflare
        applicationName:
        - slack
        - facebook
      properties:
        startDate:
          description: Start of the time range. Must be paired with `endDate`.
          example: 2022-03-01T01:30:00Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        endDate:
          description: End of the time range. Must be paired with `startDate`.
          example: 2022-03-01T23:30:15Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        window:
          description: Specify a time period in the past for which to retrieve data.
            Alternative to specifying `startDate` and `endDate`.
          example: 1d
          format: "^[0-9]+[smhdw]?"
          type: string
        outageScope:
          $ref: '#/components/schemas/OutageScope'
        providerName:
          description: The name used to identify the provider.
          example:
          - Telia
          - Amazon
          items:
            type: string
          type: array
        applicationName:
          description: The name to identify the application.
          example:
          - slack
          - facebook
          items:
            type: string
          type: array
        interfaceNetwork:
          description: The name of the ASN (Interface Network).
          items:
            type: string
          type: array
      type: object
    OutageScope:
      description: Scope of the outage
      enum:
      - all
      - with-affected-test
      type: string
    ApiOutage:
      description: List of outages.
      properties:
        id:
          description: The ID of the outage.
          example: xxxxxxxxxxxxxxxxxx1
          type: string
        type:
          description: The type of outage e.g. app.
          example: app
          type: string
        providerName:
          description: The name of the affected provider.
          example: Google
          type: string
        providerType:
          description: The type of the affected provider.
          example: SAAS
          type: string
        name:
          description: The name of the affected application.
          example: Google
          type: string
        startDate:
          description: Date and time when the outage started.
          example: 2022-03-01T23:31:11Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        startRoundId:
          description: Epoch time (seconds) when the outage started.
          example: 1646177400
          format: int64
          type: integer
        endDate:
          description: Date and time when the outage ended.
          example: 2022-03-01T23:31:11Z
          format: "yyyy-MM-ddTHH:mm[:ss]Z"
          type: string
        endRoundId:
          description: Epoch time (seconds) when the outage ended.
          example: 1646177700
          format: int64
          type: integer
        duration:
          description: Duration of the outage (seconds)
          example: 214
          format: int64
          type: integer
        affectedTestsCount:
          description: The number of affected tests
          example: 1
          format: int32
          type: integer
        affectedServersCount:
          description: The number of affected servers
          example: 2
          format: int32
          type: integer
        affectedLocationsCount:
          description: The number of affected locations.
          example: 1
          format: int32
          type: integer
        affectedInterfacesCount:
          description: The number of affected interfaces.
          example: 1
          format: int32
          type: integer
        asn:
          description: ASN number.
          example: 19994
          type: integer
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiOutagesResponse:
      properties:
        outages:
          description: List of application outages.
          items:
            $ref: '#/components/schemas/ApiOutage'
          type: array
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiCatalogProviderFilter:
      description: "Advanced filter query used to filter the response. The provider\
        \ name, location, asn can be partial names. Can filter on: - Provider name\
        \ - Provider type - Region - Location - ASN - included"
      example:
        providerName: Amazon Web Services
        providerType: IAAS
        region: North America
        location: "San Jose, US"
        asn: "Amazon.com, Inc."
        included: true
      properties:
        providerName:
          description: The name of the catalog provider.
          example: Amazon Web Services
          type: string
        providerType:
          description: The type of catalog provider.
          example: IAAS
          type: string
        region:
          description: The catalog provider region.
          example: North America
          type: string
        location:
          description: Location of the catalog provider.
          example: "San Jose, US"
          type: string
        asn:
          description: Name of the ASN (Autonomous Systems Number) covered by providers.
          example: "Amazon.com, Inc."
          type: string
        included:
          description: "Indicates whether the catalog provider is included in the\
            \ licensed packages. true returns providers covered by licensed packages,\
            \ false returns providers not covered by licensed packages."
          example: true
          type: boolean
      type: object
    ApiCatalogProvider:
      description: Catalog provider
      properties:
        id:
          description: The catalog provider ID.
          example: 85602a0a-54a7-4e97-946e-67492ef1fa26
          format: uuid
          type: string
        providerName:
          description: The name of the catalog provider.
          example: Amazon Web Services
          type: string
        providerType:
          description: The type of catalog provider.
          example: IAAS
          type: string
        region:
          description: The catalog provider region.
          example: North America
          type: string
        dataType:
          description: The type of data produced by the provider.
          example: Application
          type: string
        asnsCount:
          description: The number of ASN's covered by the provider.
          example: 10
          type: integer
        countriesCount:
          description: The number of countries covered by the provider.
          example: 2
          type: integer
        locationsCount:
          description: The number of locations covered by the provider.
          example: 50
          type: integer
        interfacesCount:
          description: The number of interfaces covered by the provider.
          example: 15
          type: integer
        included:
          description: Indicates whether the catalog provider is included in the licensed
            packages.
          example: true
          type: boolean
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiCatalogProviderResponse:
      properties:
        providers:
          description: List of catalog providers.
          items:
            $ref: '#/components/schemas/ApiCatalogProvider'
          type: array
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    ApiCatalogProviderDetails:
      properties:
        id:
          description: The catalog provider ID.
          example: 85602a0a-54a7-4e97-946e-67492ef1fa26
          format: uuid
          type: string
        providerName:
          description: The name of the catalog provider.
          example: Amazon Web Services
          type: string
        providerType:
          description: The type of catalog provider.
          example: IAAS
          type: string
        region:
          description: The catalog provider region.
          example: North America
          type: string
        dataType:
          description: The type of data produced by the provider.
          example: Application
          type: string
        asns:
          description: List of ASN's covered by the Provider.
          items:
            $ref: '#/components/schemas/ApiAsn'
          type: array
          uniqueItems: true
        locations:
          description: List of locations covered by the Provider.
          items:
            $ref: '#/components/schemas/ProviderLocation'
          type: array
          uniqueItems: true
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    CatalogId:
      description: The catalog provider ID.
      example: 85602a0a-54a7-4e97-946e-67492ef1fa26
      format: uuid
      type: string
    ProviderLocation:
      properties:
        location:
          description: The location covered by the Provider.
          example: "San Jose, US"
          type: string
        interfacesCount:
          description: The number of interfaces covered by the Provider at this location.
          example: 5
          type: integer
      type: object
    ProviderName:
      description: The name of the catalog provider.
      example: Amazon Web Services
      type: string
    ProviderType:
      description: The type of catalog provider.
      example: IAAS
      type: string
    Region:
      description: The catalog provider region.
      example: North America
      type: string
    DataType:
      description: The type of data produced by the provider.
      example: Application
      type: string
    OutageLocation:
      description: The affected location.
      example: "Chicago, Illinois, US"
      type: string
    ValidationError:
      allOf:
      - $ref: '#/components/schemas/Error'
      - properties:
          errors:
            description: "(Optional) When multiple errors occur, the details for each\
              \ error are listed."
            items:
              $ref: '#/components/schemas/ValidationErrorItem'
            nullable: true
            type: array
        type: object
      type: object
    Error:
      properties:
        type:
          description: "A URI reference that identifies the problem type. When this\
            \ member is not present, its value is assumed to be \"about:blank\"."
          type: string
        title:
          description: "A short, human-readable summary of the problem type."
          type: string
        status:
          description: The HTTP status code generated by the origin server for this
            occurrence of the problem.
          type: integer
        detail:
          description: A human-readable explanation specific to this occurrence of
            the problem.
          type: string
        instance:
          description: A URI reference that identifies the specific occurrence of
            the problem.
          type: string
      type: object
    ValidationErrorItem:
      properties:
        code:
          description: (Optional) A unique error type/code that can be referenced
            in the documentation for further details.
          type: string
        field:
          description: Identifies the field that triggered this particular error.
          type: string
        message:
          description: "A short, human-readable summary of the error."
          type: string
      type: object
    UnauthorizedError:
      properties:
        error:
          example: invalid_token
          type: string
        error_description:
          example: Invalid access token
          type: string
      type: object
    SelfLinks:
      description: A links object containing the self link.
      properties:
        self:
          $ref: '#/components/schemas/Link'
      readOnly: true
      type: object
    Link:
      description: A hyperlink from the containing resource to a URI.
      properties:
        href:
          description: "Its value is either a URI [RFC3986] or a URI template [RFC6570]."
          example: https://api.thousandeyes.com/v7/link/to/resource/id
          type: string
        templated:
          description: Should be true when the link object's "href" property is a
            URI template.
          type: boolean
        type:
          description: Used as a hint to indicate the media type expected when dereferencing
            the target resource.
          type: string
        deprecation:
          description: Its presence indicates that the link is to be deprecated at
            a future date. Its value is a URL that should provide further information
            about the deprecation.
          type: string
        name:
          description: Its value may be used as a secondary key for selecting link
            objects that share the same relation type.
          type: string
        profile:
          description: A URI that hints about the profile of the target resource.
          type: string
        title:
          description: Intended for labelling the link with a human-readable identifier
          type: string
        hreflang:
          description: Indicates the language of the target resource
          type: string
      required:
      - href
      type: object
  securitySchemes:
    BearerAuth:
      description: Bearer authentication token
      scheme: bearer
      type: http
