Tines REST API

The Tines REST API provides programmatic access to all platform resources including stories (workflows), actions, credentials, teams, folders, cases, records, dashboards, audit logs, SCIM provisioning, AI usage tracking, reporting, tags, and the workbench. The API uses API key authentication via X-User-Token header or Bearer token and is accessed via each tenant's custom subdomain.

OpenAPI Specification

tines-rest-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tines REST API
  description: >-
    The Tines REST API provides programmatic access to all platform resources
    including stories (workflows), actions, credentials, teams, folders, cases,
    records, dashboards, audit logs, SCIM provisioning, AI usage tracking,
    reporting, tags, and the workbench. The API uses API key authentication via
    X-User-Token header or Bearer token and is accessed via each tenant's
    custom subdomain.
  version: 1.0.0
  contact:
    name: Tines API Documentation
    url: https://www.tines.com/api/welcome/
  x-api-id: tines-rest-api
  x-provider-name: tines

servers:
  - url: https://{tenantDomain}/api/v1
    description: Tines tenant API v1
    variables:
      tenantDomain:
        default: your-tenant.tines.com
        description: Your Tines tenant domain (e.g. adjective-noun-1234.tines.com)
  - url: https://{tenantDomain}/api/v2
    description: Tines tenant API v2 (Cases)
    variables:
      tenantDomain:
        default: your-tenant.tines.com
        description: Your Tines tenant domain

security:
  - BearerAuth: []
  - ApiKeyAuth: []

tags:
  - name: Stories
    description: Manage stories (automated workflows)
  - name: Actions
    description: Manage individual actions within stories
  - name: Credentials
    description: Manage stored credentials for integrations
  - name: Teams
    description: Manage teams and team membership
  - name: Folders
    description: Organize stories, credentials, and resources into folders
  - name: Cases
    description: Manage security cases and incidents
  - name: Audit Logs
    description: Retrieve audit log entries for tenant activity
  - name: SCIM
    description: SCIM 2.0 identity provisioning for users and groups
  - name: Tags
    description: Manage tags for organizing resources

paths:

  # ─── Stories ─────────────────────────────────────────────────────────────────

  /stories:
    get:
      operationId: listStories
      summary: List stories
      description: Returns a paginated list of stories accessible by the authenticated API key.
      tags: [Stories]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - name: team_id
          in: query
          description: Filter stories by team ID
          schema:
            type: integer
        - name: folder_id
          in: query
          description: Filter stories by folder ID
          schema:
            type: integer
      responses:
        '200':
          description: Paginated list of stories
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      stories:
                        type: array
                        items:
                          $ref: '#/components/schemas/Story'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createStory
      summary: Create a story
      description: Creates a new story (workflow) within a team.
      tags: [Stories]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoryCreate'
            example:
              name: Simple story
              description: Detection system alerts
              team_id: 1
              folder_id: 1
      responses:
        '200':
          description: Story created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Story'
              example:
                id: 7981
                name: Simple story
                team_id: 1
                folder_id: 1
                guid: df1e838a18d20696120b41516497b017
                slug: simple_story
                published: true
                disabled: false
                created_at: '2021-05-10T08:56:50Z'

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /stories/{id}:
    get:
      operationId: getStory
      summary: Get a story
      description: Returns details for a specific story by ID.
      tags: [Stories]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Story details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Story'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateStory
      summary: Update a story
      description: Updates an existing story by ID.
      tags: [Stories]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoryCreate'
      responses:
        '200':
          description: Story updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Story'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteStory
      summary: Delete a story
      description: Deletes a story by ID.
      tags: [Stories]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Story deleted successfully

  # ─── Actions ─────────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /actions:
    get:
      operationId: listActions
      summary: List actions
      description: Returns a paginated list of actions.
      tags: [Actions]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - name: story_id
          in: query
          description: Filter actions by story ID
          schema:
            type: integer
      responses:
        '200':
          description: Paginated list of actions
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      actions:
                        type: array
                        items:
                          $ref: '#/components/schemas/Action'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createAction
      summary: Create an action
      description: Creates a new action within a story.
      tags: [Actions]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionCreate'
      responses:
        '200':
          description: Action created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /actions/{id}:
    get:
      operationId: getAction
      summary: Get an action
      description: Returns details for a specific action by ID.
      tags: [Actions]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Action details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateAction
      summary: Update an action
      description: Updates an existing action by ID.
      tags: [Actions]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionCreate'
      responses:
        '200':
          description: Action updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteAction
      summary: Delete an action
      description: Deletes an action by ID.
      tags: [Actions]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Action deleted successfully

  # ─── Credentials ─────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /user_credentials:
    get:
      operationId: listCredentials
      summary: List credentials
      description: Returns a paginated list of credentials accessible by the API key.
      tags: [Credentials]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - name: team_id
          in: query
          description: Filter credentials by team ID
          schema:
            type: integer
      responses:
        '200':
          description: Paginated list of credentials
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      user_credentials:
                        type: array
                        items:
                          $ref: '#/components/schemas/Credential'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createCredential
      summary: Create a credential
      description: Creates a new credential for use in stories and actions.
      tags: [Credentials]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialCreate'
            example:
              name: aws credential
              mode: AWS
              team_id: 2
              aws_authentication_type: ROLE
              aws_access_key: v_access_key
              aws_secret_key: v_secret_key
              aws_assumed_role_arn: v_role_arn
      responses:
        '200':
          description: Credential created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Credential'

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /user_credentials/{id}:
    get:
      operationId: getCredential
      summary: Get a credential
      description: Returns details for a specific credential by ID.
      tags: [Credentials]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Credential details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Credential'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateCredential
      summary: Update a credential
      description: Updates an existing credential by ID.
      tags: [Credentials]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialCreate'
      responses:
        '200':
          description: Credential updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Credential'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteCredential
      summary: Delete a credential
      description: Deletes a credential by ID.
      tags: [Credentials]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Credential deleted successfully

  # ─── Teams ───────────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /teams:
    get:
      operationId: listTeams
      summary: List teams
      description: Returns a list of teams accessible by the API key.
      tags: [Teams]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: List of teams
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      teams:
                        type: array
                        items:
                          $ref: '#/components/schemas/Team'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createTeam
      summary: Create a team
      description: Creates a new team.
      tags: [Teams]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [name]
              properties:
                name:
                  type: string
                  description: The team name
            example:
              name: Security team
      responses:
        '200':
          description: Team created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
              example:
                id: 1
                name: Security team

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /teams/{id}:
    get:
      operationId: getTeam
      summary: Get a team
      description: Returns details for a specific team by ID.
      tags: [Teams]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Team details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateTeam
      summary: Update a team
      description: Updates an existing team by ID.
      tags: [Teams]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '200':
          description: Team updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteTeam
      summary: Delete a team
      description: Deletes a team by ID.
      tags: [Teams]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Team deleted successfully

  # ─── Folders ─────────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /folders:
    get:
      operationId: listFolders
      summary: List folders
      description: Returns a paginated list of folders.
      tags: [Folders]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - name: team_id
          in: query
          description: Filter folders by team ID
          schema:
            type: integer
      responses:
        '200':
          description: Paginated list of folders
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      folders:
                        type: array
                        items:
                          $ref: '#/components/schemas/Folder'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createFolder
      summary: Create a folder
      description: Creates a new folder to organize stories, credentials, or resources.
      tags: [Folders]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FolderCreate'
            example:
              name: Folder name
              content_type: CREDENTIAL
              team_id: 1
              parent_folder_id: 5
      responses:
        '200':
          description: Folder created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
              example:
                id: 1
                name: Folder name
                content_type: CREDENTIAL
                team_id: 1
                size: 0
                parent_folder_id: 5

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /folders/{id}:
    get:
      operationId: getFolder
      summary: Get a folder
      description: Returns details for a specific folder by ID.
      tags: [Folders]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Folder details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateFolder
      summary: Update a folder
      description: Updates an existing folder by ID.
      tags: [Folders]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FolderCreate'
      responses:
        '200':
          description: Folder updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteFolder
      summary: Delete a folder
      description: Deletes a folder by ID.
      tags: [Folders]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Folder deleted successfully

  # ─── Audit Logs ──────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /audit_logs:
    get:
      operationId: listAuditLogs
      summary: List audit logs
      description: >-
        Returns a paginated list of audit log entries. Only accessible by
        tenant administrators.
      tags: [Audit Logs]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: Paginated list of audit log entries
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      audit_logs:
                        type: array
                        items:
                          $ref: '#/components/schemas/AuditLog'

  # ─── Tags ────────────────────────────────────────────────────────────────────

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /tags:
    get:
      operationId: listTags
      summary: List tags
      description: Returns a list of tags accessible by the API key.
      tags: [Tags]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: Paginated list of tags
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedMeta'
                  - type: object
                    properties:
                      tags:
                        type: array
                        items:
                          $ref: '#/components/schemas/Tag'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    post:
      operationId: createTag
      summary: Create a tag
      description: Creates a new tag for organizing resources.
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagCreate'
            example:
              name: priority-high
              team_id: 1
              color: red
      responses:
        '200':
          description: Tag created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
              example:
                id: 17
                name: priority-high
                color: '#FF8888'
                teams:
                  - id: 276
                    name: Test team 1
                created_at: '2026-04-10T09:15:42.128Z'
                updated_at: '2026-04-10T09:15:42.128Z'

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /tags/{id}:
    get:
      operationId: getTag
      summary: Get a tag
      description: Returns details for a specific tag by ID.
      tags: [Tags]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Tag details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    put:
      operationId: updateTag
      summary: Update a tag
      description: Updates an existing tag by ID.
      tags: [Tags]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagCreate'
      responses:
        '200':
          description: Tag updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteTag
      summary: Delete a tag
      description: Deletes a tag by ID.
      tags: [Tags]
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Tag deleted successfully

# ─── Cases (v2) ────────────────────────────────────────────────────────────────
# Note: Cases use /api/v2 base path

        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication using an Tines API key.
        Format: `Authorization: Bearer <api_key>`
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-User-Token
      description: >-
        API key authentication using the X-User-Token header.
        Format: `X-User-Token: <api_key>`

  parameters:
    ResourceId:
      name: id
      in: path
      required: true
      description: The unique numeric identifier of the resource
      schema:
        type: integer
    Page:
      name: page
      in: query
      description: Page number for pagination (default 1)
      schema:
        type: integer
        default: 1
    PerPage:
      name: per_page
      in: query
      description: Number of results per page (default 20, max 500)
      schema:
        type: integer
        default: 20
        maximum: 500

  schemas:
    PaginatedMeta:
      type: object
      properties:
        meta:
          type: object
          properties:
            current_page:
              type: integer
            previous_page:
              type: integer
              nullable: true
            next_page:
              type: integer
              nullable: true
            next_page_number:
              type: integer
              nullable: true
            per_page:
              type: integer
            pages:
              type: integer
            count:
              type: integer

    Story:
      type: object
      properties:
        id:
          type: integer
          description: Unique story identifier
        name:
          type: string
          description: Story name
        description:
          type: string
          description: User-defined description
        team_id:
          type: integer
          description: ID of the team that owns the story
        folder_id:
          type: integer
          nullable: true
          description: ID of the folder containing the story
        guid:
          type: string
          description: Globally unique story identifier
        slug:
          type: string
          description: URL-friendly story identifier
        published:
          type: boolean
          description: Whether the story is published
        disabled:
          type: boolean
          description: Whether the story is disabled
        priority:
          type: boolean
          description: Whether the story is high-priority
        keep_events_for:
          type: integer
          description: Event retention period in seconds
        tags:
          type: array
          items:
            type: string
          description: Tags associated with the story
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        edited_at:
          type: string
          format: date-time

    StoryCreate:
      type: object
      required: [team_id]
      properties:
        team_id:
          type: integer
          description: ID of the team to which the story should be added
        name:
          type: string
          description: Story name
        description:
          type: string
          description: User-defined description
        keep_events_for:
          type: integer
          description: Event retention in seconds (3600 to 31536000)
          minimum: 3600
          maximum: 31536000
        folder_id:
          type: integer
          description: Folder ID for organization
        tags:
          type: array
          items:
            type: string
          descripti

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tines/refs/heads/main/openapi/tines-rest-api-openapi.yml