> ## 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.

# Updates an AI skill

> Requires OAuth scope `ai.skills:write`. Read-only attributes are ignored on write.



## OpenAPI

````yaml https://rootly-heroku.s3.amazonaws.com/swagger/v1/swagger.json patch /v1/ai_skills/{id}
openapi: 3.0.1
info:
  title: Rootly API v1
  version: v1
  license:
    name: Rootly
    url: https://rootly.com
  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/ai_skills/{id}:
    parameters:
      - name: id
        in: path
        description: The skill ID or slug.
        required: true
        schema:
          type: string
    patch:
      tags:
        - AISkills
      summary: Updates an AI skill
      description: >-
        Requires OAuth scope `ai.skills:write`. Read-only attributes are ignored
        on write.
      operationId: UpdateAISkill
      parameters: []
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/update_ai_skill'
        required: true
      responses:
        '200':
          description: >-
            a repository grant round trip with an allowed change preserves
            hidden grants
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ai_skill_response'
        '400':
          description: relationships are unsupported on update
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_list'
        '422':
          description: dropping an editable repository grant is rejected
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_list'
      security:
        - bearer_auth: []
components:
  schemas:
    update_ai_skill:
      type: object
      description: >-
        Update only supplied attributes. Supplying tool_grants replaces the
        editable grant list; grants on tools the caller cannot see are kept.
        Pinned parameters apply only to write access. Read-only attributes are
        ignored on write.
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: Must match the skill UUID or slug in the path.
            type:
              type: string
              enum:
                - ai_skills
            attributes:
              type: object
              properties:
                name:
                  type: string
                slug:
                  type: string
                description:
                  type: string
                  nullable: true
                body:
                  type: string
                enabled:
                  type: boolean
                invocable_by:
                  type: array
                  items:
                    type: string
                    enum:
                      - model
                      - user
                      - automation
                owner_user_id:
                  type: integer
                  nullable: true
                  description: >-
                    Must be a user in this organization. On create, null or
                    omission defaults to the caller; on update, null or an unset
                    owner falls back to the caller, while omission preserves an
                    existing owner.
                tool_grants:
                  type: array
                  description: >-
                    Replaces the editable grant list. Grants on tools the caller
                    cannot see are kept.
                  items:
                    type: object
                    properties:
                      tool_key:
                        type: string
                      access:
                        type: string
                        enum:
                          - read
                          - write
                        nullable: true
                        description: >-
                          Defaults to the tool's access classification (read or
                          write) when omitted or null.
                      pinned_params:
                        type: object
                        nullable: true
                        description: >-
                          Pinned parameters apply only to write access. String
                          values must match the identifier pattern
                          `^[A-Za-z0-9_.:-]{1,64}$`. Each value is a single
                          string, integer, boolean or null; an array is accepted
                          only when it resends an existing stored value
                          unchanged.
                        additionalProperties:
                          oneOf:
                            - oneOf:
                                - type: string
                                  pattern: ^[A-Za-z0-9_.:-]{1,64}$
                                  nullable: true
                                - type: integer
                                - type: boolean
                            - type: array
                              items:
                                oneOf:
                                  - type: string
                                    pattern: ^[A-Za-z0-9_.:-]{1,64}$
                                    nullable: true
                                  - type: integer
                                  - type: boolean
                    required:
                      - tool_key
                    additionalProperties: false
                id:
                  type: string
                  readOnly: true
                  description: Ignored on write.
                source:
                  type: string
                  enum:
                    - custom
                    - gallery
                  readOnly: true
                  description: Ignored on write.
                source_template_key:
                  type: string
                  nullable: true
                  readOnly: true
                  description: Ignored on write.
                source_template_version:
                  type: integer
                  nullable: true
                  readOnly: true
                  description: Ignored on write.
                current_version:
                  type: integer
                  nullable: true
                  readOnly: true
                  description: Ignored on write.
                created_by_user_id:
                  type: integer
                  nullable: true
                  readOnly: true
                  description: Ignored on write.
                created_at:
                  type: string
                  format: date-time
                  readOnly: true
                  description: Ignored on write.
                updated_at:
                  type: string
                  format: date-time
                  readOnly: true
                  description: Ignored on write.
              minProperties: 1
              additionalProperties: false
          required:
            - type
            - attributes
          additionalProperties: false
      required:
        - data
      additionalProperties: false
    ai_skill_response:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: >-
                The skill ID. API path {id} accepts either this ID or the skill
                slug.
            type:
              type: string
              enum:
                - ai_skills
            attributes:
              type: object
              allOf:
                - $ref: '#/components/schemas/ai_skill'
          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
    ai_skill:
      type: object
      properties:
        name:
          type: string
        slug:
          type: string
        description:
          type: string
          nullable: true
        body:
          type: string
        enabled:
          type: boolean
        invocable_by:
          type: array
          items:
            type: string
            enum:
              - model
              - user
              - automation
        source:
          type: string
          enum:
            - custom
            - gallery
        source_template_key:
          type: string
          nullable: true
        source_template_version:
          type: integer
          nullable: true
        current_version:
          type: integer
          nullable: true
        tool_grants:
          type: array
          items:
            type: object
            properties:
              tool_key:
                type: string
              access:
                type: string
                enum:
                  - read
                  - write
                nullable: true
                description: >-
                  Defaults to the tool's access classification (read or write)
                  when omitted or null.
              pinned_params:
                type: object
                nullable: true
                description: >-
                  Pinned parameters apply only to write access. String values
                  must match the identifier pattern `^[A-Za-z0-9_.:-]{1,64}$`.
                  Each value is a single string, integer, boolean or null; an
                  array is accepted only when it resends an existing stored
                  value unchanged.
                additionalProperties:
                  oneOf:
                    - oneOf:
                        - type: string
                          pattern: ^[A-Za-z0-9_.:-]{1,64}$
                          nullable: true
                        - type: integer
                        - type: boolean
                    - type: array
                      items:
                        oneOf:
                          - type: string
                            pattern: ^[A-Za-z0-9_.:-]{1,64}$
                            nullable: true
                          - type: integer
                          - type: boolean
            required:
              - tool_key
              - access
              - pinned_params
            additionalProperties: false
        owner_user_id:
          type: integer
          nullable: true
          description: A user in this organization, or null.
        created_by_user_id:
          type: integer
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.