Catchpoint Systems SLO API

The SLO API from Catchpoint Systems — 4 operation(s) for slo.

Operations 7

GET /v2/slo/{sloIds} Retrieve properties of one or more SLOs based on SLO IDs.
PATCH /v2/slo/{sloIds} Update properties of an existing SLO based on the request body.
DELETE /v2/slo/{sloIds} Delete one or more SLOs based on SLO IDs.
GET /v2/slo Retrieve SLOs that match all included parameters.
POST /v2/slo Create a new SLO configured per the request body.
GET /v2/slo/enumeration Retrieve SLO property enumerations.
GET /v2/slo/violations Retrieve violation data for all SLOs matching request parameters within the requested date range.

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/catchpoint-systems-slo-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 email required.

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

OpenAPI Specification

catchpoint-systems-slo-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Catchpoint REST API v2.0 Account SLO API
  version: '2.0'
servers:
- url: /api
tags:
- name: SLO
paths:
  /v2/slo/{sloIds}:
    get:
      tags:
      - SLO
      summary: Retrieve properties of one or more SLOs based on SLO IDs.
      description: Multiple SLO IDs may be included in a comma-separated list.
      parameters:
      - name: sloIds
        in: path
        description: A comma-separated list of SLO IDs to look up.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
      security:
      - bearer: []
      order: 1
    patch:
      tags:
      - SLO
      summary: Update properties of an existing SLO based on the request body.
      description: "**Request:**\n            \nOnly the property to be updated can be passed in the request body instead of the whole object. The update request body requires a total of three keys to be filled with appropriate value as listed below:\n* **value** – The value property provides the new value.\n            \n* **path** – The path property indicates the element to update. The entire path with slashes needs to be provided here. Example: /status/id\n            \n* **op** – The op property indicates the type of operation; we support the following three operations.\n            \n    * **add** - Add a property or array element. For existing property: set value.\n            \n    * **Remove** - Remove a property or array element.\n            \n    * **replace** - Same as remove followed by add at same location.\n            \n* **from** - [Not Used]\n            \n    * **Explanation** - The \"from\" parameter represents the starting or current value of the resource that the operation intends to modify. The from parameter is included in the example value schema but is not utilized in this endpoint's functionality. It is reserved for potential future use or could be used in specific scenarios not covered by the current implementation."
      parameters:
      - name: sloIds
        in: path
        description: A comma delimited list of SLO IDs to update an SLO.
        required: true
        schema:
          type: string
      - name: objectDetails
        in: query
        description: Retrieves object details after update.
        schema:
          type: boolean
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Microsoft.AspNetCore.JsonPatch.Operations.Operation'
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Microsoft.AspNetCore.JsonPatch.Operations.Operation'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Microsoft.AspNetCore.JsonPatch.Operations.Operation'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Microsoft.AspNetCore.JsonPatch.Operations.Operation'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
      security:
      - bearer: []
      order: 4
    delete:
      tags:
      - SLO
      summary: Delete one or more SLOs based on SLO IDs.
      description: 'This endpoint allows partial success.

        For example, if the request includes a list of five SLO IDs but only three of them match existing SLOs, then those three SLOs will be deleted and indicated as such in the response.

        The two invalid SLO IDs will be listed in the response with an error message.'
      parameters:
      - name: sloIds
        in: path
        description: A comma-separated list of SLO IDs to delete.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse'
      security:
      - bearer: []
      order: 5
  /v2/slo:
    get:
      tags:
      - SLO
      summary: Retrieve SLOs that match all included parameters.
      description: All parameters are optional, and if no parameters are provided then details for all active SLOs are returned.
      parameters:
      - name: statusType
        in: query
        description: The SLO status ID. “0” for Active, “1” for inactive.
        schema:
          type: integer
          format: int32
      - name: sloName
        in: query
        description: An SLO name.
        schema:
          type: string
      - name: testName
        in: query
        description: A Test name assigned to the SLOs to look up.
        schema:
          type: string
      - name: metricType
        in: query
        description: The SLO metric ID. “15” for Availability, “89” for Test Time.
        schema:
          type: integer
          format: int32
      - name: testIds
        in: query
        description: A comma-separated list of Test IDs assigned to the SLOs to look up.
        schema:
          type: string
      - name: divisionId
        in: query
        description: The Division ID of the SLOs to look up. If left empty, the default division of the API user will be used.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
      security:
      - bearer: []
      order: 2
    post:
      tags:
      - SLO
      summary: Create a new SLO configured per the request body.
      description: 'The request body must include all required SLO properties, and may include any optional properties as well.

        To get a sample payload to pass along with the request, use the response from endpoint GET: /api/v2/slo/{sloIds} with {sloIds} as “0”.'
      parameters:
      - name: objectDetails
        in: query
        description: Retrieves object details after creating it.
        schema:
          type: boolean
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
          text/json:
            schema:
              $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
      security:
      - bearer: []
      order: 3
  /v2/slo/enumeration:
    get:
      tags:
      - SLO
      summary: Retrieve SLO property enumerations.
      description: All parameters are optional, and if no parameters are provided then all enumerations are returned.
      parameters:
      - name: analyticsMetric
        in: query
        description: Return analyticsMetric enumeration
        schema:
          type: boolean
      - name: domainStatus
        in: query
        description: Return domainStatus enumeration
        schema:
          type: boolean
      - name: nodeThresholdType
        in: query
        description: Return nodeThresholdType enumeration
        schema:
          type: boolean
      - name: operatorType
        in: query
        description: Return operatorType enumeration
        schema:
          type: boolean
      - name: timeThresholdInterval
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse'
      security:
      - bearer: []
      order: 2
  /v2/slo/violations:
    get:
      tags:
      - SLO
      summary: Retrieve violation data for all SLOs matching request parameters within the requested date range.
      description: ''
      parameters:
      - name: startTime
        in: query
        description: Start Time in UTC. Format (YYYY-MM-DDThh:mm:ss).
        schema:
          type: string
          format: date-time
      - name: endTime
        in: query
        description: End Time in UTC. Format (YYYY-MM-DDThh:mm:ss).
        schema:
          type: string
          format: date-time
      - name: sloIds
        in: query
        description: A comma-separated list of SLO IDs to look up.
        schema:
          type: string
      - name: testIds
        in: query
        description: A comma-separated list of Test IDs to look up.
        schema:
          type: string
      - name: sloName
        in: query
        description: The name of an SLO to look up.
        schema:
          type: string
      - name: testName
        in: query
        description: The name of a Test to look up.
        schema:
          type: string
      - name: metricType
        in: query
        description: The SLO metric ID. “15” for Availability, “89” for Test Time.
        schema:
          type: integer
          format: int32
      - name: statusType
        in: query
        description: The SLO status ID. “0” for Active, “1” for inactive.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetViolationsResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetViolationsResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetViolationsResponse'
      security:
      - bearer: []
      order: 10
components:
  schemas:
    Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse'
        messages:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.InfoMessage'
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.MessageModel'
        completed:
          type: boolean
          readOnly: true
        traceId:
          type:
          - string
          - 'null'
        usageLimits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ApiUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Api.ConsumerStatistics:
      type: object
      properties:
        consumerId:
          type: integer
          format: int32
        requestCount:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.Limit'
        maxPerDay:
          type:
          - integer
          - 'null'
          format: int32
      additionalProperties: false
    Catchpoint.Symphony.Enums.DomainStatus:
      enum:
      - id: 0
        name: Active
      - id: 1
        name: Inactive
      - id: 2
        name: Archived
      - id: 3
        name: Suspended
      - id: 4
        name: SuspendedByAdmin
      - id: 5
        name: Open
      - id: 6
        name: Resolved
      - id: 7
        name: Deleted
      - id: 8
        name: OverSubscribed
      - id: 9
        name: Published
      - id: 10
        name: Draft
      - id: 11
        name: NeedsApproval
      type: integer
      format: int32
    ? Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetViolationsResponse
    : type: object
      properties:
        data:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetViolationsResponse'
        messages:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.InfoMessage'
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.MessageModel'
        completed:
          type: boolean
          readOnly: true
        traceId:
          type:
          - string
          - 'null'
        usageLimits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ApiUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse'
        messages:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.InfoMessage'
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.MessageModel'
        completed:
          type: boolean
          readOnly: true
        traceId:
          type:
          - string
          - 'null'
        usageLimits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ApiUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.SloPostResponse:
      type: object
      properties:
        slos:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
        ids:
          type:
          - array
          - 'null'
          items:
            type: integer
            format: int64
        hasMore:
          type:
          - boolean
          - 'null'
        next:
          type:
          - string
          - 'null'
        previous:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.Enums.Alerts.OperatorType:
      enum:
      - id: 0
        name: NotEquals
      - id: 1
        name: Equals
      - id: 2
        name: GreaterThan
      - id: 3
        name: GreaterThanOrEquals
      - id: 4
        name: LessThan
      - id: 5
        name: LessThanOrEquals
      - id: 6
        name: NotBetween
      - id: 7
        name: Between
      type: integer
      format: int32
    Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse:
      type: object
      properties:
        sections:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationDetailResponse'
        hasMore:
          type:
          - boolean
          - 'null'
        next:
          type:
          - string
          - 'null'
        previous:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.Enums.Alerts.AlertTimeThresholdInterval:
      enum:
      - id: 0
        name: Default
      - id: 1
        name: 1 Minute
      - id: 5
        name: 5 Minutes
      - id: 10
        name: 10 Minutes
      - id: 15
        name: 15 Minutes
      - id: 20
        name: 20 Minutes
      - id: 30
        name: 30 Minutes
      - id: 45
        name: 45 Minutes
      - id: 60
        name: 60 Minutes
      - id: 120
        name: 2 Hours
      - id: 360
        name: 6 Hours
      - id: 720
        name: 12 Hours
      type: integer
      format: int32
    Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationResponse'
        messages:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.InfoMessage'
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.MessageModel'
        completed:
          type: boolean
          readOnly: true
        traceId:
          type:
          - string
          - 'null'
        usageLimits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ApiUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Api.DivisionUsageStatistics:
      type: object
      properties:
        divisionId:
          type: integer
          format: int32
        consumerStatistics:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ConsumerStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.APIResponse_1_Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse'
        messages:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.InfoMessage'
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.MessageModel'
        completed:
          type: boolean
          readOnly: true
        traceId:
          type:
          - string
          - 'null'
        usageLimits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.ApiUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Api.ApiUsageStatistics:
      type: object
      properties:
        clientId:
          type: integer
          format: int64
        lastRequestTimestamp:
          type: string
          format: date-time
        limits:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.Limit'
        runs:
          $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.Limit'
        exceededMessage:
          type:
          - string
          - 'null'
          readOnly: true
        divisionUsageStatistics:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Api.DivisionUsageStatistics'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Models.InfoMessage:
      type: object
      properties:
        information:
          type:
          - string
          - 'null'
        ignoredPath:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Models.PatchIgnoredPath'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.SloGetResponse:
      type: object
      properties:
        slos:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel'
        hasMore:
          type:
          - boolean
          - 'null'
        next:
          type:
          - string
          - 'null'
        previous:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.ViewModels.EnumLookupModel_1_System.Nullable_1_System.Int32:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
          format: int32
        name:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloViolationAPIModel:
      type: object
      properties:
        testId:
          type: integer
          format: int64
        sloId:
          type: integer
          format: int32
        testName:
          type:
          - string
          - 'null'
        objectiveName:
          type:
          - string
          - 'null'
        metricType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Metrics.AnalyticsMetric'
        statusType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.DomainStatus'
        goal:
          type: number
          format: double
        violationStart:
          type: string
          format: date-time
        violationEnd:
          type: string
          format: date-time
        minsInViolation:
          type: integer
          format: int32
      additionalProperties: false
    Catchpoint.Symphony.Enums.Alerts.NodeThresholdType:
      enum:
      - id: 0
        name: Runs
      - id: 1
        name: AverageAcrossNodes
      - id: 2
        name: Node
      type: integer
      format: int32
    Catchpoint.Symphony.REST.Common.Models.PatchIgnoredPath:
      type: object
      properties:
        ops:
          type:
          - string
          - 'null'
        path:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.EnumerationDetailResponse:
      type: object
      properties:
        section:
          type:
          - string
          - 'null'
        enumeration:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Catchpoint.Symphony.ViewModels.EnumLookupModel_1_System.Nullable_1_System.Int32'
      additionalProperties: false
    Catchpoint.Symphony.ViewModels.MessageModel:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        message:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.SloDeleteResponse:
      type: object
      properties:
        deleted:
          type:
          - string
          - 'null'
        hasMore:
          type:
          - boolean
          - 'null'
        next:
          type:
          - string
          - 'null'
        previous:
          type:
          - string
          - 'null'
      additionalProperties: false
    Catchpoint.Symphony.REST.Common.Response.v2_0.Slo.SloAPIModel:
      required:
      - goal
      - goalOperatorType
      - id
      - metricType
      - name
      - status
      - testIds
      - violationConditionInTheLast
      - violationThresholdType
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          maxLength: 128
          minLength: 0
          type: string
        description:
          maxLength: 128
          minLength: 0
          type:
          - string
          - 'null'
        divisionId:
          type:
          - integer
          - 'null'
          format: int32
        testIds:
          minItems: 1
          type: array
          items:
            type: integer
            format: int64
        status:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.DomainStatus'
        metricType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Metrics.AnalyticsMetric'
        violationThresholdType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Alerts.NodeThresholdType'
        violationThresholdOperatorType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Alerts.OperatorType'
        violationThresholdValue:
          type:
          - number
          - 'null'
          format: float
        violationConditionNumberOfUnits:
          type:
          - integer
          - 'null'
          format: int64
        violationConditionPercentageOfUnits:
          type:
          - number
          - 'null'
          format: float
        violationConditionConsecutiveRunsEnabled:
          type:
          - boolean
          - 'null'
        violationConditionConsecutiveRuns:
          type:
          - integer
          - 'null'
          format: int32
        violationConditionInTheLast:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Alerts.AlertTimeThresholdInterval'
        goal:
          type: number
          format: float
        goalOperatorType:
          $ref: '#/components/schemas/Catchpoint.Symphony.Enums.Alerts.OperatorType'
        changeDate:
          type:
          - string
          - 'null'
          format: date-time
        createDate:
          type:
          - string
          - 'null'
          format: date-time
        changeContactId:
          type:
          - integer
          - 'null'
          format: int32
        createContactId:
          type:
          - integer
          - 'null'
          format: int32
      additionalProperties: false
    Catchpoint.Symphony.Enums.Metrics.AnalyticsMetric:
      enum:
      - id: 0
        name: None
      - id: 1
        name: DNS (ms)
      - id: 2
        name: Connect (ms)
      - id: 3
        name: Upload (ms)
      - id: 4
        name: Wait (ms)
      - id: 5
        name: TimeToFirstByte
      - id: 6
        name: Load (ms)
      - id: 7
        name: Base Response (ms)
      - id: 8
        name: Dom Loaded (ms)
      - id: 9
        name: ContentLoadTime
      - id: 10
        name: Response (ms)
      - id: 11
        name: Download File Size
      - id: 12
        name: Throughput
      - id: 13
        name: ExternalHostsCount
      - id: 14
        name: '# Items (Total)'
      - id: 15
        name: '% Availability'
      - id: 16
        name: ContentAvailabilityPercent
      - id: 17
        name: JSErrorsPerPageCount
      - id: 18
        name: ContentLoadErrorCount
      - id: 19
        name: TestsWithJSErrorsCount
      - id: 20
        name: '% Packet Loss'
      - id: 21
        name: Ping Round Trip (ms)
      - id: 22
        name: Message Size
      - id: 23
        name: WebpageThroughput
      - id: 24
        name: DnsFailuresCount
      - id: 25
        name: ConnectionFailuresCount
      - id: 26
        name: SslFailuresCount
      - id: 27
        name: ResponseFailuresCount
      - id: 28
        name: ContentFailuresCount
      - id: 29
        name: InvalidTestsCount
      - id: 30
        name: SSL (ms)
      - id: 31
        name: LoadFailuresCount
      - id: 32
        name: Server Response (ms)
      - id: 33
        name: '# Errors'
      - id: 34
        name: DeleteTime
      - id: 35
        name: Apdex
      - id: 36
        name: '# Bytes'
      - id: 37
        name: StepContentAvailabilityPercent
      - id: 38
        name: RenderStartTime
      - id: 39
        name: DocumentCompleteTime
      - id: 40
        name: PageSpeedScore
      - id: 41
        name: TimeToTitle
      - id: 42
        name: ConnectionCount
      - id: 43
        name: TimeoutFailuresCount
      - id: 44
        name: ZoneCount
      - id: 45
        name: DnsToReceiveInclusiveTime
      - id: 46
        name: WaitAndReceiveTime
      - id: 47
        name: StartToEndTime
      - id: 48
        name: BottleneckTime
      - id: 49
        name: '% Bottleneck'
      - id: 50
        name: AuthenticationTime
      - id: 51
        name: Helo Time (ms)
      - id: 52
        name: RedirectRequestCount
      - id: 53
        name: '# Other'
      - id: 54
        name: '# Image'
      - id: 55
        name: '# Script'
      - id: 56
        name: '# Html'
      - id: 57
        name: '# Css'
      - id: 58
        name: '# Xml'
      - id: 59
        name: '# Flash'
      - id: 60
        name: '# Media'
      - id: 61
        name: '# Runs'
      - id: 62
        name: PlayTime
      - id: 63
        name: TotalBufferTime
      - id: 64
        name: BufferCount
      - id: 65
        name: InitialBufferTime
      - id: 66
        name: WireTime
      - id: 67
        name: ClientTime
      - id: 68
        name: '# Font'
      - id: 69
        name: Image Bytes
      - id: 70
        name: Script Bytes
      - id: 71
        name: Html Bytes
      - id: 72
        name: Css Bytes
      - id: 73
        name: Xml Bytes
      - id: 74
        name: Flash Bytes
      - id: 75
        name: Media Bytes
      - id: 76
        name: Other Bytes
      - id: 77
        name: Font Bytes
      - id: 78
        name: '% Ping Packet Loss'
      - id: 79
        name: Redi

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/catchpoint-systems/refs/heads/main/openapi/catchpoint-systems-slo-api-openapi.yml