> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Creates an SLA

> Creates a new SLA from provided data



## OpenAPI

````yaml https://rootly-heroku.s3.amazonaws.com/swagger/v1/swagger.json post /v1/slas
openapi: 3.0.1
info:
  title: Rootly API v1
  version: v1
  description: >+
    # How to generate an API Key?

    - **Organization dropdown** > **Organization Settings** > **API Keys**


    # JSON:API Specification

    Rootly is using **JSON:API** (https://jsonapi.org) specification:

    - JSON:API is a specification for how a client should request that resources
    be fetched or modified, and how a server should respond to those requests.

    - JSON:API is designed to minimize both the number of requests and the
    amount of data transmitted between clients and servers. This efficiency is
    achieved without compromising readability, flexibility, or discoverability.

    - JSON:API requires use of the JSON:API media type
    (**application/vnd.api+json**) for exchanging data.


    # Authentication and Requests

    We use standard HTTP Authentication over HTTPS to authorize your requests.

    ```
      curl --request GET \
    --header 'Content-Type: application/vnd.api+json' \

    --header 'Authorization: Bearer YOUR-TOKEN' \

    --url https://api.rootly.com/v1/incidents

    ```


    <br/>


    # Rate limiting

    - There is a default limit of **5** **GET**, **HEAD**, and **OPTIONS** calls
    **per API key** every **60 seconds** (0 hours). The limit is calculated over
    a **0-hour sliding window** looking back from the current time. While the
    limit can be configured to support higher thresholds, you must first contact
    your **Rootly Customer Success Manager** to make any adjustments.

    - There is a default limit of **3** **POST**, **PUT**, **PATCH** or
    **DELETE** calls **per API key** every **60 seconds** (0 hours). The limit
    is calculated over a **0-hour sliding window** looking back from the current
    time. While the limit can be configured to support higher thresholds, you
    must first contact your **Rootly Customer Success Manager** to make any
    adjustments.

    - When rate limits are exceeded, the API will return a **429 Too Many
    Requests** HTTP status code with the response: `{"error": "Rate limit
    exceeded. Try again later."}`

    - **X-RateLimit headers** are included in every API response, providing
    real-time rate limit information:
      - **X-RateLimit-Limit** - The maximum number of requests permitted and the time window (e.g., "1000, 1000;window=3600" for 1000 requests per hour)
      - **X-RateLimit-Remaining** - The number of requests remaining in the current rate limit window
      - **X-RateLimit-Used** - The number of requests already made in the current window
      - **X-RateLimit-Reset** - The time at which the current rate limit window resets, in UTC epoch seconds

    # Pagination

    - Pagination is supported for all endpoints that return a collection of
    items.

    - Pagination is controlled by the **page** query parameter


    ## Example

    ```
      curl --request GET \
    --header 'Content-Type: application/vnd.api+json' \

    --header 'Authorization: Bearer YOUR-TOKEN' \

    --url https://api.rootly.com/v1/incidents?page[number]=1&page[size]=10

    ```

  x-logo:
    url: https://rootly-heroku.s3.us-east-1.amazonaws.com/swagger/v1/logo.png
servers:
  - url: https://api.rootly.com
security: []
paths:
  /v1/slas:
    post:
      tags:
        - SLAs
      summary: Creates an SLA
      description: Creates a new SLA from provided data
      operationId: createSLA
      parameters: []
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/new_sla'
        required: true
      responses:
        '201':
          description: SLA created
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/sla_response'
        '401':
          description: responds with unauthorized for invalid token
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_list'
        '422':
          description: invalid request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_list'
      security:
        - bearer_auth: []
components:
  schemas:
    new_sla:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              enum:
                - slas
            attributes:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the SLA
                description:
                  type: string
                  description: A description of the SLA
                  nullable: true
                position:
                  type: integer
                  description: Position of the SLA for ordering
                  nullable: true
                condition_match_type:
                  type: string
                  description: Whether all or any conditions must match
                  enum:
                    - ALL
                    - ANY
                manager_role_id:
                  type: string
                  format: uuid
                  description: >-
                    The ID of the incident role responsible for this SLA. Must
                    provide either manager_role_id or manager_user_id.
                  nullable: true
                manager_user_id:
                  type: integer
                  description: >-
                    The ID of the user responsible for this SLA. Must provide
                    either manager_role_id or manager_user_id.
                  nullable: true
                assignment_deadline_days:
                  type: integer
                  description: Number of days for the assignment deadline
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                    - 6
                    - 7
                    - 14
                    - 21
                    - 30
                assignment_deadline_parent_status:
                  type: string
                  description: >-
                    The incident parent status that triggers the assignment
                    deadline
                  enum:
                    - in_triage
                    - started
                    - mitigated
                    - resolved
                    - closed
                    - cancelled
                assignment_deadline_sub_status_id:
                  type: string
                  format: uuid
                  description: >-
                    Sub-status for the assignment deadline. Required when custom
                    lifecycle statuses are enabled on the team.
                  nullable: true
                assignment_skip_weekends:
                  type: boolean
                  description: >-
                    Whether to skip weekends when calculating the assignment
                    deadline
                completion_deadline_days:
                  type: integer
                  description: Number of days for the completion deadline
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                    - 6
                    - 7
                    - 14
                    - 21
                    - 30
                completion_deadline_parent_status:
                  type: string
                  description: >-
                    The incident parent status that triggers the completion
                    deadline
                  enum:
                    - in_triage
                    - started
                    - mitigated
                    - resolved
                    - closed
                    - cancelled
                completion_deadline_sub_status_id:
                  type: string
                  format: uuid
                  description: >-
                    Sub-status for the completion deadline. Required when custom
                    lifecycle statuses are enabled on the team.
                  nullable: true
                completion_skip_weekends:
                  type: boolean
                  description: >-
                    Whether to skip weekends when calculating the completion
                    deadline
                conditions:
                  type: array
                  description: >-
                    Conditions that determine which incidents this SLA applies
                    to. Maximum 20.
                  items:
                    type: object
                    properties:
                      conditionable_type:
                        type: string
                        description: The type of condition
                        enum:
                          - SLAs::BuiltInFieldCondition
                          - SLAs::CustomFieldCondition
                      property:
                        type: string
                        description: >-
                          The property to evaluate (for built-in field
                          conditions). When the team has custom lifecycle
                          statuses enabled, use 'sub_status' (with sub-status
                          IDs as values); otherwise use 'status' (with parent
                          status names). Sending the wrong one will return a
                          validation error.
                        enum:
                          - severity
                          - environment
                          - service
                          - functionality
                          - incident_type
                          - group
                          - cause
                          - sub_status
                          - incident_role
                          - status
                          - kind
                          - visibility
                          - summary
                          - started_at
                          - detected_at
                          - acknowledged_at
                          - mitigated_at
                          - resolved_at
                        nullable: true
                      operator:
                        type: string
                        description: The comparison operator
                      values:
                        type: array
                        items:
                          type: string
                        description: The values to compare against
                        nullable: true
                      form_field_id:
                        type: string
                        format: uuid
                        description: The ID of the form field (for custom field conditions)
                        nullable: true
                      position:
                        type: integer
                        description: The position of the condition for ordering
                    required:
                      - conditionable_type
                      - operator
                notification_configurations:
                  type: array
                  description: Notification timing configurations. Maximum 20.
                  items:
                    type: object
                    properties:
                      offset_type:
                        type: string
                        description: When to send the notification relative to the deadline
                        enum:
                          - before_due
                          - when_due
                          - after_due
                      offset_days:
                        type: integer
                        description: >-
                          Number of days before or after the deadline. Must be 0
                          for when_due.
                    required:
                      - offset_type
                      - offset_days
              additionalProperties: false
              required:
                - name
                - assignment_deadline_days
                - assignment_deadline_parent_status
                - completion_deadline_days
                - completion_deadline_parent_status
          required:
            - type
            - attributes
      required:
        - data
    sla_response:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: Unique ID of the SLA
            type:
              type: string
              enum:
                - slas
            attributes:
              type: object
              allOf:
                - $ref: '#/components/schemas/sla'
          required:
            - id
            - type
            - attributes
      required:
        - data
    errors_list:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              status:
                type: string
              code:
                type: string
                nullable: true
              detail:
                type: string
                nullable: true
            required:
              - title
              - status
    sla:
      type: object
      properties:
        slug:
          type: string
          description: The slug of the SLA
        name:
          type: string
          description: The name of the SLA
        description:
          type: string
          description: A description of the SLA
          nullable: true
        position:
          type: integer
          description: Position of the SLA for ordering
        entity_type:
          type: string
          description: The entity type this SLA applies to
          enum:
            - follow_up
        condition_match_type:
          type: string
          description: Whether all or any conditions must match
          enum:
            - ALL
            - ANY
        manager_role_id:
          type: string
          format: uuid
          description: >-
            The ID of the manager incident role. Exactly one of
            `manager_role_id` or `manager_user_id` must be provided.
          nullable: true
        manager_user_id:
          type: integer
          description: >-
            The ID of the manager user. Exactly one of `manager_role_id` or
            `manager_user_id` must be provided.
          nullable: true
        assignment_deadline_days:
          type: integer
          description: Number of days for the assignment deadline
        assignment_deadline_parent_status:
          type: string
          description: The incident parent status that triggers the assignment deadline
        assignment_deadline_sub_status_id:
          type: string
          format: uuid
          description: >-
            Sub-status for the assignment deadline. Required when custom
            lifecycle statuses are enabled on the team.
          nullable: true
        assignment_skip_weekends:
          type: boolean
          description: Whether to skip weekends when calculating the assignment deadline
        completion_deadline_days:
          type: integer
          description: Number of days for the completion deadline
        completion_deadline_parent_status:
          type: string
          description: The incident parent status that triggers the completion deadline
        completion_deadline_sub_status_id:
          type: string
          format: uuid
          description: >-
            Sub-status for the completion deadline. Required when custom
            lifecycle statuses are enabled on the team.
          nullable: true
        completion_skip_weekends:
          type: boolean
          description: Whether to skip weekends when calculating the completion deadline
        conditions:
          type: array
          description: Conditions that determine which incidents this SLA applies to
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: Unique ID of the condition
              position:
                type: integer
                description: The position of the condition
              conditionable_type:
                type: string
                description: The type of condition
                enum:
                  - SLAs::BuiltInFieldCondition
                  - SLAs::CustomFieldCondition
              property:
                type: string
                description: The property to evaluate (for built-in field conditions)
                nullable: true
              operator:
                type: string
                description: The comparison operator
              values:
                type: array
                items:
                  type: string
                description: The values to compare against
                nullable: true
              form_field_id:
                type: string
                format: uuid
                description: The ID of the form field (for custom field conditions)
                nullable: true
        notification_configurations:
          type: array
          description: Notification timing configurations
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: Unique ID of the notification configuration
              offset_type:
                type: string
                description: When to send the notification relative to the deadline
                enum:
                  - before_due
                  - when_due
                  - after_due
              offset_days:
                type: integer
                description: Number of days offset from the deadline
              created_at:
                type: string
                description: Date of creation
              updated_at:
                type: string
                description: Date of last update
        created_at:
          type: string
          description: Date of creation
        updated_at:
          type: string
          description: Date of last update
      required:
        - name
        - condition_match_type
        - assignment_deadline_days
        - assignment_deadline_parent_status
        - completion_deadline_days
        - completion_deadline_parent_status
        - created_at
        - updated_at
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer

````