---
info:
  title: Kitsu API
  description: |2

    ## Welcome to the Kitsu API specification
    ```Version: 1.0.28```

    The Kitsu API allows to store and manage the data of your animation/VFX production. Through it you can link all the tools of your pipeline and make sure they are all synchronized.

    An easy to use Python client to access this API is available:
    [Python Kitsu Client documentation](https://gazu.cg-wire.com/)

    ## Authentication<div class="auth">

    <p>Before you can use any of the endpoints outlined below,
    you will need to obtain a JWT token to authorize your requests.
    </p>

    <p>
    You will find detailed information on how to retrieve authentication tokens in the
    [Zou documentation](https://zou.cg-wire.com/api/).
    </p>

    <p>
    All API requests require authentication via JWT tokens passed in the Authorization header.
    </p>
  contact:
    name: CGWire
    url: https://www.cg-wire.com
  version: 1.0.28
  license:
    name: AGPL 3.0
    url: https://www.gnu.org/licenses/agpl-3.0.en.html
paths:
  "/auth/login":
    post:
      summary: Login user
      description: Log in user by creating and registering auth tokens. Login is based
        on email and password. If no user matches given email It fallbacks to a desktop
        ID. It is useful for desktop tools that don't know user email. It is also
        possible to login with TOTP, Email OTP, FIDO and recovery code.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  example: admin@example.com
                  description: User email address
                password:
                  type: string
                  format: password
                  example: "********"
                  description: User password
                  required: true
                totp:
                  type: string
                  example: 123456
                  description: TOTP verification code for two-factor authentication
                  required: false
                email_otp:
                  type: string
                  example: 123456
                  description: Email OTP verification code for two-factor authentication
                fido_authentication_response:
                  type: object
                  description: FIDO authentication response for WebAuth
                recovery_code:
                  type: string
                  example: ABCD-EFGH-IJKL-MNOP
                  description: Recovery code for two-factor authentication
              required:
              - email
              - password
      responses:
        '200':
          description: Login successful
        '400':
          description: Login failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/login" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "email": "admin@example.com",
            "password": "mysecretpassword",
            "totp": 123456,
            "email_otp": 123456,
            "fido_authentication_response": {},
            "recovery_code": "ABCD-EFGH-IJKL-MNOP"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/login"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "email": "admin@example.com",
              "password": "mysecretpassword",
              "totp": 123456,
              "email_otp": 123456,
              "fido_authentication_response": {},
              "recovery_code": "ABCD-EFGH-IJKL-MNOP"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/logout":
    get:
      summary: Logout user
      description: Log user out by revoking auth tokens. Once logged out, current
        user cannot access the API anymore.
      responses:
        '200':
          description: Logout successful
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/logout" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/logout"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/authenticated":
    get:
      summary: Check authentication status
      description: Returns information if the user is authenticated. It can be used
        by third party tools, especially browser frontend, to know if current user
        is still logged in.
      responses:
        '200':
          description: User authenticated
        '401':
          description: Person not found
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/authenticated" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/authenticated"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/register":
    post:
      summary: Register new user
      description: Allow a user to register himself to the service.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  example: admin@example.com
                  description: User email address
                password:
                  type: string
                  format: password
                  description: User password
                password_2:
                  type: string
                  format: password
                  description: Password confirmation
                first_name:
                  type: string
                  description: User first name
                last_name:
                  type: string
                  description: User last name
              required:
              - email
              - password
              - password_2
              - first_name
              - last_name
      responses:
        '201':
          description: Registration successful
        '400':
          description: Invalid password or email
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/register" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "email": "admin@example.com",
            "password": "",
            "password_2": "",
            "first_name": "",
            "last_name": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/register"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "email": "admin@example.com",
              "password": "",
              "password_2": "",
              "first_name": "",
              "last_name": ""
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/change-password":
    post:
      summary: Change user password
      description: Allow the user to change his password. Requires current password
        for verification and password confirmation to ensure accuracy.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                old_password:
                  type: string
                  format: password
                  description: Current password
                password:
                  type: string
                  format: password
                  description: New password
                password_2:
                  type: string
                  format: password
                  description: New password confirmation
              required:
              - old_password
              - password
              - password_2
      responses:
        '200':
          description: Password changed
        '400':
          description: Invalid password or inactive user
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/change-password" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "old_password": "",
            "password": "",
            "password_2": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/change-password"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "old_password": "",
              "password": "",
              "password_2": ""
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/reset-password":
    put:
      summary: Reset password with token
      description: Allow a user to change his password when he forgets it. It uses
        a token sent by email to the user to verify it is the user who requested the
        password reset.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  example: admin@example.com
                  description: User email address
                token:
                  type: string
                  format: JWT token
                  description: Password reset token
                password:
                  type: string
                  format: password
                  description: New password
                password2:
                  type: string
                  format: password
                  description: New password confirmation
              required:
              - email
              - token
              - password
              - password2
      responses:
        '200':
          description: Password reset
        '400':
          description: Invalid password Wrong or expired token Inactive user
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/auth/reset-password" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "email": "admin@example.com",
            "token": "",
            "password": "",
            "password2": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/reset-password"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "email": "admin@example.com",
              "token": "",
              "password": "",
              "password2": ""
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Request password reset
      description: Send a password reset token by email to the user. It uses a classic
        scheme where a token is sent by email.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  example: admin@example.com
                  description: User email address
              required:
              - email
      responses:
        '200':
          description: Reset token sent
        '400':
          description: Email not listed in database
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/reset-password" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "email": "admin@example.com"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/reset-password"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "email": "admin@example.com"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/refresh-token":
    get:
      summary: Refresh access token
      description: Tokens are considered outdated every two weeks. This route allows
        to extend their lifetime before they get outdated.
      responses:
        '200':
          description: Access Token
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/refresh-token" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/refresh-token"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/totp":
    put:
      summary: Pre-enable TOTP
      description: Prepare TOTP (Time-based One-Time Password) for enabling. It returns
        provisioning URI and secret for authenticator app setup.
      responses:
        '200':
          description: TOTP pre-enabled
        '400':
          description: TOTP already enabled
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/auth/totp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/totp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Disable TOTP
      description: Disable TOTP (Time-based One-Time Password) authentication. It
        requires two-factor authentication verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                totp:
                  type: string
                  description: TOTP verification code
                email_otp:
                  type: string
                  description: Email OTP verification code
                fido_authentication_response:
                  type: object
                  description: FIDO authentication response
                recovery_code:
                  type: string
                  description: Recovery code for two-factor authentication
      responses:
        '200':
          description: TOTP disabled
        '400':
          description: TOTP not enabled or verification failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/auth/totp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "totp": "",
            "email_otp": "",
            "fido_authentication_response": {},
            "recovery_code": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/totp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "totp": "",
              "email_otp": "",
              "fido_authentication_response": {},
              "recovery_code": ""
          }

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Enable TOTP
      description: Enable TOTP (Time-based One-Time Password) authentication. It requires
        verification code from authenticator app.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                totp:
                  type: string
                  description: TOTP verification code from authenticator app
              required:
              - totp
      responses:
        '200':
          description: TOTP enabled
        '400':
          description: TOTP already enabled or verification failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/totp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "totp": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/totp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "totp": ""
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/email-otp":
    get:
      summary: Send email OTP
      description: Send a one-time password by email to the user for authentication.
      responses:
        '200':
          description: OTP by email sent
        '400':
          description: OTP by email not enabled
      parameters:
      - in: query
        name: email
        required: true
        type: string
        format: email
        description: User email address
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/email-otp?email=" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/email-otp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "email": ""
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Disable email OTP
      description: Disable email OTP (One-Time Password) authentication. It requires
        two-factor authentication verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                totp:
                  type: string
                  description: TOTP verification code
                email_otp:
                  type: string
                  description: Email OTP verification code
                fido_authentication_response:
                  type: object
                  description: FIDO authentication response
                recovery_code:
                  type: string
                  description: Recovery code for two-factor authentication
      responses:
        '200':
          description: Email OTP disabled
        '400':
          description: Email OTP not enabled or verification failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/auth/email-otp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "totp": "",
            "email_otp": "",
            "fido_authentication_response": {},
            "recovery_code": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/email-otp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "totp": "",
              "email_otp": "",
              "fido_authentication_response": {},
              "recovery_code": ""
          }

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Pre-enable email OTP
      description: Prepare email OTP (One-Time Password) for enabling. It sets up
        email-based two-factor authentication.
      responses:
        '200':
          description: Email OTP pre-enabled
        '400':
          description: Email OTP already enabled
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/auth/email-otp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/email-otp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Enable email OTP
      description: Enable email OTP (One-Time Password) authentication. It requires
        verification code sent to email.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email_otp:
                  type: string
                  description: Email OTP verification code
              required:
              - email_otp
      responses:
        '200':
          description: Email OTP enabled
        '400':
          description: Email OTP already enabled or verification failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/email-otp" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "email_otp": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/email-otp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "email_otp": ""
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/recovery-codes":
    put:
      summary: Generate recovery codes
      description: Generate new recovery codes for two-factor authentication. It requires
        two-factor authentication verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                totp:
                  type: string
                  description: TOTP verification code
                email_otp:
                  type: string
                  description: Email OTP verification code
                fido_authentication_response:
                  type: object
                  description: FIDO authentication response
                recovery_code:
                  type: string
                  description: Recovery code for two-factor authentication
      responses:
        '200':
          description: New recovery codes generated
        '400':
          description: No two-factor authentication enabled or verification failed
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/auth/recovery-codes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "totp": "",
            "email_otp": "",
            "fido_authentication_response": {},
            "recovery_code": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/recovery-codes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "totp": "",
              "email_otp": "",
              "fido_authentication_response": {},
              "recovery_code": ""
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/fido":
    get:
      summary: Get FIDO challenge
      description: Get a challenge for FIDO device authentication. It is used for
        WebAuthn authentication flow.
      responses:
        '200':
          description: FIDO challenge generated
        '400':
          description: FIDO not enabled
      parameters:
      - in: query
        name: email
        required: true
        type: string
        format: email
        description: User email address
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/fido?email=" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/fido"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "email": ""
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Unregister FIDO device
      description: Unregister a FIDO device from WebAuthn authentication. It requires
        two-factor authentication verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                device_name:
                  type: string
                  description: Name of the FIDO device to unregister
              required:
              - device_name
      responses:
        '200':
          description: FIDO device unregistered
        '400':
          description: FIDO not enabled
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/auth/fido" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "totp": "",
            "email_otp": "",
            "fido_authentication_response": {},
            "recovery_code": "",
            "device_name": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/fido"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "totp": "",
              "email_otp": "",
              "fido_authentication_response": {},
              "recovery_code": "",
              "device_name": ""
          }

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Pre-register FIDO device
      description: Prepare FIDO device for registration. It returns registration options
        for WebAuthn.
      responses:
        '200':
          description: FIDO device pre-registered data
        '400':
          description: Invalid request
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/auth/fido" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/fido"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Register FIDO device
      description: Register a FIDO device for WebAuthn authentication. It requires
        registration response from the device.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                registration_response:
                  type: object
                  description: FIDO device registration response
                device_name:
                  type: string
                  description: Name for the FIDO device
              required:
              - registration_response
              - device_name
      responses:
        '200':
          description: FIDO device registered
        '400':
          description: Registration failed or no preregistration
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/fido" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "registration_response": {},
            "device_name": ""
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/fido"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "registration_response": {},
              "device_name": ""
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/saml/sso":
    post:
      summary: SAML SSO login
      description: Handle SAML SSO login response. Processes authentication response
        from SAML identity provider and creates a new user if they don't exist.
      responses:
        '302':
          description: Login successful, redirect to home page
        '400':
          description: SAML not enabled or wrong parameter
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/auth/saml/sso" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/saml/sso"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/auth/saml/login":
    get:
      summary: SAML SSO login redirect
      description: Initiate SAML SSO login by redirecting to SAML identity provider.
      responses:
        '302':
          description: Redirect to SAML identity provider
        '400':
          description: SAML not enabled or wrong parameter
      tags:
      - Authentication
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/auth/saml/login" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/auth/saml/login"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-types":
    get:
      summary: Get asset types
      description: Retrieve all available asset types (entity types that are not shot,
        sequence, or episode) with filtering support
      responses:
        '200':
          description: List of asset types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset type unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Asset type name
                      example: Character
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        type: string
        format: uuid
        description: Filter asset types by project
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-types?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-types/{asset_type_id}":
    get:
      summary: Get asset type
      description: Retrieve detailed information about a specific asset type including
        metadata and configuration
      responses:
        '200':
          description: Given asset type
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Asset type unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  name:
                    type: string
                    description: Asset type name
                    example: Character
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_type_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the asset type
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets":
    get:
      summary: Get all assets
      description: Retrieve all production assets with filtering and pagination. Supports
        advanced filtering by project, asset type, task status, and other criteria
      responses:
        '200':
          description: List of assets successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_name:
                      type: string
                      description: Project name
                      example: My Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
      parameters:
      - in: query
        name: project_id
        type: string
        format: uuid
        description: Filter assets by specific project
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: asset_type_id
        type: string
        format: uuid
        description: Filter assets by asset type
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: page
        type: integer
        description: Page number for pagination
        example: 1
      - in: query
        name: limit
        type: integer
        description: Number of assets per page
        example: 100
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets?project_id=a24a6ea4-ce75-4665-a070-57453082c25&asset_type_id=a24a6ea4-ce75-4665-a070-57453082c25&page=1&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "asset_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "page": 1,
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/all":
    get:
      summary: Get all assets
      description: Retrieve all production assets with filtering and pagination. Supports
        advanced filtering by project, asset type, task status, and other criteria
      responses:
        '200':
          description: List of assets successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_name:
                      type: string
                      description: Project name
                      example: My Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
      parameters:
      - in: query
        name: project_id
        type: string
        format: uuid
        description: Filter assets by specific project
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: asset_type_id
        type: string
        format: uuid
        description: Filter assets by asset type
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: page
        type: integer
        description: Page number for pagination
        example: 1
      - in: query
        name: limit
        type: integer
        description: Number of assets per page
        example: 100
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/all?project_id=a24a6ea4-ce75-4665-a070-57453082c25&asset_type_id=a24a6ea4-ce75-4665-a070-57453082c25&page=1&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "asset_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "page": 1,
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/with-tasks":
    get:
      summary: Get assets with tasks
      description: Retrieve all production assets with their related tasks. Includes
        project name, asset type name, and all associated tasks. Supports filtering
        by episode
      responses:
        '200':
          description: List of assets with tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_name:
                      type: string
                      description: Project name
                      example: My Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
                    tasks:
                      type: array
                      items:
                        type: object
                      description: Array of related tasks
      parameters:
      - in: query
        name: project_id
        type: string
        format: uuid
        description: Filter assets by specific project
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: episode_id
        type: string
        format: uuid
        description: Filter assets by episode (returns assets not linked to episode
          and assets linked to given episode)
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: asset_type_id
        type: string
        format: uuid
        description: Filter assets by asset type
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25&episode_id=a24a6ea4-ce75-4665-a070-57453082c25&asset_type_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "asset_type_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}":
    get:
      summary: Get asset ok
      description: Retrieve detailed information about a specific asset including
        metadata, project context, and related data
      responses:
        '200':
          description: Asset information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Asset unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Asset name
                    example: Character Name
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  entity_type_id:
                    type: string
                    format: uuid
                    description: Asset type identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete asset
      description: Permanently remove an asset from the system. Only asset creators
        or project managers can delete assets
      responses:
        '204':
          description: Asset successfully deleted
      parameters:
      - in: path
        name: asset_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the asset to delete
      - in: query
        name: force
        type: boolean
        required: false
        description: Force deletion bypassing validation checks
        example: false
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/assets":
    get:
      summary: Get linked assets
      description: Retrieve all assets that are linked to a specific asset through
        casting relationships
      responses:
        '200':
          description: List of linked assets successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Linked asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Linked asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/assets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/tasks":
    get:
      summary: Get asset tasks
      description: Retrieve all tasks related to a specific asset.
      responses:
        '200':
          description: List of asset tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    name:
                      type: string
                      description: Task name
                      example: Modeling Task
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: g80g2kg0-ik31-0221-g736-13019648i81
                    entity_id:
                      type: string
                      format: uuid
                      description: Asset identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    assigned_to:
                      type: string
                      format: uuid
                      description: Assigned user identifier
                      example: h91h3lh1-jl42-1332-h847-24120759j92
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      - in: query
        name: task_type_id
        type: string
        format: uuid
        description: Filter tasks by task type
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: task_status_id
        type: string
        format: uuid
        description: Filter tasks by task status
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/tasks?task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&task_status_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/task-types":
    get:
      summary: Get asset task types
      description: Retrieve all task types that are used for tasks related to a specific
        asset.
      responses:
        '200':
          description: List of asset task types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    name:
                      type: string
                      description: Task type name
                      example: Modeling
                    short_name:
                      type: string
                      description: Task type short name
                      example: MOD
                    color:
                      type: string
                      description: Task type color code
                      example: "#FF5733"
                    for_entity:
                      type: string
                      description: Entity type this task type is for
                      example: Asset
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/cast-in":
    get:
      summary: Get shots casting asset
      description: Retrieve all shots that cast a specific asset in their breakdown.
      responses:
        '200':
          description: List of shots casting the asset successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    name:
                      type: string
                      description: Shot name
                      example: SH001
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    sequence_id:
                      type: string
                      format: uuid
                      description: Sequence identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    frame_in:
                      type: integer
                      description: Frame in
                      example: 100
                    frame_out:
                      type: integer
                      description: Frame out
                      example: 200
                    duration:
                      type: integer
                      description: Shot duration in frames
                      example: 100
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/cast-in" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/cast-in"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/casting":
    put:
      summary: Update asset casting
      description: Modify the casting relationships for a specific asset by updating
        which shots or sequences use this asset.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Casting data to update
              properties:
                casting:
                  type: array
                  items:
                    type: object
                    properties:
                      entity_id:
                        type: string
                        format: uuid
                        description: Entity identifier to cast
                        example: d57d9hd7-fh08-7998-d403-80786315f58
                      entity_type:
                        type: string
                        description: Entity type (shot/sequence)
                        example: shot
      responses:
        '200':
          description: Asset casting successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  asset_id:
                    type: string
                    format: uuid
                    description: Asset unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  casting:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Casting entry unique identifier
                          example: b35b7fb5-df86-5776-b181-68564193d36
                        entity_id:
                          type: string
                          format: uuid
                          description: Entity identifier
                          example: d57d9hd7-fh08-7998-d403-80786315f58
                        entity_name:
                          type: string
                          description: Entity name
                          example: SH001
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "casting": [
              {
                "entity_id": "d57d9hd7-fh08-7998-d403-80786315f58",
                "entity_type": "shot"
              }
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "casting": [
                  {
                      "entity_id": "d57d9hd7-fh08-7998-d403-80786315f58",
                      "entity_type": "shot"
                  }
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    get:
      summary: Get asset casting
      description: Retrieve the casting information for a specific asset showing which
        shots or sequences use this asset
      responses:
        '200':
          description: Asset casting information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  asset_id:
                    type: string
                    format: uuid
                    description: Asset unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  casting:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Casting entry unique identifier
                          example: b35b7fb5-df86-5776-b181-68564193d36
                        entity_id:
                          type: string
                          format: uuid
                          description: Entity identifier (shot/sequence)
                          example: d57d9hd7-fh08-7998-d403-80786315f58
                        entity_name:
                          type: string
                          description: Entity name
                          example: SH001
                        entity_type:
                          type: string
                          description: Entity type (shot/sequence)
                          example: shot
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/shot-asset-instances":
    get:
      summary: Get shot asset instances
      description: Retrieve all shot asset instances that are linked to a specific
        asset.
      responses:
        '200':
          description: List of shot asset instances successfully retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset instance unique identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    asset_id:
                      type: string
                      format: uuid
                      description: Asset identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main character instance
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/shot-asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/shot-asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/scene-asset-instances":
    get:
      summary: Get scene asset instances
      description: Retrieve all scene asset instances that are linked to a specific
        asset.
      responses:
        '200':
          description: List of scene asset instances successfully retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset instance unique identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    asset_id:
                      type: string
                      format: uuid
                      description: Asset identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    scene_id:
                      type: string
                      format: uuid
                      description: Scene identifier
                      example: g80g2kg0-ik31-0221-g736-13019648i81
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main character instance
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/scene-asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/scene-asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/assets/{asset_id}/asset-asset-instances":
    get:
      summary: Get asset instances
      description: Retrieve all asset instances that are instantiated inside a specific
        asset.
      responses:
        '200':
          description: List of asset instances successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset instance unique identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    asset_id:
                      type: string
                      format: uuid
                      description: Parent asset identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    target_asset_id:
                      type: string
                      format: uuid
                      description: Target asset identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main character instance
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/asset-asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/asset-asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create asset instance
      description: Create a new asset instance inside a specific asset by instantiating
        another asset.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_to_instantiate_id
              properties:
                asset_to_instantiate_id:
                  type: string
                  format: uuid
                  description: Unique identifier of the asset to instantiate
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                description:
                  type: string
                  description: Description for the asset instance
                  example: Asset instance description
      responses:
        '201':
          description: Asset instance successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Created asset instance unique identifier
                    example: f79f1jf9-hj20-9110-f625-02908537h70
                  asset_id:
                    type: string
                    format: uuid
                    description: Parent asset identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  target_asset_id:
                    type: string
                    format: uuid
                    description: Target asset identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  number:
                    type: string
                    description: Instance number
                    example: '001'
                  description:
                    type: string
                    description: Instance description
                    example: Main character instance
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: asset_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the parent asset
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/asset-asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_to_instantiate_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "description": "Asset instance description"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/assets/a24a6ea4-ce75-4665-a070-57453082c25/asset-asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_to_instantiate_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "description": "Asset instance description"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/asset-types/{asset_type_id}/assets":
    get:
      summary: Get project asset type assets
      description: Retrieve all assets of a specific type within a project.
      responses:
        '200':
          description: List of project asset type assets successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_name:
                      type: string
                      description: Project name
                      example: My Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: asset_type_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset type
      - in: query
        name: page
        type: integer
        description: Page number for pagination
        example: 1
      - in: query
        name: limit
        type: integer
        description: Number of assets per page
        example: 100
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets?page=1&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/asset-types/{asset_type_id}/assets/new":
    post:
      summary: Create asset
      description: Create a new asset in a specific project with the given asset type
        and parameters.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - description
              - data
              - is_shared
              - source_id
              properties:
                name:
                  type: string
                  description: Asset name
                  example: Character Name
                description:
                  type: string
                  description: Asset description
                  example: Main character
                data:
                  type: object
                  description: Asset metadata and custom data
                  example:
                  - difficulty: easy
                    atmsophere: sunny
                is_shared:
                  type: boolean
                  description: Whether the asset is shared across projects
                  example: false
                source_id:
                  type: string
                  format: uuid
                  description: Source asset identifier for duplication
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                episode_id:
                  type: string
                  format: uuid
                  description: Episode identifier for episodic assets
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Asset successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Created asset unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Asset name
                    example: Character Name
                  description:
                    type: string
                    description: Asset description
                    example: Main character
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  entity_type_id:
                    type: string
                    format: uuid
                    description: Asset type identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: asset_type_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset type
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/new" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Character Name",
            "description": "Main character",
            "data": [
              {
                "difficulty": "easy",
                "atmsophere": "sunny"
              }
            ],
            "is_shared": false,
            "source_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/new"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Character Name",
              "description": "Main character",
              "data": [
                  {
                      "difficulty": "easy",
                      "atmsophere": "sunny"
                  }
              ],
              "is_shared": false,
              "source_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/asset-types":
    get:
      summary: Get project asset types
      description: Retrieve all asset types available for a specific project
      responses:
        '200':
          description: List of project asset types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset type unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Asset type name
                      example: Character
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: project_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the project
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/asset-types":
    get:
      summary: Get shot asset types
      description: Retrieve all asset types of assets that are casted in a specific
        shot
      responses:
        '200':
          description: List of shot asset types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset type unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Asset type name
                      example: Character
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
      parameters:
      - in: path
        name: shot_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the shot
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/asset-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/assets":
    get:
      summary: Get project assets
      description: Retrieve all assets belonging to a specific project with filtering
        support
      responses:
        '200':
          description: List of project assets successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_name:
                      type: string
                      description: Project name
                      example: My Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
      parameters:
      - in: path
        name: project_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        required: true
        description: Unique identifier of the project
      - in: query
        name: asset_type_id
        type: string
        format: uuid
        description: Filter assets by asset type
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: page
        type: integer
        description: Page number for pagination
        example: 1
      - in: query
        name: limit
        type: integer
        description: Number of assets per page
        example: 100
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets?asset_type_id=a24a6ea4-ce75-4665-a070-57453082c25&page=1&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "asset_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "page": 1,
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/assets/share":
    post:
      summary: Set assets shared
      description: Share or unshare a specific list of assets by their IDs.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_ids
              properties:
                asset_ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: List of asset IDs to update
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
                  - b35b7fb5-df86-5776-b181-68564193d36
                is_shared:
                  type: boolean
                  description: Whether to share or unshare the assets
                  example: true
      responses:
        '200':
          description: Assets shared status successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_count:
                    type: integer
                    description: Number of assets updated
                    example: 2
                  asset_ids:
                    type: array
                    items:
                      type: string
                      format: uuid
                    description: List of updated asset IDs
                    example:
                    - a24a6ea4-ce75-4665-a070-57453082c25
                    - b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/assets/share" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_ids": [
              "a24a6ea4-ce75-4665-a070-57453082c25",
              "b35b7fb5-df86-5776-b181-68564193d36"
            ],
            "is_shared": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/assets/share"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_ids": [
                  "a24a6ea4-ce75-4665-a070-57453082c25",
                  "b35b7fb5-df86-5776-b181-68564193d36"
              ],
              "is_shared": true
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/assets/share":
    post:
      summary: Set project assets shared
      description: Share or unshare all assets for a specific project or a list of
        specific assets.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                is_shared:
                  type: boolean
                  description: Whether to share or unshare the assets
                  example: true
                asset_ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: Specific asset IDs to update.
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
                  - b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '200':
          description: Assets shared status successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_count:
                    type: integer
                    description: Number of assets updated
                    example: 5
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets/share" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "is_shared": true,
            "asset_ids": [
              "a24a6ea4-ce75-4665-a070-57453082c25",
              "b35b7fb5-df86-5776-b181-68564193d36"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets/share"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "is_shared": true,
              "asset_ids": [
                  "a24a6ea4-ce75-4665-a070-57453082c25",
                  "b35b7fb5-df86-5776-b181-68564193d36"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/asset-types/{asset_type_id}/assets/share":
    post:
      summary: Set asset type assets shared
      description: Share or unshare all assets for a specific project and asset type.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                is_shared:
                  type: boolean
                  description: Whether to share or unshare the assets
                  example: true
      responses:
        '200':
          description: Asset type assets shared status successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_count:
                    type: integer
                    description: Number of assets updated
                    example: 3
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  asset_type_id:
                    type: string
                    format: uuid
                    description: Asset type identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: asset_type_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the asset type
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/share" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "is_shared": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/share"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "is_shared": true
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/assets/shared-used":
    get:
      summary: Get shared assets used in project
      description: Retrieve all shared assets that are used in a specific project.
      responses:
        '200':
          description: List of shared assets used in project successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Original project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    is_shared:
                      type: boolean
                      description: Whether the asset is shared
                      example: true
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets/shared-used" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets/shared-used"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/{episode_id}/assets/shared-used":
    get:
      summary: Get shared assets used in episode
      description: Retrieve all shared assets that are used in a specific project
        episode.
      responses:
        '200':
          description: List of shared assets used in episode successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Character Name
                    project_id:
                      type: string
                      format: uuid
                      description: Original project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    is_shared:
                      type: boolean
                      description: Whether the asset is shared
                      example: true
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the episode
      tags:
      - Assets
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/a24a6ea4-ce75-4665-a070-57453082c25/assets/shared-used" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/a24a6ea4-ce75-4665-a070-57453082c25/assets/shared-used"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/entities/{entity_id}/casting":
    put:
      summary: Update entity casting
      description: Modify the casting relationships for a specific entity by updating
        which assets are linked to it.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Casting data to update
              properties:
                casting:
                  type: array
                  items:
                    type: object
                    properties:
                      asset_id:
                        type: string
                        format: uuid
                        description: Asset identifier to link
                        example: c46c8gc6-eg97-6887-c292-79675204e47
                      asset_name:
                        type: string
                        description: Asset name
                        example: Main Character
      responses:
        '200':
          description: Entity casting successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  casting:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Casting entry unique identifier
                          example: b35b7fb5-df86-5776-b181-68564193d36
                        asset_id:
                          type: string
                          format: uuid
                          description: Asset identifier
                          example: c46c8gc6-eg97-6887-c292-79675204e47
                        asset_name:
                          type: string
                          description: Asset name
                          example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entities/a24a6ea4-ce75-4665-a070-57453082c25/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "casting": [
              {
                "asset_id": "c46c8gc6-eg97-6887-c292-79675204e47",
                "asset_name": "Main Character"
              }
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entities/a24a6ea4-ce75-4665-a070-57453082c25/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "casting": [
                  {
                      "asset_id": "c46c8gc6-eg97-6887-c292-79675204e47",
                      "asset_name": "Main Character"
                  }
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    get:
      summary: Get entity casting
      description: Retrieve the casting information for a specific entity showing
        which assets are linked to it.
      responses:
        '200':
          description: Entity casting information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  casting:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Casting entry unique identifier
                          example: b35b7fb5-df86-5776-b181-68564193d36
                        asset_id:
                          type: string
                          format: uuid
                          description: Asset identifier
                          example: c46c8gc6-eg97-6887-c292-79675204e47
                        asset_name:
                          type: string
                          description: Asset name
                          example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entities/a24a6ea4-ce75-4665-a070-57453082c25/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entities/a24a6ea4-ce75-4665-a070-57453082c25/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/asset-types/{asset_type_id}/casting":
    get:
      summary: Get asset type casting
      description: Retrieve the casting information for all assets of a specific asset
        type in a project.
      responses:
        '200':
          description: Asset type casting information successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    asset_id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    asset_name:
                      type: string
                      description: Asset name
                      example: Main Character
                    asset_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: g80g2kg0-ik31-0221-g736-13019648i81
                    casting:
                      type: array
                      items:
                        type: object
                        properties:
                          entity_id:
                            type: string
                            format: uuid
                            description: Entity identifier
                            example: e68e0ie8-gi19-8009-e514-91897426g69
                          entity_name:
                            type: string
                            description: Entity name
                            example: SH001
                          entity_type:
                            type: string
                            description: Entity type (shot/sequence)
                            example: shot
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: asset_type_id
        required: true
        type: string
        format: uuid
        example: g80g2kg0-ik31-0221-g736-13019648i81
        description: Unique identifier of the asset type
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/g80g2kg0-ik31-0221-g736-13019648i81/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/g80g2kg0-ik31-0221-g736-13019648i81/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/casting":
    get:
      summary: Get episodes casting
      description: Retrieve the casting information for all episodes in a specific
        project.
      responses:
        '200':
          description: Episodes casting information successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    episode_name:
                      type: string
                      description: Episode name
                      example: Episode 01
                    casting:
                      type: array
                      items:
                        type: object
                        properties:
                          asset_id:
                            type: string
                            format: uuid
                            description: Asset identifier
                            example: c46c8gc6-eg97-6887-c292-79675204e47
                          asset_name:
                            type: string
                            description: Asset name
                            example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/sequences/{sequence_id}/casting":
    get:
      summary: Get sequence shots casting
      description: Retrieve the casting information for all shots from a specific
        sequence.
      responses:
        '200':
          description: Sequence shots casting information successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    shot_name:
                      type: string
                      description: Shot name
                      example: SH001
                    sequence_id:
                      type: string
                      format: uuid
                      description: Sequence identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    casting:
                      type: array
                      items:
                        type: object
                        properties:
                          asset_id:
                            type: string
                            format: uuid
                            description: Asset identifier
                            example: c46c8gc6-eg97-6887-c292-79675204e47
                          asset_name:
                            type: string
                            description: Asset name
                            example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: f79f1jf9-hj20-9110-f625-02908537h70
        description: Unique identifier of the sequence
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences/f79f1jf9-hj20-9110-f625-02908537h70/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences/f79f1jf9-hj20-9110-f625-02908537h70/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/{episode_id}/sequences/all/casting":
    get:
      summary: Get episode shots casting
      description: Retrieve the casting information for all shots from a specific
        episode.
      responses:
        '200':
          description: Episode shots casting information successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    shot_name:
                      type: string
                      description: Shot name
                      example: SH001
                    casting:
                      type: array
                      items:
                        type: object
                        properties:
                          asset_id:
                            type: string
                            format: uuid
                            description: Asset identifier
                            example: c46c8gc6-eg97-6887-c292-79675204e47
                          asset_name:
                            type: string
                            description: Asset name
                            example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: d57d9hd7-fh08-7998-d403-80786315f58
        description: Unique identifier of the episode
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/d57d9hd7-fh08-7998-d403-80786315f58/sequences/all/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/d57d9hd7-fh08-7998-d403-80786315f58/sequences/all/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/sequences/all/casting":
    get:
      summary: Get project shots casting
      description: Retrieve the casting information for all shots from all sequences
        in a specific project.
      responses:
        '200':
          description: Project shots casting information successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    shot_name:
                      type: string
                      description: Shot name
                      example: SH001
                    sequence_id:
                      type: string
                      format: uuid
                      description: Sequence identifier
                      example: f79f1jf9-hj20-9110-f625-02908537h70
                    sequence_name:
                      type: string
                      description: Sequence name
                      example: SEQ01
                    casting:
                      type: array
                      items:
                        type: object
                        properties:
                          asset_id:
                            type: string
                            format: uuid
                            description: Asset identifier
                            example: c46c8gc6-eg97-6887-c292-79675204e47
                          asset_name:
                            type: string
                            description: Asset name
                            example: Main Character
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences/all/casting" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences/all/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/entity-links":
    get:
      summary: Get project entity links
      description: Retrieve all entity links related to a specific project. Results
        can be paginated using page and limit query parameters. If you prefer a more
        accurate pagination, you can use cursor_created_at to get the next page. It's
        mainly used for synchronisation purpose.
      responses:
        '200':
          description: Project entity links successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Entity link unique identifier
                      example: m46m8qm6-oq97-6887-m403-80786315o47
                    entity_in_id:
                      type: string
                      format: uuid
                      description: Source entity identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    entity_out_id:
                      type: string
                      format: uuid
                      description: Target entity identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2020-01-01T00:00:00'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: query
        name: page
        required: false
        type: integer
        example: 2
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        type: integer
        example: 100
        description: Number of items per page
      - in: query
        name: cursor_created_at
        required: false
        type: string
        format: date-time
        example: '2020-01-01T00:00:00'
        description: Cursor for pagination based on creation date
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entity-links?page=2&limit=100&cursor_created_at=2020-01-01T00%3A00%3A00" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entity-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 2,
              "limit": 100,
              "cursor_created_at": "2020-01-01T00:00:00"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/entity-links/{entity_link_id}":
    delete:
      summary: Delete entity link
      description: Delete a specific entity link. It's mainly used for synchronisation
        purpose.
      responses:
        '200':
          description: Entity link successfully deleted
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: entity_link_id
        required: true
        type: string
        format: uuid
        example: m46m8qm6-oq97-6887-m403-80786315o47
        description: Unique identifier of the entity link
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entity-links/m46m8qm6-oq97-6887-m403-80786315o47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/entity-links/m46m8qm6-oq97-6887-m403-80786315o47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/asset-instances":
    get:
      summary: Get scene asset instances
      description: Retrieve all asset instances that are linked to a specific scene.
      responses:
        '200':
          description: Scene asset instances successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset instance unique identifier
                      example: j13j5nj3-ln64-3554-j069-46342981l14
                    asset_id:
                      type: string
                      format: uuid
                      description: Asset identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    scene_id:
                      type: string
                      format: uuid
                      description: Scene identifier
                      example: i02i4mi2-km53-2443-i958-35231870k03
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main character instance
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: i02i4mi2-km53-2443-i958-35231870k03
        description: Unique identifier of the scene
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create scene asset instance
      description: Create an asset instance on a specific scene.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_id
              properties:
                asset_id:
                  type: string
                  format: uuid
                  description: Asset identifier to create instance from
                  example: c46c8gc6-eg97-6887-c292-79675204e47
                description:
                  type: string
                  description: Instance description
                  example: Main character instance
      responses:
        '201':
          description: Asset instance successfully created on scene
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Asset instance unique identifier
                    example: j13j5nj3-ln64-3554-j069-46342981l14
                  asset_id:
                    type: string
                    format: uuid
                    description: Asset identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  scene_id:
                    type: string
                    format: uuid
                    description: Scene identifier
                    example: i02i4mi2-km53-2443-i958-35231870k03
                  number:
                    type: string
                    description: Instance number
                    example: '001'
                  description:
                    type: string
                    description: Instance description
                    example: Main character instance
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: i02i4mi2-km53-2443-i958-35231870k03
        description: Unique identifier of the scene
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_id": "c46c8gc6-eg97-6887-c292-79675204e47",
            "description": "Main character instance"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "description": "Main character instance"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/camera-instances":
    get:
      summary: Get scene camera instances
      description: Retrieve all camera instances that are linked to a specific scene.
      responses:
        '200':
          description: Scene camera instances successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Camera instance unique identifier
                      example: k24k6ok4-mo75-4665-k180-57453082m25
                    camera_id:
                      type: string
                      format: uuid
                      description: Camera identifier
                      example: l35l7pl5-np86-5776-l291-68564193n36
                    scene_id:
                      type: string
                      format: uuid
                      description: Scene identifier
                      example: i02i4mi2-km53-2443-i958-35231870k03
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main camera instance
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: i02i4mi2-km53-2443-i958-35231870k03
        description: Unique identifier of the scene
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/camera-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/camera-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/asset-instances":
    get:
      summary: Get shot asset instances
      description: Retrieve all asset instances that are linked to a specific shot.
      responses:
        '200':
          description: Shot asset instances successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset instance unique identifier
                      example: h91h3lh1-jl42-1332-h847-24120759j92
                    asset_id:
                      type: string
                      format: uuid
                      description: Asset identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    shot_id:
                      type: string
                      format: uuid
                      description: Shot identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    number:
                      type: string
                      description: Instance number
                      example: '001'
                    description:
                      type: string
                      description: Instance description
                      example: Main character instance
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: e68e0ie8-gi19-8009-e514-91897426g69
        description: Unique identifier of the shot
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add shot asset instance
      description: Add an asset instance to a specific shot.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_instance_id
              properties:
                asset_instance_id:
                  type: string
                  format: uuid
                  description: Asset instance identifier to add
                  example: h91h3lh1-jl42-1332-h847-24120759j92
      responses:
        '201':
          description: Asset instance successfully added to shot
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Shot unique identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  name:
                    type: string
                    description: Shot name
                    example: SH001
                  asset_instances:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Asset instance unique identifier
                          example: h91h3lh1-jl42-1332-h847-24120759j92
                        asset_id:
                          type: string
                          format: uuid
                          description: Asset identifier
                          example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: e68e0ie8-gi19-8009-e514-91897426g69
        description: Unique identifier of the shot
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_instance_id": "h91h3lh1-jl42-1332-h847-24120759j92"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_instance_id": "h91h3lh1-jl42-1332-h847-24120759j92"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/asset-instances/{asset_instance_id}":
    delete:
      summary: Remove shot asset instance
      description: Remove an asset instance from a specific shot.
      responses:
        '204':
          description: Asset instance successfully removed from shot
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: e68e0ie8-gi19-8009-e514-91897426g69
        description: Unique identifier of the shot
      - in: path
        name: asset_instance_id
        required: true
        type: string
        format: uuid
        example: h91h3lh1-jl42-1332-h847-24120759j92
        description: Unique identifier of the asset instance
      tags:
      - Breakdown
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances/h91h3lh1-jl42-1332-h847-24120759j92" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/e68e0ie8-gi19-8009-e514-91897426g69/asset-instances/h91h3lh1-jl42-1332-h847-24120759j92"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/chat":
    get:
      summary: Get chat details
      description: Retrieve chat information and messages for a specific entity. Returns
        chat metadata including participants and all associated messages.
      responses:
        '200':
          description: Chat information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Chat unique identifier
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity ID this chat is associated with
                  participants:
                    type: array
                    items:
                      type: string
                      format: uuid
                    description: List of participant user IDs
                  messages:
                    type: array
                    items:
                      type: object
                    description: Array of chat messages
      parameters:
      - in: path
        name: entity_id
        description: ID of the entity related to the chat
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Chat
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/chat/messages":
    get:
      summary: Get chat messages
      description: Retrieve all chat messages for a specific entity. Returns a list
        of messages with sender information and timestamps.
      responses:
        '200':
          description: Chat messages successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Message unique identifier
                    message:
                      type: string
                      description: Message content
                    person_id:
                      type: string
                      format: uuid
                      description: ID of the message sender
                    created_at:
                      type: string
                      format: date-time
                      description: Message creation timestamp
                    attachments:
                      type: array
                      items:
                        type: object
                      description: Array of file attachments
      parameters:
      - in: path
        name: entity_id
        description: ID of the entity related to the chat
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Chat
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create chat message
      description: Create a new chat message for a specific entity. Supports both
        JSON and form data with optional file attachments. Only chat participants
        can send messages.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: Message content to send
                  example: Hello, world!
              required:
              - message
          multipart/form-data:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: Message content to send
                  example: Hello, world!
                files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: Files to attach to the message
              required:
              - message
      responses:
        '201':
          description: Chat message successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Created message unique identifier
                  message:
                    type: string
                    description: Message content
                  person_id:
                    type: string
                    format: uuid
                    description: ID of the message sender
                  created_at:
                    type: string
                    format: date-time
                    description: Message creation timestamp
                  attachments:
                    type: array
                    items:
                      type: object
                    description: Array of attached files
      parameters:
      - in: path
        name: entity_id
        description: ID of the entity related to the chat
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Chat
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "message": "Hello, world!"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "message": "Hello, world!"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/chat/messages/{chat_message_id}":
    get:
      summary: Get chat message
      description: Retrieve a specific chat message by its ID. Returns detailed message
        information including content and metadata.
      responses:
        '200':
          description: Chat message successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Message unique identifier
                  message:
                    type: string
                    description: Message content
                  person_id:
                    type: string
                    format: uuid
                    description: ID of the message sender
                  created_at:
                    type: string
                    format: date-time
                    description: Message creation timestamp
                  updated_at:
                    type: string
                    format: date-time
                    description: Message last update timestamp
                  attachments:
                    type: array
                    items:
                      type: object
                    description: Array of file attachments
      parameters:
      - in: path
        name: entity_id
        description: ID of the entity related to the chat
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: chat_message_id
        description: ID of the chat message
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Chat
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete chat message
      description: Delete a specific chat message. Only the message author or administrators
        can delete messages.
      responses:
        '204':
          description: Chat message successfully deleted
      parameters:
      - in: path
        name: entity_id
        description: ID of the entity related to the chat
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: chat_message_id
        description: ID of the chat message to delete
        type: string
        format: uuid
        required: true
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Chat
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/chat/messages/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments/{comment_id}/ack":
    post:
      summary: Acknowledge comment
      description: Acknowledge a specific comment. If it's already acknowledged, remove
        the acknowledgement.
      responses:
        '200':
          description: Comment acknowledgement status successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Comment unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  acknowledged:
                    type: boolean
                    description: Whether the comment is acknowledged
                    example: true
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      - in: path
        name: comment_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the comment
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/ack" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/ack"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments/{comment_id}/reply":
    post:
      summary: Reply to comment
      description: Add a reply to a specific comment. The reply will be added to the
        comment's replies list.
      responses:
        '200':
          description: Reply successfully added to comment
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Reply unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  comment_id:
                    type: string
                    format: uuid
                    description: Parent comment identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  text:
                    type: string
                    description: Reply text content
                    example: Thanks for the feedback!
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier who made the reply
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      - in: path
        name: comment_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the comment
      - in: formData
        name: text
        type: string
        example: Thanks for the feedback!
        description: Reply text content
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/reply" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/reply"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments/{comment_id}/attachments/{attachment_id}":
    delete:
      summary: Delete comment attachment
      description: Delete a specific attachment file linked to a comment. Only the
        comment author or project managers can delete attachments.
      responses:
        '204':
          description: Attachment successfully deleted
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      - in: path
        name: comment_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the comment
      - in: path
        name: attachment_id
        required: true
        type: string
        format: uuid
        example: c46c8gc6-eg97-6887-c292-79675204e47
        description: Unique identifier of the attachment
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/attachments/c46c8gc6-eg97-6887-c292-79675204e47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/attachments/c46c8gc6-eg97-6887-c292-79675204e47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments/{comment_id}/reply/{reply_id}":
    delete:
      summary: Delete comment reply
      description: Delete a specific reply from a comment. Only the reply author or
        administrators can delete replies.
      responses:
        '200':
          description: Reply successfully deleted
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      - in: path
        name: comment_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the comment
      - in: path
        name: reply_id
        required: true
        type: string
        format: uuid
        example: c46c8gc6-eg97-6887-c292-79675204e47
        description: Unique identifier of the reply
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/reply/c46c8gc6-eg97-6887-c292-79675204e47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/reply/c46c8gc6-eg97-6887-c292-79675204e47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/attachment-files/{attachment_file_id}/file/{file_name}":
    get:
      summary: Download attachment file
      description: Download a specific attachment file from a comment or chat message.
        Supports various file types including images and documents.
      responses:
        '200':
          description: Attachment file successfully downloaded
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: File content
      parameters:
      - in: path
        name: attachment_file_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the attachment file
      - in: path
        name: file_name
        required: true
        type: string
        example: document.pdf
        description: Name of the file to download
      tags:
      - Comments
      produces:
      - multipart/form-data
      - image/png
      - image/gif
      - image/jpeg
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25/file/document.pdf" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25/file/document.pdf"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/comments/{comment_id}/add-attachment":
    post:
      summary: Add comment attachments
      description: Add one or more files as attachments to a specific comment. Supports
        various file types including images and documents.
      responses:
        '201':
          description: Files successfully added as attachments
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Attachment file unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    name:
                      type: string
                      description: File name
                      example: document.pdf
                    mimetype:
                      type: string
                      description: File MIME type
                      example: application/pdf
                    size:
                      type: integer
                      description: File size in bytes
                      example: 1024000
                    comment_id:
                      type: string
                      format: uuid
                      description: Comment identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      - in: path
        name: comment_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the comment
      - in: formData
        name: reply_id
        type: string
        format: uuid
        example: c46c8gc6-eg97-6887-c292-79675204e47
        description: Reply identifier (optional)
      - in: formData
        name: files
        type: file
        required: true
        description: Files to attach to the comment
      tags:
      - Comments
      consumes:
      - image/png
      - image/gif
      - image/jpeg
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/add-attachment" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/b35b7fb5-df86-5776-b181-68564193d36/add-attachment"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/attachment-files":
    get:
      summary: Get project attachment files
      description: Retrieve all attachment files related to a specific project. Requires
        administrator permissions.
      responses:
        '200':
          description: Project attachment files successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Attachment file unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    name:
                      type: string
                      description: File name
                      example: document.pdf
                    mimetype:
                      type: string
                      description: File MIME type
                      example: application/pdf
                    size:
                      type: integer
                      description: File size in bytes
                      example: 1024000
                    comment_id:
                      type: string
                      format: uuid
                      description: Comment identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/attachment-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/attachment-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/attachment-files":
    get:
      summary: Get task attachment files
      description: Retrieve all attachment files related to a specific task. Requires
        administrator permissions.
      responses:
        '200':
          description: Task attachment files successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Attachment file unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    name:
                      type: string
                      description: File name
                      example: document.pdf
                    mimetype:
                      type: string
                      description: File MIME type
                      example: application/pdf
                    size:
                      type: integer
                      description: File size in bytes
                      example: 1024000
                    comment_id:
                      type: string
                      format: uuid
                      description: Comment identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    reply_id:
                      type: string
                      format: uuid
                      description: Reply identifier if attached to a reply
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/attachment-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/attachment-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/comment":
    post:
      summary: Create task comment
      description: Create a new comment for a specific task. It requires a text, a
        task_status and a person as arguments. This way, comments keep history of
        status changes. When the comment is created, it updates the task status with
        the given task status.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_status_id
              properties:
                task_status_id:
                  type: string
                  format: uuid
                  description: Task status identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
                comment:
                  type: string
                  description: Comment text content
                  example: This looks great! Ready for review.
                person_id:
                  type: string
                  format: uuid
                  description: Person identifier (optional, defaults to current user)
                  example: d57d9hd7-fh08-7998-d403-80786315f58
                created_at:
                  type: string
                  format: date-time
                  description: Creation timestamp (optional, defaults to current time)
                  example: '2023-01-01T12:00:00Z'
                checklist:
                  type: object
                  description: Checklist items for the comment
                  example:
                    item1: Check lighting
                    item2: Verify textures
                links:
                  type: array
                  items:
                    type: string
                  description: List of related links
                  example:
                  - https://example.com/reference1
                  - https://example.com/reference2
      responses:
        '201':
          description: Comment successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Comment unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  comment:
                    type: string
                    description: Comment text content
                    example: This looks great! Ready for review.
                  task_status_id:
                    type: string
                    format: uuid
                    description: Task status identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the task
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comment" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_status_id": "c46c8gc6-eg97-6887-c292-79675204e47",
            "comment": "This looks great! Ready for review.",
            "person_id": "d57d9hd7-fh08-7998-d403-80786315f58",
            "created_at": "2023-01-01T12:00:00Z",
            "checklist": {
              "item1": "Check lighting",
              "item2": "Verify textures"
            },
            "links": [
              "https://example.com/reference1",
              "https://example.com/reference2"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comment"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_status_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "comment": "This looks great! Ready for review.",
              "person_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "created_at": "2023-01-01T12:00:00Z",
              "checklist": {
                  "item1": "Check lighting",
                  "item2": "Verify textures"
              },
              "links": [
                  "https://example.com/reference1",
                  "https://example.com/reference2"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/tasks/comment-many":
    post:
      summary: Create multiple comments
      description: Create several comments at once for a specific project. Each comment
        requires a text, a task id, a task_status and a person as arguments. This
        way, comments keep history of status changes. When the comment is created,
        it updates the task status with the given task status.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                - task_status_id
                - object_id
                properties:
                  task_status_id:
                    type: string
                    format: uuid
                    description: Task status identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  comment:
                    type: string
                    description: Comment text content
                    example: This looks great! Ready for review.
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier (optional, defaults to current
                      user)
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  object_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp (optional, defaults to current
                      time)
                    example: '2023-01-01T12:00:00Z'
                  checklist:
                    type: object
                    description: Checklist items for the comment
                    example:
                      item1: Check lighting
                      item2: Verify textures
                  links:
                    type: array
                    items:
                      type: string
                    description: List of related links
                    example:
                    - https://example.com/reference1
                    - https://example.com/reference2
      responses:
        '201':
          description: Comments successfully created
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Comment unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    person_id:
                      type: string
                      format: uuid
                      description: Person identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    comment:
                      type: string
                      description: Comment text content
                      example: This looks great! Ready for review.
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks/comment-many" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "task_status_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "comment": "This looks great! Ready for review.",
              "person_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "object_id": "e68e0ie8-gi19-8009-e514-91897426g69",
              "created_at": "2023-01-01T12:00:00Z",
              "checklist": {
                "item1": "Check lighting",
                "item2": "Verify textures"
              },
              "links": [
                "https://example.com/reference1",
                "https://example.com/reference2"
              ]
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks/comment-many"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "task_status_id": "c46c8gc6-eg97-6887-c292-79675204e47",
                  "comment": "This looks great! Ready for review.",
                  "person_id": "d57d9hd7-fh08-7998-d403-80786315f58",
                  "object_id": "e68e0ie8-gi19-8009-e514-91897426g69",
                  "created_at": "2023-01-01T12:00:00Z",
                  "checklist": {
                      "item1": "Check lighting",
                      "item2": "Verify textures"
                  },
                  "links": [
                      "https://example.com/reference1",
                      "https://example.com/reference2"
                  ]
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons":
    get:
      summary: Get persons
      description: Retrieve all persons. Supports filtering via query parameters and
        pagination. Admin users can include password hashes. Non-admin users only
        see minimal information.
      responses:
        '200':
          description: Persons retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      - in: query
        name: with_pass_hash
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Include password hash (admin only)
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons?page=1&limit=50&relations=false&with_pass_hash=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false,
              "with_pass_hash": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create person
      description: Create a new person with data provided in the request body. JSON
        format is expected. Requires admin permissions. Validates role, contract_type,
        two_factor_authentication, email, and expiration_date. Checks user limit for
        active non-bot users.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - first_name
              - last_name
              - email
              properties:
                first_name:
                  type: string
                  example: John
                last_name:
                  type: string
                  example: Doe
                email:
                  type: string
                  format: email
                  example: john.doe@example.com
                password:
                  type: string
                  example: securepassword123
                role:
                  type: string
                  example: user
                active:
                  type: boolean
                  default: true
                  example: true
                contract_type:
                  type: string
                  example: permanent
                two_factor_authentication:
                  type: string
                  example: none
                expiration_date:
                  type: string
                  format: date
                  example: '2025-12-31'
                is_bot:
                  type: boolean
                  default: false
                  example: false
      responses:
        '201':
          description: Person created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  first_name:
                    type: string
                    example: John
                  last_name:
                    type: string
                    example: Doe
                  email:
                    type: string
                    format: email
                    example: john.doe@example.com
                  role:
                    type: string
                    example: user
                  active:
                    type: boolean
                    example: true
                  contract_type:
                    type: string
                    example: permanent
                  two_factor_authentication:
                    type: string
                    example: none
                  access_token:
                    type: string
                    example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error or user limit reached
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/persons" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "first_name": "John",
            "last_name": "Doe",
            "email": "john.doe@example.com",
            "password": "securepassword123",
            "role": "user",
            "active": true,
            "contract_type": "permanent",
            "two_factor_authentication": "none",
            "expiration_date": "2025-12-31",
            "is_bot": false
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "first_name": "John",
              "last_name": "Doe",
              "email": "john.doe@example.com",
              "password": "securepassword123",
              "role": "user",
              "active": true,
              "contract_type": "permanent",
              "two_factor_authentication": "none",
              "expiration_date": "2025-12-31",
              "is_bot": false
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{instance_id}":
    get:
      summary: Get person
      description: Retrieve a person by their ID and return it as a JSON object. Supports
        including relations. Managers see safe serialization, others see minimal information.
      responses:
        '200':
          description: Person retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  first_name:
                    type: string
                    example: John
                  last_name:
                    type: string
                    example: Doe
                  email:
                    type: string
                    format: email
                    example: john.doe@example.com
                  role:
                    type: string
                    example: user
                  active:
                    type: boolean
                    example: true
                  contract_type:
                    type: string
                    example: permanent
                  two_factor_authentication:
                    type: string
                    example: none
                  departments:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example: []
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete person
      description: Delete a person by their ID. Returns empty response on success.
        Cannot delete yourself.
      responses:
        '204':
          description: Person deleted successfully
        '400':
          description: Cannot delete person or integrity error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: force
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Force deletion even if person has associated data
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update person
      description: Update a person with data provided in the request body. JSON format
        is expected. Users can only update themselves unless they have admin permissions.
        Non-admins cannot change certain protected fields. Validates role, contract_type,
        two_factor_authentication, email, and expiration_date. Checks user limit when
        activating non-bot users. Protected accounts have restrictions.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  example: Jane
                last_name:
                  type: string
                  example: Smith
                email:
                  type: string
                  format: email
                  example: jane.smith@example.com
                password:
                  type: string
                  example: newsecurepassword123
                role:
                  type: string
                  example: manager
                  description: Admin only
                active:
                  type: boolean
                  example: true
                  description: Admin only
                contract_type:
                  type: string
                  example: freelance
                two_factor_authentication:
                  type: string
                  example: totp
                expiration_date:
                  type: string
                  format: date
                  example: '2025-12-31'
                  description: Person or admin only
      responses:
        '200':
          description: Person updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  first_name:
                    type: string
                    example: Jane
                  last_name:
                    type: string
                    example: Smith
                  email:
                    type: string
                    format: email
                    example: jane.smith@example.com
                  role:
                    type: string
                    example: manager
                  active:
                    type: boolean
                    example: true
                  contract_type:
                    type: string
                    example: freelance
                  two_factor_authentication:
                    type: string
                    example: totp
                  departments:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example: []
                  access_token:
                    type: string
                    example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error or user limit reached
            or protected account restriction
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "first_name": "Jane",
            "last_name": "Smith",
            "email": "jane.smith@example.com",
            "password": "newsecurepassword123",
            "role": "manager",
            "active": true,
            "contract_type": "freelance",
            "two_factor_authentication": "totp",
            "expiration_date": "2025-12-31"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "first_name": "Jane",
              "last_name": "Smith",
              "email": "jane.smith@example.com",
              "password": "newsecurepassword123",
              "role": "manager",
              "active": true,
              "contract_type": "freelance",
              "two_factor_authentication": "totp",
              "expiration_date": "2025-12-31"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects":
    get:
      summary: Get projects
      description: Retrieve all projects. Supports filtering via query parameters
        and pagination. Includes project permission filtering for non-admin users.
      responses:
        '200':
          description: Projects retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project
      description: Create a new project with data provided in the request body. JSON
        format is expected. Validates production_style. For tvshow production type,
        automatically creates first episode.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Project Name
                production_type:
                  type: string
                  example: feature
                production_style:
                  type: string
                  default: 2d3d
                  example: 2d3d
                project_status_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Project created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Project Name
                  production_type:
                    type: string
                    example: feature
                  production_style:
                    type: string
                    example: 2d3d
                  project_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  first_episode_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or invalid production_style
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Project Name",
            "production_type": "feature",
            "production_style": "2d3d",
            "project_status_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Project Name",
              "production_type": "feature",
              "production_style": "2d3d",
              "project_status_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{instance_id}":
    get:
      summary: Get project
      description: Retrieve a project by its ID and return it as a JSON object. Supports
        including relations. Requires project access.
      responses:
        '200':
          description: Project retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Project Name
                  production_type:
                    type: string
                    example: feature
                  production_style:
                    type: string
                    example: 2d3d
                  project_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  project_status_name:
                    type: string
                    example: Open
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete project
      description: Delete a project by its ID. Only closed projects can be deleted.
        Returns empty response on success.
      responses:
        '204':
          description: Project deleted successfully
        '400':
          description: Only closed projects can be deleted or integrity error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: force
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Force deletion with cascading removal
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update project
      description: Update a project with data provided in the request body. JSON format
        is expected. Requires manager access to the project. Validates production_style.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Project Name
                production_style:
                  type: string
                  example: 2d
                preview_background_file_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Project updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Project Name
                  production_type:
                    type: string
                    example: feature
                  production_style:
                    type: string
                    example: 2d
                  project_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  first_episode_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or invalid production_style
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Project Name",
            "production_style": "2d",
            "preview_background_file_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Project Name",
              "production_style": "2d",
              "preview_background_file_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/project-status":
    get:
      summary: Get project statuses
      description: Retrieve all project statuses. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Project statuses retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/project-status?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/project-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project status
      description: Create a new project status with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Open
                color:
                  type: string
                  example: "#00FF00"
      responses:
        '201':
          description: Project status created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Open
                  color:
                    type: string
                    example: "#00FF00"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/project-status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Open",
            "color": "#00FF00"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/project-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Open",
              "color": "#00FF00"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/project-status/{instance_id}":
    get:
      summary: Get project status
      description: Retrieve a project status by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Project status retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Open
                  color:
                    type: string
                    example: "#00FF00"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete project status
      description: Delete a project status by its ID. Returns empty response on success.
      responses:
        '204':
          description: Project status deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update project status
      description: Update a project status with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Closed
                color:
                  type: string
                  example: "#FF0000"
      responses:
        '200':
          description: Project status updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Closed
                  color:
                    type: string
                    example: "#FF0000"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Closed",
            "color": "#FF0000"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/project-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Closed",
              "color": "#FF0000"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/project-templates":
    get:
      summary: Get project templates
      description: Retrieve all project templates. Manager+ access.
      responses:
        '200':
          description: Project templates retrieved successfully
      tags:
      - Crud
    post:
      summary: Create project template
      description: Create a new empty project template. Admin only.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                description:
                  type: string
                fps:
                  type: string
                ratio:
                  type: string
                resolution:
                  type: string
                production_type:
                  type: string
                production_style:
                  type: string
      responses:
        '201':
          description: Project template created successfully
        '400':
          description: Invalid data or duplicate name
      tags:
      - Crud
  "/data/project-templates/{instance_id}":
    get:
      summary: Get project template
      description: Retrieve a project template by its ID. Manager+ access.
      tags:
      - Crud
    delete:
      summary: Delete project template
      description: Delete a project template. Admin only.
      tags:
      - Crud
    put:
      summary: Update project template
      description: Update a project template. Admin only.
      tags:
      - Crud
  "/data/entity-types":
    get:
      summary: Get entity types
      description: Retrieve all entity types. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Entity types retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entity-types?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create entity type
      description: Create a new entity type with data provided in the request body.
        JSON format is expected. Entity type names must be unique.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Character
                color:
                  type: string
                  example: "#FF5733"
      responses:
        '201':
          description: Entity type created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Character
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or entity type already exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entity-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Character",
            "color": "#FF5733"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Character",
              "color": "#FF5733"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entity-types/{instance_id}":
    get:
      summary: Get entity type
      description: Retrieve an entity type by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Entity type retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Character
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete entity type
      description: Delete an entity type by its ID. Returns empty response on success.
      responses:
        '204':
          description: Entity type deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update entity type
      description: Update an entity type with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Character
                color:
                  type: string
                  example: "#FF5734"
      responses:
        '200':
          description: Entity type updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Character
                  color:
                    type: string
                    example: "#FF5734"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Character",
            "color": "#FF5734"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Character",
              "color": "#FF5734"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities":
    get:
      summary: Get entities
      description: Retrieve all entities. Supports filtering via query parameters
        and pagination. Includes project permission filtering for non-admin users.
      responses:
        '200':
          description: Entities retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create entity
      description: Create a new entity with data provided in the request body. JSON
        format is expected. Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - project_id
              - entity_type_id
              properties:
                name:
                  type: string
                  example: SH010
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_type_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                status:
                  type: string
                  example: running
                data:
                  type: object
                  example:
                    frame_in: 1001
                    frame_out: 1120
      responses:
        '201':
          description: Entity created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_type_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  status:
                    type: string
                    example: running
                  data:
                    type: object
                    example:
                      frame_in: 1001
                      frame_out: 1120
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "SH010",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "status": "running",
            "data": {
              "frame_in": 1001,
              "frame_out": 1120
            }
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "SH010",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "status": "running",
              "data": {
                  "frame_in": 1001,
                  "frame_out": 1120
              }
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{instance_id}":
    get:
      summary: Get entity
      description: Retrieve an entity by its ID and return it as a JSON object. Supports
        including relations. Requires project access.
      responses:
        '200':
          description: Entity retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_type_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  status:
                    type: string
                    example: running
                  data:
                    type: object
                    example:
                      frame_in: 1001
                      frame_out: 1120
                  type:
                    type: string
                    example: shot
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete entity
      description: Delete an entity by its ID. Returns empty response on success.
        Can only be deleted by creator or project manager.
      responses:
        '204':
          description: Entity deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update entity
      description: Update an entity with data provided in the request body. JSON format
        is expected. Supports shot versioning when frame data changes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: SH010
                data:
                  type: object
                  example:
                    frame_in: 1001
                    frame_out: 1120
      responses:
        '200':
          description: Entity updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  data:
                    type: object
                    example:
                      frame_in: 1001
                      frame_out: 1120
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "SH010",
            "data": {
              "frame_in": 1001,
              "frame_out": 1120
            }
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "SH010",
              "data": {
                  "frame_in": 1001,
                  "frame_out": 1120
              }
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-types":
    get:
      summary: Get task types
      description: Retrieve all task types. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Task types retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/task-types?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create task type
      description: Create a new task type with data provided in the request body.
        JSON format is expected. Task type names must be unique.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - for_entity
              properties:
                name:
                  type: string
                  example: Animation
                for_entity:
                  type: string
                  example: Shot
                color:
                  type: string
                  example: "#FF5733"
      responses:
        '201':
          description: Task type created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Animation
                  for_entity:
                    type: string
                    example: Shot
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or task type name already exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Animation",
            "for_entity": "Shot",
            "color": "#FF5733"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Animation",
              "for_entity": "Shot",
              "color": "#FF5733"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-types/{instance_id}":
    get:
      summary: Get task type
      description: Retrieve a task type by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Task type retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Animation
                  for_entity:
                    type: string
                    example: Shot
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete task type
      description: Delete a task type by its ID. Returns empty response on success.
      responses:
        '204':
          description: Task type deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update task type
      description: Update a task type with data provided in the request body. JSON
        format is expected. Task type names must be unique.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Animation
                color:
                  type: string
                  example: "#FF5734"
      responses:
        '200':
          description: Task type updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Animation
                  for_entity:
                    type: string
                    example: Shot
                  color:
                    type: string
                    example: "#FF5734"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or task type name already exists
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Animation",
            "color": "#FF5734"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Animation",
              "color": "#FF5734"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-type-links":
    post:
      summary: Create project task type link
      description: Create a link between a project and a task type. Sets the priority
        of the task type within the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - project_id
              - task_type_id
              properties:
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                priority:
                  type: integer
                  default: 1
                  example: 1
                  description: Priority of the task type in the project
      responses:
        '201':
          description: Project task type link created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  priority:
                    type: integer
                    example: 1
        '400':
          description: Invalid project or task type
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/task-type-links" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "priority": 1
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-type-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "priority": 1
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-status":
    get:
      summary: Get task statuses
      description: Retrieve all task statuses. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Task statuses retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/task-status?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create task status
      description: Create a new task status with data provided in the request body.
        JSON format is expected. If is_default is true, sets all other statuses to
        non-default.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: To Do
                short_name:
                  type: string
                  example: TODO
                color:
                  type: string
                  example: "#FF5733"
                is_default:
                  type: boolean
                  default: false
                  example: false
      responses:
        '201':
          description: Task status created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: To Do
                  short_name:
                    type: string
                    example: TODO
                  color:
                    type: string
                    example: "#FF5733"
                  is_default:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/task-status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "To Do",
            "short_name": "TODO",
            "color": "#FF5733",
            "is_default": false
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "To Do",
              "short_name": "TODO",
              "color": "#FF5733",
              "is_default": false
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-status/{instance_id}":
    get:
      summary: Get task status
      description: Retrieve a task status by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Task status retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: To Do
                  short_name:
                    type: string
                    example: TODO
                  color:
                    type: string
                    example: "#FF5733"
                  is_default:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete task status
      description: Delete a task status by its ID. Returns empty response on success.
      responses:
        '204':
          description: Task status deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update task status
      description: Update a task status with data provided in the request body. JSON
        format is expected. If is_default is set to true, sets all other statuses
        to non-default.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: In Progress
                short_name:
                  type: string
                  example: WIP
                color:
                  type: string
                  example: "#00FF00"
                is_default:
                  type: boolean
                  example: true
      responses:
        '200':
          description: Task status updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: In Progress
                  short_name:
                    type: string
                    example: WIP
                  color:
                    type: string
                    example: "#00FF00"
                  is_default:
                    type: boolean
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "In Progress",
            "short_name": "WIP",
            "color": "#00FF00",
            "is_default": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "In Progress",
              "short_name": "WIP",
              "color": "#00FF00",
              "is_default": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/task-status-links":
    post:
      summary: Create project task status link
      description: Create a link between a project and a task status. Sets the priority
        and roles that can view it on the board.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - project_id
              - task_status_id
              properties:
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_status_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                priority:
                  type: integer
                  default: 1
                  example: 1
                  description: Priority of the task status in the project
                roles_for_board:
                  type: array
                  items:
                    type: string
                  example:
                  - admin
                  - manager
                  description: Roles allowed to see this status on the board
      responses:
        '201':
          description: Project task status link created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  priority:
                    type: integer
                    example: 1
                  roles_for_board:
                    type: array
                    items:
                      type: string
                    example:
                    - admin
                    - manager
        '400':
          description: Invalid project or task status
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/task-status-links" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "priority": 1,
            "roles_for_board": [
              "admin",
              "manager"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/task-status-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "priority": 1,
              "roles_for_board": [
                  "admin",
                  "manager"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks":
    get:
      summary: Get tasks
      description: Retrieve all tasks. Supports filtering via query parameters and
        pagination. Includes project permission filtering for non-admin users. Vendor
        users only see assigned tasks.
      responses:
        '200':
          description: Tasks retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      - in: query
        name: episode_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter tasks by episode ID
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks?page=1&limit=50&relations=false&episode_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false,
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create task
      description: Create a task with data provided in the request body. JSON format
        is expected. The task type must match the entity type.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_type_id
              - entity_id
              properties:
                task_type_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                assignees:
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                  - c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Task created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example:
                    - c24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Task type does not match entity type or task already exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "assignees": [
              "c24a6ea4-ce75-4665-a070-57453082c25"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "assignees": [
                  "c24a6ea4-ce75-4665-a070-57453082c25"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{instance_id}":
    get:
      summary: Get task
      description: Retrieve a task by its ID and return it as a JSON object. Supports
        including relations. Requires project and entity access.
      responses:
        '200':
          description: Task retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: e24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example:
                    - f24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete task
      description: Delete a task by its ID. Returns empty response on success. May
        require force flag if task has associated data.
      responses:
        '204':
          description: Task deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: force
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Force deletion even if task has associated data
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update task
      description: Update a task with data provided in the request body. JSON format
        is expected. Requires supervisor access.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                task_status_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                assignees:
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                  - c24a6ea4-ce75-4665-a070-57453082c25
                duration:
                  type: number
                  example: 8.5
      responses:
        '200':
          description: Task updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: e24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example:
                    - f24a6ea4-ce75-4665-a070-57453082c25
                  duration:
                    type: number
                    example: 8.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "assignees": [
              "c24a6ea4-ce75-4665-a070-57453082c25"
            ],
            "duration": 8.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "assignees": [
                  "c24a6ea4-ce75-4665-a070-57453082c25"
              ],
              "duration": 8.5
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments":
    get:
      summary: Get departments
      description: Retrieve all departments. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Departments retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create department
      description: Create a new department with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Animation
                color:
                  type: string
                  example: "#FF5733"
      responses:
        '201':
          description: Department created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Animation
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/departments" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Animation",
            "color": "#FF5733"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Animation",
              "color": "#FF5733"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/{instance_id}":
    get:
      summary: Get department
      description: Retrieve a department by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Department retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Animation
                  color:
                    type: string
                    example: "#FF5733"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete department
      description: Delete a department by its ID. Returns empty response on success.
      responses:
        '204':
          description: Department deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update department
      description: Update a department with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Animation
                color:
                  type: string
                  example: "#FF5734"
      responses:
        '200':
          description: Department updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Animation
                  color:
                    type: string
                    example: "#FF5734"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Animation",
            "color": "#FF5734"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Animation",
              "color": "#FF5734"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/organisations":
    get:
      summary: Get organisations
      description: Retrieve all organisations. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Organisations retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/organisations?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/organisations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create organisation
      description: Create a new organisation with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Studio Name
                hours_by_day:
                  type: number
                  example: 8.0
      responses:
        '201':
          description: Organisation created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Studio Name
                  hours_by_day:
                    type: number
                    example: 8.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/organisations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Studio Name",
            "hours_by_day": 8
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/organisations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Studio Name",
              "hours_by_day": 8
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/organisations/{instance_id}":
    get:
      summary: Get organisation
      description: Retrieve an organisation by its ID and return it as a JSON object.
        Supports including relations. Non-admin users cannot see chat tokens.
      responses:
        '200':
          description: Organisation retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Studio Name
                  hours_by_day:
                    type: number
                    example: 8.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete organisation
      description: Delete an organisation by its ID. Returns empty response on success.
      responses:
        '204':
          description: Organisation deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update organisation
      description: Update an organisation with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Studio Name
                hours_by_day:
                  type: number
                  example: 7.5
      responses:
        '200':
          description: Organisation updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Studio Name
                  hours_by_day:
                    type: number
                    example: 7.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Studio Name",
            "hours_by_day": 7.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/organisations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Studio Name",
              "hours_by_day": 7.5
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/file-status/":
    get:
      summary: Get file statuses
      description: Retrieve all file statuses. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: File statuses retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/file-status/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/file-status/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create file status
      description: Create a new file status with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Approved
                color:
                  type: string
                  example: "#00FF00"
      responses:
        '201':
          description: File status created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Approved
                  color:
                    type: string
                    example: "#00FF00"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/file-status/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Approved",
            "color": "#00FF00"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/file-status/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Approved",
              "color": "#00FF00"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/file-status/{instance_id}":
    get:
      summary: Get file status
      description: Retrieve a file status by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: File status retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Approved
                  color:
                    type: string
                    example: "#00FF00"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete file status
      description: Delete a file status by its ID. Returns empty response on success.
      responses:
        '204':
          description: File status deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update file status
      description: Update a file status with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Rejected
                color:
                  type: string
                  example: "#FF0000"
      responses:
        '200':
          description: File status updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Rejected
                  color:
                    type: string
                    example: "#FF0000"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Rejected",
            "color": "#FF0000"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/file-status/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Rejected",
              "color": "#FF0000"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/softwares":
    get:
      summary: Get models
      description: Retrieve all entries for the given model. Supports filtering via
        query parameters and pagination.
      responses:
        '200':
          description: Models retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/softwares?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/softwares"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create model
      description: Create a new model instance with data provided in the request body.
        JSON format is expected. The model performs validation automatically when
        instantiated.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Model Name
      responses:
        '201':
          description: Model created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/softwares" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/softwares"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Model Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/softwares/{instance_id}":
    get:
      summary: Get software
      description: Retrieve a software instance by its ID and return it as a JSON
        object.
      responses:
        '200':
          description: Software retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Maya
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete model
      description: Delete a model instance by its ID. Returns empty response on success.
      responses:
        '204':
          description: Model deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update model
      description: Update a model instance with data provided in the request body.
        JSON format is expected. Model performs validation automatically when fields
        are modified.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Model Name
      responses:
        '200':
          description: Model updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/softwares/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Model Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/hardware-items":
    get:
      summary: Get hardware items
      description: Retrieve all hardware items. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Hardware items retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/hardware-items?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/hardware-items"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create hardware item
      description: Create a new hardware item with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Workstation 01
                serial_number:
                  type: string
                  example: SN123456
      responses:
        '201':
          description: Hardware item created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Workstation 01
                  serial_number:
                    type: string
                    example: SN123456
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/hardware-items" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Workstation 01",
            "serial_number": "SN123456"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/hardware-items"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Workstation 01",
              "serial_number": "SN123456"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/hardware-items/{instance_id}":
    get:
      summary: Get hardware item
      description: Retrieve a hardware item by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Hardware item retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Workstation 01
                  serial_number:
                    type: string
                    example: SN123456
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete hardware item
      description: Delete a hardware item by its ID. Returns empty response on success.
      responses:
        '204':
          description: Hardware item deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update hardware item
      description: Update a hardware item with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Workstation 01
                serial_number:
                  type: string
                  example: SN123457
      responses:
        '200':
          description: Hardware item updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Workstation 01
                  serial_number:
                    type: string
                    example: SN123457
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Workstation 01",
            "serial_number": "SN123457"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/hardware-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Workstation 01",
              "serial_number": "SN123457"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/output-files":
    get:
      summary: Get models
      description: Retrieve all entries for the given model. Supports filtering via
        query parameters and pagination.
      responses:
        '200':
          description: Models retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/output-files?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create model
      description: Create a new model instance with data provided in the request body.
        JSON format is expected. The model performs validation automatically when
        instantiated.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Model Name
      responses:
        '201':
          description: Model created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/output-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Model Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/output-files/{instance_id}":
    get:
      summary: Get output file
      description: Retrieve an output file instance by its ID and return it as a JSON
        object.
      responses:
        '200':
          description: Output file retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: output_file_v001
                  entity_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete model
      description: Delete a model instance by its ID. Returns empty response on success.
      responses:
        '204':
          description: Model deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update model
      description: Update a model instance with data provided in the request body.
        JSON format is expected. Model performs validation automatically when fields
        are modified.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Model Name
      responses:
        '200':
          description: Model updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Model Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/output-types":
    get:
      summary: Get models
      description: Retrieve all entries for the given model. Supports filtering via
        query parameters and pagination.
      responses:
        '200':
          description: Models retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/output-types?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create model
      description: Create a new model instance with data provided in the request body.
        JSON format is expected. The model performs validation automatically when
        instantiated.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Model Name
      responses:
        '201':
          description: Model created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/output-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Model Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/output-types/{instance_id}":
    get:
      summary: Get output type
      description: Retrieve an output type instance by its ID and return it as a JSON
        object.
      responses:
        '200':
          description: Output type retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Image
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete model
      description: Delete a model instance by its ID. Returns empty response on success.
      responses:
        '204':
          description: Model deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update model
      description: Update a model instance with data provided in the request body.
        JSON format is expected. Model performs validation automatically when fields
        are modified.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Model Name
      responses:
        '200':
          description: Model updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/output-types/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Model Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/preview-files":
    get:
      summary: Get preview files
      description: Retrieve all preview files. Supports filtering via query parameters
        and pagination. Includes project permission filtering. Vendor users only see
        assigned tasks.
      responses:
        '200':
          description: Preview files retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/preview-files?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create preview file
      description: Create a new preview file with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - task_id
              properties:
                name:
                  type: string
                  example: preview_file_v001
                task_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                revision:
                  type: integer
                  default: 1
                  example: 1
      responses:
        '201':
          description: Preview file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: preview_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 1
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "preview_file_v001",
            "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "revision": 1
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "preview_file_v001",
              "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "revision": 1
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/preview-files/{instance_id}":
    get:
      summary: Get preview file
      description: Retrieve a preview file by its ID and return it as a JSON object.
        Supports including relations. Vendors must be working on the task. Artists
        must have project access.
      responses:
        '200':
          description: Preview file retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: preview_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 1
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete preview file
      description: Delete a preview file by its ID. Returns empty response on success.
        May require force flag if file has associated data.
      responses:
        '204':
          description: Preview file deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: force
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Force deletion even if file has associated data
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update preview file
      description: Update a preview file with data provided in the request body. JSON
        format is expected. Requires project access. Non-managers must be working
        on the task.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: updated_preview_file_v001
                revision:
                  type: integer
                  example: 2
      responses:
        '200':
          description: Preview file updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: updated_preview_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 2
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "updated_preview_file_v001",
            "revision": 2
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "updated_preview_file_v001",
              "revision": 2
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/working-files":
    get:
      summary: Get working files
      description: Retrieve all working files. Supports filtering via query parameters
        and pagination. Vendor access is blocked. Includes project permission filtering
        for non-admin users.
      responses:
        '200':
          description: Working files retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/working-files?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create working file
      description: Create a new working file with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - task_id
              - entity_id
              properties:
                name:
                  type: string
                  example: work_file_v001
                task_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                revision:
                  type: integer
                  default: 1
                  example: 1
      responses:
        '201':
          description: Working file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: work_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 1
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/working-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "work_file_v001",
            "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "revision": 1
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "work_file_v001",
              "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "revision": 1
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/working-files/{instance_id}":
    get:
      summary: Get working file
      description: Retrieve a working file instance by its ID and return it as a JSON
        object.
      responses:
        '200':
          description: Working file retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: work_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete working file
      description: Delete a working file by its ID. Returns empty response on success.
      responses:
        '204':
          description: Working file deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update working file
      description: Update a working file with data provided in the request body. JSON
        format is expected. Requires task action access.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: updated_work_file_v001
                revision:
                  type: integer
                  example: 2
      responses:
        '200':
          description: Working file updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: updated_work_file_v001
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 2
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "updated_work_file_v001",
            "revision": 2
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "updated_work_file_v001",
              "revision": 2
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/attachment-files":
    get:
      summary: Get attachment files
      description: Retrieve all attachment files. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Attachment files retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/attachment-files?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create attachment file
      description: Create a new attachment file with data provided in the request
        body. JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: attachment.pdf
                comment_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Attachment file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: attachment.pdf
                  comment_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/attachment-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "attachment.pdf",
            "comment_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "attachment.pdf",
              "comment_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/attachment-files/{instance_id}":
    get:
      summary: Get attachment file
      description: Retrieve an attachment file by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Attachment file retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: attachment.pdf
                  comment_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete attachment file
      description: Delete an attachment file by its ID. Returns empty response on
        success.
      responses:
        '204':
          description: Attachment file deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update attachment file
      description: Update an attachment file with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: updated_attachment.pdf
      responses:
        '200':
          description: Attachment file updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: updated_attachment.pdf
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "updated_attachment.pdf"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "updated_attachment.pdf"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/comments":
    get:
      summary: Get comments
      description: Retrieve all comments. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Comments retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/comments?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/comments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create comment
      description: Create a new comment with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - object_id
              - person_id
              - task_status_id
              properties:
                object_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                person_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                task_status_id:
                  type: string
                  format: uuid
                  example: c24a6ea4-ce75-4665-a070-57453082c25
                text:
                  type: string
                  example: Comment text
      responses:
        '201':
          description: Comment created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Comment text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/comments" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "object_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "task_status_id": "c24a6ea4-ce75-4665-a070-57453082c25",
            "text": "Comment text"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/comments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "object_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "c24a6ea4-ce75-4665-a070-57453082c25",
              "text": "Comment text"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/comments/{instance_id}":
    get:
      summary: Get comment
      description: Retrieve a comment by its ID and return it as a JSON object. Supports
        including relations. Client users can only see their own comments or comments
        from other clients.
      responses:
        '200':
          description: Comment retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Comment text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      - in: query
        name: with_previews
        required: false
        schema:
          type: boolean
        default: false
        example: true
        description: Whether to expand preview IDs to full preview objects
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete comment
      description: Delete a comment by its ID. Returns empty response on success.
        Updates task status if comment had status change.
      responses:
        '204':
          description: Comment deleted successfully
        '400':
          description: Cannot delete comment or integrity error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update comment
      description: Update a comment with data provided in the request body. JSON format
        is expected. May update task status if task_status_id is changed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  example: Updated comment text
                task_status_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                pinned:
                  type: boolean
                  example: true
                checklist:
                  type: array
                  items:
                    type: object
                  example:
                  - text: Item 1
                    checked: false
      responses:
        '200':
          description: Comment updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Updated comment text
                  pinned:
                    type: boolean
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "text": "Updated comment text",
            "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "pinned": true,
            "checklist": [
              {
                "text": "Item 1",
                "checked": false
              }
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/comments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "text": "Updated comment text",
              "task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "pinned": true,
              "checklist": [
                  {
                      "text": "Item 1",
                      "checked": false
                  }
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/time-spents/":
    get:
      summary: Get time spents
      description: Retrieve all time spent records. Supports filtering via query parameters
        and pagination. Supports date range filtering with start_date and end_date.
      responses:
        '200':
          description: Time spent records retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        example: '2024-01-01'
        description: Start date for date range filter
      - in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date
        example: '2024-01-31'
        description: End date for date range filter
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/time-spents/?page=1&limit=50&relations=false&start_date=2024-01-01&end_date=2024-01-31" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/time-spents/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false,
              "start_date": "2024-01-01",
              "end_date": "2024-01-31"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create time spent
      description: Create a new time spent record with data provided in the request
        body. JSON format is expected. Updates task duration automatically.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_id
              - person_id
              - date
              - duration
              properties:
                task_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                person_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                date:
                  type: string
                  format: date
                  example: '2024-01-15'
                duration:
                  type: number
                  example: 8.5
      responses:
        '201':
          description: Time spent record created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-15'
                  duration:
                    type: number
                    example: 8.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/time-spents/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "date": "2024-01-15",
            "duration": 8.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/time-spents/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "date": "2024-01-15",
              "duration": 8.5
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/time-spents/{instance_id}":
    get:
      summary: Get time spent
      description: Retrieve a time spent record by its ID and return it as a JSON
        object. Supports including relations.
      responses:
        '200':
          description: Time spent record retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-15'
                  duration:
                    type: number
                    example: 8.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete time spent
      description: Delete a time spent record by its ID. Returns empty response on
        success. Updates task duration automatically.
      responses:
        '204':
          description: Time spent record deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update time spent
      description: Update a time spent record with data provided in the request body.
        JSON format is expected. Updates task duration automatically.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  format: date
                  example: '2024-01-16'
                duration:
                  type: number
                  example: 7.5
      responses:
        '200':
          description: Time spent record updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-16'
                  duration:
                    type: number
                    example: 7.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "date": "2024-01-16",
            "duration": 7.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/time-spents/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "date": "2024-01-16",
              "duration": 7.5
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/day-offs/":
    get:
      summary: Get day offs
      description: Retrieve all day offs. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Day offs retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/day-offs/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/day-offs/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create day off
      description: Create a new day off with data provided in the request body. JSON
        format is expected. Deletes overlapping time spent entries.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - date
              - end_date
              - person_id
              properties:
                date:
                  type: string
                  format: date
                  example: '2024-01-15'
                end_date:
                  type: string
                  format: date
                  example: '2024-01-20'
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Day off created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-15'
                  end_date:
                    type: string
                    format: date
                    example: '2024-01-20'
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or day off already exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/day-offs/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "date": "2024-01-15",
            "end_date": "2024-01-20",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/day-offs/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "date": "2024-01-15",
              "end_date": "2024-01-20",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/day-offs/{instance_id}":
    get:
      summary: Get day off
      description: Retrieve a day off by its ID and return it as a JSON object. Supports
        including relations.
      responses:
        '200':
          description: Day off retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-15'
                  end_date:
                    type: string
                    format: date
                    example: '2024-01-20'
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete day off
      description: Delete a day off by its ID. Returns empty response on success.
      responses:
        '204':
          description: Day off deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update day off
      description: Update a day off with data provided in the request body. JSON format
        is expected. Deletes overlapping time spent entries.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  format: date
                  example: '2024-01-16'
                end_date:
                  type: string
                  format: date
                  example: '2024-01-21'
      responses:
        '200':
          description: Day off updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-01-16'
                  end_date:
                    type: string
                    format: date
                    example: '2024-01-21'
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or day off already exists
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "date": "2024-01-16",
            "end_date": "2024-01-21"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/day-offs/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "date": "2024-01-16",
              "end_date": "2024-01-21"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/custom-actions/":
    get:
      summary: Get custom actions
      description: Retrieve all custom actions. Supports filtering via query parameters
        and pagination. Vendor access is blocked.
      responses:
        '200':
          description: Custom actions retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/custom-actions/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/custom-actions/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create custom action
      description: Create a new custom action with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Custom Action Name
                url_pattern:
                  type: string
                  example: "/api/actions/{id}"
      responses:
        '201':
          description: Custom action created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Custom Action Name
                  url_pattern:
                    type: string
                    example: "/api/actions/{id}"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/custom-actions/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Custom Action Name",
            "url_pattern": "/api/actions/{id}"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/custom-actions/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Custom Action Name",
              "url_pattern": "/api/actions/{id}"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/custom-actions/{instance_id}":
    get:
      summary: Get custom action
      description: Retrieve a custom action by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Custom action retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Custom Action Name
                  url_pattern:
                    type: string
                    example: "/api/actions/{id}"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete custom action
      description: Delete a custom action by its ID. Returns empty response on success.
      responses:
        '204':
          description: Custom action deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update custom action
      description: Update a custom action with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Custom Action Name
                url_pattern:
                  type: string
                  example: "/api/actions/{id}"
      responses:
        '200':
          description: Custom action updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Custom Action Name
                  url_pattern:
                    type: string
                    example: "/api/actions/{id}"
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Custom Action Name",
            "url_pattern": "/api/actions/{id}"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/custom-actions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Custom Action Name",
              "url_pattern": "/api/actions/{id}"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/status-automations/":
    get:
      summary: Get status automations
      description: Retrieve all status automations. Supports filtering via query parameters
        and pagination. Vendor access is blocked.
      responses:
        '200':
          description: Status automations retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/status-automations/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/status-automations/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create status automation
      description: Create a new status automation with data provided in the request
        body. JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - source_task_status_id
              - target_task_status_id
              - field_name
              - field_value
              properties:
                source_task_status_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                target_task_status_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                field_name:
                  type: string
                  example: ready_for
                field_value:
                  type: string
                  example: production
      responses:
        '201':
          description: Status automation created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  source_task_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  target_task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  field_name:
                    type: string
                    example: ready_for
                  field_value:
                    type: string
                    example: production
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/status-automations/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "source_task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "target_task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "field_name": "ready_for",
            "field_value": "production"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/status-automations/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "source_task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "target_task_status_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "field_name": "ready_for",
              "field_value": "production"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/status-automations/{instance_id}":
    get:
      summary: Get status automation
      description: Retrieve a status automation by its ID and return it as a JSON
        object. Supports including relations.
      responses:
        '200':
          description: Status automation retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  source_task_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  target_task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  field_name:
                    type: string
                    example: ready_for
                  field_value:
                    type: string
                    example: production
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete status automation
      description: Delete a status automation by its ID. Returns empty response on
        success. Cannot delete if automation is used in a project.
      responses:
        '204':
          description: Status automation deleted successfully
        '400':
          description: Automation is used in a project or integrity error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update status automation
      description: Update a status automation with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                field_name:
                  type: string
                  example: ready_for
                field_value:
                  type: string
                  example: approved
      responses:
        '200':
          description: Status automation updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  source_task_status_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  target_task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  field_name:
                    type: string
                    example: ready_for
                  field_value:
                    type: string
                    example: approved
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "field_name": "ready_for",
            "field_value": "approved"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/status-automations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "field_name": "ready_for",
              "field_value": "approved"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/":
    get:
      summary: Get asset instances
      description: Retrieve all asset instances. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Asset instances retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create asset instance
      description: Create a new asset instance with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_id
              properties:
                asset_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                name:
                  type: string
                  example: Instance Name
      responses:
        '201':
          description: Asset instance created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  asset_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Instance Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/asset-instances/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "name": "Instance Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Instance Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{instance_id}":
    get:
      summary: Get asset instance
      description: Retrieve an asset instance by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Asset instance retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  asset_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Instance Name
                  number:
                    type: integer
                    example: 1
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete asset instance
      description: Delete an asset instance by its ID. Returns empty response on success.
      responses:
        '204':
          description: Asset instance deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update asset instance
      description: Update an asset instance with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Instance Name
      responses:
        '200':
          description: Asset instance updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  asset_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Instance Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Instance Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Instance Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/":
    get:
      summary: Get playlists
      description: Retrieve all playlists. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Playlists retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create playlist
      description: Create a new playlist with data provided in the request body. JSON
        format is expected. Requires supervisor access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - project_id
              properties:
                name:
                  type: string
                  example: Playlist Name
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                episode_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  example: c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Playlist created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Playlist Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  episode_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/playlists/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Playlist Name",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "episode_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "c24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Playlist Name",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "c24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/{instance_id}":
    get:
      summary: Get playlist
      description: Retrieve a playlist by its ID and return it as a JSON object. Supports
        including relations. Requires project access. Vendor access is blocked.
      responses:
        '200':
          description: Playlist retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Playlist Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  episode_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  shots:
                    type: array
                    items:
                      type: object
                    example: []
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete playlist
      description: Delete a playlist by its ID. Returns empty response on success.
      responses:
        '204':
          description: Playlist deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update playlist
      description: Update a playlist with data provided in the request body. JSON
        format is expected. Requires project access. Vendor access is blocked.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Playlist Name
                shots:
                  type: array
                  items:
                    type: object
                    properties:
                      entity_id:
                        type: string
                        format: uuid
                        example: b24a6ea4-ce75-4665-a070-57453082c25
                      preview_file_id:
                        type: string
                        format: uuid
                        example: c24a6ea4-ce75-4665-a070-57453082c25
                  example: []
      responses:
        '200':
          description: Playlist updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Playlist Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  shots:
                    type: array
                    items:
                      type: object
                    example: []
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Playlist Name",
            "shots": []
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Playlist Name",
              "shots": []
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/events/":
    get:
      summary: Get events
      description: Retrieve all events. Supports filtering via query parameters and
        pagination. Limited to 1000 results.
      responses:
        '200':
          description: Events retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Event Name
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/events/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create model
      description: Create a new model instance with data provided in the request body.
        JSON format is expected. The model performs validation automatically when
        instantiated.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Model Name
      responses:
        '201':
          description: Model created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/events/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Model Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/events/{instance_id}":
    get:
      summary: Get event
      description: Retrieve an event by its ID and return it as a JSON object. Supports
        including relations.
      responses:
        '200':
          description: Event retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Event Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete event
      description: Delete an event by its ID. Returns empty response on success.
      responses:
        '204':
          description: Event deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update event
      description: Update an event with data provided in the request body. JSON format
        is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Event Name
      responses:
        '200':
          description: Event updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Event Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Event Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Event Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/notifications/":
    get:
      summary: Get notifications
      description: Retrieve all notifications. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Notifications retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/notifications/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/notifications/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create notification
      description: Create a new notification with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - person_id
              - comment_id
              properties:
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                comment_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                read:
                  type: boolean
                  default: false
                  example: false
      responses:
        '201':
          description: Notification created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  comment_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  read:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/notifications/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "comment_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "read": false
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/notifications/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "comment_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "read": false
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/notifications/{instance_id}":
    get:
      summary: Get notification
      description: Retrieve a notification by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Notification retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  comment_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  read:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete notification
      description: Delete a notification by its ID. Returns empty response on success.
      responses:
        '204':
          description: Notification deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update notification
      description: Update a notification with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                read:
                  type: boolean
                  example: true
      responses:
        '200':
          description: Notification updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  comment_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  read:
                    type: boolean
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "read": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/notifications/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "read": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/search-filters/":
    get:
      summary: Get search filters
      description: Retrieve all search filters. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Search filters retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/search-filters/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filters/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create search filter
      description: Create a new search filter with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - person_id
              - search_filter_group_id
              properties:
                name:
                  type: string
                  example: My Filter
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                search_filter_group_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                list_type:
                  type: string
                  example: assets
      responses:
        '201':
          description: Search filter created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: My Filter
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  search_filter_group_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  list_type:
                    type: string
                    example: assets
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/search-filters/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "My Filter",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "search_filter_group_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "list_type": "assets"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filters/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "My Filter",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "search_filter_group_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "list_type": "assets"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/search-filters/{instance_id}":
    get:
      summary: Get search filter
      description: Retrieve a search filter by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Search filter retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: My Filter
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  search_filter_group_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  list_type:
                    type: string
                    example: assets
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete search filter
      description: Delete a search filter by its ID. Returns empty response on success.
      responses:
        '204':
          description: Search filter deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update search filter
      description: Update a search filter with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Filter Name
                list_type:
                  type: string
                  example: shots
      responses:
        '200':
          description: Search filter updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Filter Name
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  search_filter_group_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  list_type:
                    type: string
                    example: shots
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Filter Name",
            "list_type": "shots"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filters/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Filter Name",
              "list_type": "shots"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/search-filter-groups/":
    get:
      summary: Get search filter groups
      description: Retrieve all search filter groups. Supports filtering via query
        parameters and pagination.
      responses:
        '200':
          description: Search filter groups retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/search-filter-groups/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filter-groups/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create search filter group
      description: Create a new search filter group with data provided in the request
        body. JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - person_id
              properties:
                name:
                  type: string
                  example: My Filter Group
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Search filter group created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: My Filter Group
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/search-filter-groups/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "My Filter Group",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filter-groups/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "My Filter Group",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/search-filter-groups/{instance_id}":
    get:
      summary: Get search filter group
      description: Retrieve a search filter group by its ID and return it as a JSON
        object. Supports including relations.
      responses:
        '200':
          description: Search filter group retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: My Filter Group
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete search filter group
      description: Delete a search filter group by its ID. Returns empty response
        on success.
      responses:
        '204':
          description: Search filter group deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update search filter group
      description: Update a search filter group with data provided in the request
        body. JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Filter Group Name
      responses:
        '200':
          description: Search filter group updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Filter Group Name
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Filter Group Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search-filter-groups/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Filter Group Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/schedule-items/":
    get:
      summary: Get schedule items
      description: Retrieve all schedule items. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Schedule items retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/schedule-items/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/schedule-items/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create schedule item
      description: Create a new schedule item with data provided in the request body.
        JSON format is expected. Similar schedule items cannot exist with same project,
        task type, and object.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - project_id
              - task_type_id
              - object_id
              properties:
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                object_id:
                  type: string
                  format: uuid
                  example: c24a6ea4-ce75-4665-a070-57453082c25
                man_days:
                  type: number
                  example: 10.5
      responses:
        '201':
          description: Schedule item created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  man_days:
                    type: number
                    example: 10.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or similar schedule item exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/schedule-items/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "object_id": "c24a6ea4-ce75-4665-a070-57453082c25",
            "man_days": 10.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/schedule-items/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "object_id": "c24a6ea4-ce75-4665-a070-57453082c25",
              "man_days": 10.5
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/schedule-items/{instance_id}":
    get:
      summary: Get schedule item
      description: Retrieve a schedule item by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Schedule item retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  man_days:
                    type: number
                    example: 10.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete schedule item
      description: Delete a schedule item by its ID. Returns empty response on success.
      responses:
        '204':
          description: Schedule item deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update schedule item
      description: Update a schedule item with data provided in the request body.
        JSON format is expected. Requires supervisor access to project and task type.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                man_days:
                  type: number
                  example: 12.0
      responses:
        '200':
          description: Schedule item updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  man_days:
                    type: number
                    example: 12.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "man_days": 12
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/schedule-items/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "man_days": 12
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/news/":
    get:
      summary: Get news
      description: Retrieve all news entries. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: News entries retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/news/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/news/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create news
      description: Create a new news entry with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - title
              - project_id
              properties:
                title:
                  type: string
                  example: Project Update
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                content:
                  type: string
                  example: News content text
      responses:
        '201':
          description: News entry created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  title:
                    type: string
                    example: Project Update
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  content:
                    type: string
                    example: News content text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/news/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "title": "Project Update",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "content": "News content text"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/news/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "title": "Project Update",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "content": "News content text"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/news/{instance_id}":
    get:
      summary: Get news
      description: Retrieve a news entry by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: News entry retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  title:
                    type: string
                    example: Project Update
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  content:
                    type: string
                    example: News content text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete news
      description: Delete a news entry by its ID. Returns empty response on success.
      responses:
        '204':
          description: News entry deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update news
      description: Update a news entry with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  example: Updated Project Update
                content:
                  type: string
                  example: Updated news content text
      responses:
        '200':
          description: News entry updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  title:
                    type: string
                    example: Updated Project Update
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  content:
                    type: string
                    example: Updated news content text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "title": "Updated Project Update",
            "content": "Updated news content text"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/news/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "title": "Updated Project Update",
              "content": "Updated news content text"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/milestones/":
    get:
      summary: Get milestones
      description: Retrieve all milestones. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Milestones retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/milestones/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/milestones/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create milestone
      description: Create a new milestone with data provided in the request body.
        JSON format is expected. Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - project_id
              - date
              properties:
                name:
                  type: string
                  example: Milestone Name
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                date:
                  type: string
                  format: date
                  example: '2024-03-31'
      responses:
        '201':
          description: Milestone created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Milestone Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-03-31'
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/milestones/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Milestone Name",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "date": "2024-03-31"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/milestones/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Milestone Name",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "date": "2024-03-31"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/milestones/{instance_id}":
    get:
      summary: Get milestone
      description: Retrieve a milestone by its ID and return it as a JSON object.
        Supports including relations. Vendor access is blocked. Requires project access.
      responses:
        '200':
          description: Milestone retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Milestone Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-03-31'
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete milestone
      description: Delete a milestone by its ID. Returns empty response on success.
      responses:
        '204':
          description: Milestone deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update milestone
      description: Update a milestone with data provided in the request body. JSON
        format is expected. Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Milestone Name
                date:
                  type: string
                  format: date
                  example: '2024-04-30'
      responses:
        '200':
          description: Milestone updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Milestone Name
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2024-04-30'
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Milestone Name",
            "date": "2024-04-30"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/milestones/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Milestone Name",
              "date": "2024-04-30"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/metadata-descriptors/":
    get:
      summary: Get metadata descriptors
      description: Retrieve all metadata descriptors. Supports filtering via query
        parameters and pagination. Vendor access is blocked. Includes project permission
        filtering for non-admin users.
      responses:
        '200':
          description: Metadata descriptors retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Custom Field
                    field_name:
                      type: string
                      example: custom_field
                    data_type:
                      type: string
                      example: text
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/metadata-descriptors/?page=1&limit=50&relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/metadata-descriptors/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create metadata descriptor
      description: Create a new metadata descriptor with data provided in the request
        body. JSON format is expected. Validates data_type.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - field_name
              - data_type
              - project_id
              properties:
                name:
                  type: string
                  example: Custom Field
                field_name:
                  type: string
                  example: custom_field
                data_type:
                  type: string
                  example: text
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_type:
                  type: string
                  example: Asset
      responses:
        '201':
          description: Metadata descriptor created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Custom Field
                  field_name:
                    type: string
                    example: custom_field
                  data_type:
                    type: string
                    example: text
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_type:
                    type: string
                    example: Asset
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or invalid data_type
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/metadata-descriptors/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Custom Field",
            "field_name": "custom_field",
            "data_type": "text",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_type": "Asset"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/metadata-descriptors/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Custom Field",
              "field_name": "custom_field",
              "data_type": "text",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_type": "Asset"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/metadata-descriptors/{instance_id}":
    get:
      summary: Get metadata descriptor
      description: Retrieve a metadata descriptor by its ID and return it as a JSON
        object. Supports including relations.
      responses:
        '200':
          description: Metadata descriptor retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Custom Field
                  field_name:
                    type: string
                    example: custom_field
                  data_type:
                    type: string
                    example: text
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_type:
                    type: string
                    example: Asset
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete metadata descriptor
      description: Delete a metadata descriptor by its ID. Returns empty response
        on success.
      responses:
        '204':
          description: Metadata descriptor deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update metadata descriptor
      description: Update a metadata descriptor with data provided in the request
        body. JSON format is expected. Validates data_type.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Custom Field
                data_type:
                  type: string
                  example: number
      responses:
        '200':
          description: Metadata descriptor updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Custom Field
                  field_name:
                    type: string
                    example: custom_field
                  data_type:
                    type: string
                    example: number
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or invalid data_type
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Custom Field",
            "data_type": "number"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/metadata-descriptors/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Custom Field",
              "data_type": "number"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/subscriptions/":
    get:
      summary: Get subscriptions
      description: Retrieve all subscriptions. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Subscriptions retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/subscriptions/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/subscriptions/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create subscription
      description: Create a new subscription with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - person_id
              - entity_id
              properties:
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Subscription created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/subscriptions/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/subscriptions/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/subscriptions/{instance_id}":
    get:
      summary: Get subscription
      description: Retrieve a subscription by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Subscription retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete subscription
      description: Delete a subscription by its ID. Returns empty response on success.
      responses:
        '204':
          description: Subscription deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update subscription
      description: Update a subscription with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                person_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                entity_id:
                  type: string
                  format: uuid
                  example: c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Subscription updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "entity_id": "c24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/subscriptions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "entity_id": "c24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entity-links/":
    get:
      summary: Get entity links
      description: Retrieve all entity links. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Entity links retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entity-links/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-links/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create entity link
      description: Create a new entity link with data provided in the request body.
        JSON format is expected. Links entities together in casting relationships.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - entity_in_id
              - entity_out_id
              properties:
                entity_in_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                entity_out_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                nb_occurences:
                  type: integer
                  default: 1
                  example: 1
                label:
                  type: string
                  example: fixed
      responses:
        '201':
          description: Entity link created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  entity_in_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_out_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_occurences:
                    type: integer
                    example: 1
                  label:
                    type: string
                    example: fixed
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entity-links/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "entity_in_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "entity_out_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "nb_occurences": 1,
            "label": "fixed"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-links/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "entity_in_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_out_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "nb_occurences": 1,
              "label": "fixed"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entity-links/{instance_id}":
    get:
      summary: Get entity link
      description: Retrieve an entity link by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Entity link retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  entity_in_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_out_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_occurences:
                    type: integer
                    example: 1
                  label:
                    type: string
                    example: fixed
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete entity link
      description: Delete an entity link by its ID. Returns empty response on success.
      responses:
        '204':
          description: Entity link deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update entity link
      description: Update an entity link with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nb_occurences:
                  type: integer
                  example: 2
                label:
                  type: string
                  example: updated
      responses:
        '200':
          description: Entity link updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  entity_in_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_out_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_occurences:
                    type: integer
                    example: 2
                  label:
                    type: string
                    example: updated
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "nb_occurences": 2,
            "label": "updated"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "nb_occurences": 2,
              "label": "updated"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/chats/":
    get:
      summary: Get chats
      description: Retrieve all chats. Supports filtering via query parameters and
        pagination.
      responses:
        '200':
          description: Chats retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/chats/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chats/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create chat
      description: Create a new chat with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - object_id
              - object_type
              properties:
                object_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                object_type:
                  type: string
                  example: Asset
                name:
                  type: string
                  example: Chat Name
      responses:
        '201':
          description: Chat created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  object_type:
                    type: string
                    example: Asset
                  name:
                    type: string
                    example: Chat Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/chats/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "object_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "object_type": "Asset",
            "name": "Chat Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chats/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "object_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "object_type": "Asset",
              "name": "Chat Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/chats/{instance_id}":
    get:
      summary: Get chat
      description: Retrieve a chat by its ID and return it as a JSON object. Supports
        including relations.
      responses:
        '200':
          description: Chat retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  object_type:
                    type: string
                    example: Asset
                  name:
                    type: string
                    example: Chat Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete chat
      description: Delete a chat by its ID. Returns empty response on success.
      responses:
        '204':
          description: Chat deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update chat
      description: Update a chat with data provided in the request body. JSON format
        is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Chat Name
      responses:
        '200':
          description: Chat updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  object_type:
                    type: string
                    example: Asset
                  name:
                    type: string
                    example: Updated Chat Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Chat Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chats/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Chat Name"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/chat-messages/":
    get:
      summary: Get chat messages
      description: Retrieve all chat messages. Supports filtering via query parameters
        and pagination.
      responses:
        '200':
          description: Chat messages retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/chat-messages/?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chat-messages/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create chat message
      description: Create a new chat message with data provided in the request body.
        JSON format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - chat_id
              - person_id
              properties:
                chat_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                person_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
                text:
                  type: string
                  example: Message text
      responses:
        '201':
          description: Chat message created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  chat_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Message text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/chat-messages/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "chat_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
            "text": "Message text"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chat-messages/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "chat_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "person_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "text": "Message text"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/chat-messages/{instance_id}":
    get:
      summary: Get chat message
      description: Retrieve a chat message by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Chat message retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  chat_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Message text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete chat message
      description: Delete a chat message by its ID. Returns empty response on success.
      responses:
        '204':
          description: Chat message deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update chat message
      description: Update a chat message with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  example: Updated message text
      responses:
        '200':
          description: Chat message updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  chat_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Updated message text
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "text": "Updated message text"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/chat-messages/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "text": "Updated message text"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/preview-background-files":
    get:
      summary: Get preview background files
      description: Retrieve all preview background files. Supports filtering via query
        parameters and pagination.
      responses:
        '200':
          description: Preview background files retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/preview-background-files?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-background-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create preview background file
      description: Create a new preview background file with data provided in the
        request body. JSON format is expected. Names must be unique. If is_default
        is true, resets other defaults.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: background_file_name
                is_default:
                  type: boolean
                  default: false
                  example: false
      responses:
        '201':
          description: Preview background file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: background_file_name
                  is_default:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or name already exists
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/preview-background-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "background_file_name",
            "is_default": false
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-background-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "background_file_name",
              "is_default": false
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/preview-background-files/{instance_id}":
    get:
      summary: Get preview background file
      description: Retrieve a preview background file by its ID and return it as a
        JSON object. Supports including relations.
      responses:
        '200':
          description: Preview background file retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: background_file_name
                  is_default:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete preview background file
      description: Delete a preview background file by its ID. Returns empty response
        on success.
      responses:
        '204':
          description: Preview background file deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update preview background file
      description: Update a preview background file with data provided in the request
        body. JSON format is expected. Names must be unique. If is_default is set
        to true, resets other defaults.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: updated_background_file_name
                is_default:
                  type: boolean
                  example: true
      responses:
        '200':
          description: Preview background file updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: updated_background_file_name
                  is_default:
                    type: boolean
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or name already exists
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "updated_background_file_name",
            "is_default": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "updated_background_file_name",
              "is_default": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/studios":
    get:
      summary: Get studios
      description: Retrieve all studios. Supports filtering via query parameters and
        pagination.
      responses:
        '200':
          description: Studios retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/studios?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/studios"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create studio
      description: Create a new studio with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Studio Name
                hours_by_day:
                  type: number
                  example: 8.0
      responses:
        '201':
          description: Studio created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Studio Name
                  hours_by_day:
                    type: number
                    example: 8.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/studios" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Studio Name",
            "hours_by_day": 8
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/studios"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Studio Name",
              "hours_by_day": 8
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/studios/{instance_id}":
    get:
      summary: Get studio
      description: Retrieve a studio by its ID and return it as a JSON object. Supports
        including relations.
      responses:
        '200':
          description: Studio retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Studio Name
                  hours_by_day:
                    type: number
                    example: 8.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete studio
      description: Delete a studio by its ID. Returns empty response on success.
      responses:
        '204':
          description: Studio deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update studio
      description: Update a studio with data provided in the request body. JSON format
        is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Studio Name
                hours_by_day:
                  type: number
                  example: 7.5
      responses:
        '200':
          description: Studio updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Studio Name
                  hours_by_day:
                    type: number
                    example: 7.5
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Studio Name",
            "hours_by_day": 7.5
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/studios/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Studio Name",
              "hours_by_day": 7.5
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/salary-scales":
    get:
      summary: Get salary scales
      description: Retrieve all salary scale entries. Automatically creates missing
        combinations of department, position, and seniority.
      responses:
        '200':
          description: Salary scales retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    department_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    position:
                      type: string
                      example: artist
                    seniority:
                      type: string
                      example: junior
                    rate:
                      type: number
                      example: 50.0
        '400':
          description: Query error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/salary-scales" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/salary-scales"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create model
      description: Create a new model instance with data provided in the request body.
        JSON format is expected. The model performs validation automatically when
        instantiated.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Model Name
      responses:
        '201':
          description: Model created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Model Name
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/salary-scales" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Model Name"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/salary-scales"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Model Name"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/salary-scales/{instance_id}":
    get:
      summary: Get salary scale
      description: Retrieve a salary scale by its ID and return it as a JSON object.
        Supports including relations.
      responses:
        '200':
          description: Salary scale retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  department_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  position:
                    type: string
                    example: artist
                  seniority:
                    type: string
                    example: junior
                  rate:
                    type: number
                    example: 50.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete salary scale
      description: Delete a salary scale by its ID. Returns empty response on success.
      responses:
        '204':
          description: Salary scale deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update salary scale
      description: Update a salary scale with data provided in the request body. JSON
        format is expected. Department ID cannot be changed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                rate:
                  type: number
                  example: 55.0
      responses:
        '200':
          description: Salary scale updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  department_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  position:
                    type: string
                    example: artist
                  seniority:
                    type: string
                    example: junior
                  rate:
                    type: number
                    example: 55.0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "rate": 55
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/salary-scales/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "rate": 55
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/plugins/{instance_id}":
    get:
      summary: Get plugin
      description: Retrieve a plugin by its ID and return it as a JSON object. Supports
        including relations.
      responses:
        '200':
          description: Plugin retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Plugin Name
                  active:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete plugin
      description: Delete a plugin by its ID. Returns empty response on success.
      responses:
        '204':
          description: Plugin deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update plugin
      description: Update a plugin with data provided in the request body. JSON format
        is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Plugin Name
                active:
                  type: boolean
                  example: true
      responses:
        '200':
          description: Plugin updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Plugin Name
                  active:
                    type: boolean
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Plugin Name",
            "active": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/plugins/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Plugin Name",
              "active": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/plugins":
    get:
      summary: Get plugins
      description: Retrieve all plugins. Supports filtering via query parameters and
        pagination.
      responses:
        '200':
          description: Plugins retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/plugins?page=1&limit=50&relations=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/plugins"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create plugin
      description: Create a new plugin with data provided in the request body. JSON
        format is expected.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: Plugin Name
                active:
                  type: boolean
                  default: false
                  example: false
      responses:
        '201':
          description: Plugin created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Plugin Name
                  active:
                    type: boolean
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/plugins" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Plugin Name",
            "active": false
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/plugins"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Plugin Name",
              "active": false
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/production-schedule-versions":
    get:
      summary: Get production schedule versions
      description: Retrieve all production schedule versions. Supports filtering via
        query parameters and pagination. Vendor and client access is blocked. Requires
        project access or admin permissions.
      responses:
        '200':
          description: Production schedule versions retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      - in: query
        name: project_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter by project ID
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/production-schedule-versions?page=1&limit=50&relations=false&project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false,
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create production schedule version
      description: Create a new production schedule version with data provided in
        the request body. JSON format is expected. Requires manager access to the
        project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - project_id
              properties:
                name:
                  type: string
                  example: Schedule Version 1
                project_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Production schedule version created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Schedule Version 1
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or validation error
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/production-schedule-versions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Schedule Version 1",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Schedule Version 1",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/production-schedule-versions/{instance_id}":
    get:
      summary: Get production schedule version
      description: Retrieve a production schedule version by its ID and return it
        as a JSON object. Supports including relations. Vendor and client access is
        blocked. Requires project access.
      responses:
        '200':
          description: Production schedule version retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Schedule Version 1
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete production schedule version
      description: Delete a production schedule version by its ID. Returns empty response
        on success.
      responses:
        '204':
          description: Production schedule version deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update production schedule version
      description: Update a production schedule version with data provided in the
        request body. JSON format is expected. Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Updated Schedule Version 1
      responses:
        '200':
          description: Production schedule version updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: Updated Schedule Version 1
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Schedule Version 1"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Schedule Version 1"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/production-schedule-version-task-links/{instance_id}":
    get:
      summary: Get production schedule version task link
      description: Retrieve a production schedule version task link by its ID and
        return it as a JSON object. Supports including relations. Vendor and client
        access is blocked. Requires project access.
      responses:
        '200':
          description: Task link retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  production_schedule_version_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid ID format or query error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to include relations
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete production schedule version task link
      description: Delete a production schedule version task link by its ID. Returns
        empty response on success. Requires manager access to the project.
      responses:
        '204':
          description: Task link deleted successfully
        '400':
          description: Integrity error or cannot delete
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update production schedule version task link
      description: Update a production schedule version task link with data provided
        in the request body. JSON format is expected. Protected fields cannot be changed.
        Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '200':
          description: Task link updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  production_schedule_version_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid data format or validation error
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{}'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-version-task-links/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {}

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/production-schedule-version-task-links":
    get:
      summary: Get production schedule version task links
      description: Retrieve all production schedule version task links. Supports filtering
        via query parameters and pagination. Vendor and client access is blocked.
        Requires project access or admin permissions.
      responses:
        '200':
          description: Task links retrieved successfully
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    type: object
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                      example: []
                    total:
                      type: integer
                      example: 100
                    nb_pages:
                      type: integer
                      example: 2
                    limit:
                      type: integer
                      example: 50
                    offset:
                      type: integer
                      example: 0
                    page:
                      type: integer
                      example: 1
        '400':
          description: Invalid filter format or query error
      parameters:
      - in: query
        name: page
        required: false
        schema:
          type: integer
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
        example: 50
        description: Number of results per page
      - in: query
        name: relations
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to include relations
      - in: query
        name: project_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter by project ID
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/production-schedule-version-task-links?page=1&limit=50&relations=false&project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-version-task-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "limit": 50,
              "relations": false,
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create production schedule version task link
      description: Create a link between a production schedule version and a task.
        JSON format is expected. Task and schedule version must be in the same project.
        Requires manager access to the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - production_schedule_version_id
              - task_id
              properties:
                production_schedule_version_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_id:
                  type: string
                  format: uuid
                  example: b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Task link created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  production_schedule_version_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid data format or task and schedule version not in same
            project
      tags:
      - Crud
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/production-schedule-version-task-links" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "production_schedule_version_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-version-task-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "production_schedule_version_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_id": "b24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/software-licenses":
    get:
      summary: Get all department software licenses
      description: Retrieve all software licenses organized by department. Returns
        a dictionary where each department contains its associated software licenses.
      responses:
        '200':
          description: Department software licenses successfully retrieved
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Software license unique identifier
                        example: a24a6ea4-ce75-4665-a070-57453082c25
                      name:
                        type: string
                        description: Software license name
                        example: Maya
                      short_name:
                        type: string
                        description: Software license short name
                        example: MAYA
                      file_extension:
                        type: string
                        description: Default file extension for the software license
                        example: ".ma"
                      department_id:
                        type: string
                        format: uuid
                        description: Department identifier
                        example: b35b7fb5-df86-5776-b181-68564193d36
                      created_at:
                        type: string
                        format: date-time
                        description: Creation timestamp
                        example: '2023-01-01T12:00:00Z'
                      updated_at:
                        type: string
                        format: date-time
                        description: Last update timestamp
                        example: '2023-01-01T12:30:00Z'
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments/software-licenses" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/software-licenses"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/{department_id}/software-licenses":
    post:
      summary: Add software license to department
      description: Associate a software license with a specific department. This allows
        the department to use the specified software in budget forecasting.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - software_id
              properties:
                software_id:
                  type: string
                  format: uuid
                  description: Software identifier to add to department
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Software license successfully added to department
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Software license department link unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  department_id:
                    type: string
                    format: uuid
                    description: Department identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  software_id:
                    type: string
                    format: uuid
                    description: Software license identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "software_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "software_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/{department_id}/software-licenses/{software_id}":
    get:
      summary: Get department software licenses
      description: Retrieve all software items that are associated with a specific
        department.
      responses:
        '200':
          description: Department software licenses successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Software license unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Software license name
                      example: Maya
                    short_name:
                      type: string
                      description: Software license short name
                      example: MAYA
                    file_extension:
                      type: string
                      description: Default file extension for the software license
                      example: ".ma"
                    department_id:
                      type: string
                      format: uuid
                      description: Department identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses/{software_id}" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses/{software_id}"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Remove software license from department
      description: Remove a software license from a specific department. This disassociates
        the software license from the department.
      responses:
        '204':
          description: Software license successfully removed from department
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      - in: path
        name: software_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the software license to remove
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/software-licenses/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/hardware-items":
    get:
      summary: Get all department hardware items
      description: Retrieve all hardware items organized by department. Returns a
        dictionary where each department contains its associated hardware items.
      responses:
        '200':
          description: Department hardware items successfully retrieved
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Hardware item unique identifier
                        example: a24a6ea4-ce75-4665-a070-57453082c25
                      name:
                        type: string
                        description: Hardware item name
                        example: Workstation
                      description:
                        type: string
                        description: Hardware item description
                        example: High-performance workstation
                      department_id:
                        type: string
                        format: uuid
                        description: Department identifier
                        example: b35b7fb5-df86-5776-b181-68564193d36
                      created_at:
                        type: string
                        format: date-time
                        description: Creation timestamp
                        example: '2023-01-01T12:00:00Z'
                      updated_at:
                        type: string
                        format: date-time
                        description: Last update timestamp
                        example: '2023-01-01T12:30:00Z'
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments/hardware-items" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/hardware-items"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/{department_id}/hardware-items":
    post:
      summary: Add hardware item to department
      description: Associate a hardware item with a specific department. This allows
        the department to use the specified hardware in budget forecasting.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - hardware_item_id
              properties:
                hardware_item_id:
                  type: string
                  format: uuid
                  description: Hardware item identifier to add to department
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Hardware item successfully added to department
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Hardware department link unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  department_id:
                    type: string
                    format: uuid
                    description: Department identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  hardware_item_id:
                    type: string
                    format: uuid
                    description: Hardware item identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
          '400':
            description: Hardware item ID matches no hardware item
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "hardware_item_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "hardware_item_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/departments/{department_id}/hardware-items/{hardware_item_id}":
    get:
      summary: Get department hardware items
      description: Retrieve all hardware items that are associated with a specific
        department.
      responses:
        '200':
          description: Department hardware items successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Hardware item unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Hardware item name
                      example: Workstation
                    description:
                      type: string
                      description: Hardware item description
                      example: High-performance workstation
                    department_id:
                      type: string
                      format: uuid
                      description: Department identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items/{hardware_item_id}" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items/{hardware_item_id}"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Remove hardware item from department
      description: Remove a hardware item from a specific department. This disassociates
        the hardware from the department.
      responses:
        '204':
          description: Hardware item successfully removed from department
      parameters:
      - in: path
        name: department_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the department
      - in: path
        name: hardware_item_id
        required: true
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Unique identifier of the hardware item to remove
      tags:
      - Departments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25/hardware-items/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/news":
    get:
      summary: Get entity news
      description: Retrieve all news entries that are linked to a specific entity.
      responses:
        '200':
          description: List of entity news successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: News unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    change:
                      type: boolean
                      description: Whether this news represents a change
                      example: true
                    author_id:
                      type: string
                      format: uuid
                      description: Author person identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    comment_id:
                      type: string
                      format: uuid
                      description: Comment identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    preview_file_id:
                      type: string
                      format: uuid
                      description: Preview file identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Entities
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/news" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/news"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/preview-files":
    get:
      summary: Get entity preview files
      description: Retrieve all preview files that are linked to a specific entity.
        This includes images, videos, and other preview media associated with the
        entity.
      responses:
        '200':
          description: List of entity preview files successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Preview file unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Preview file name
                      example: preview_001.jpg
                    path:
                      type: string
                      description: File path
                      example: "/previews/entity/preview_001.jpg"
                    revision:
                      type: integer
                      description: File revision number
                      example: 1
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Entities
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/time-spents":
    get:
      summary: Get entity time spent
      description: Retrieve all time spent entries that are linked to a specific entity.
      responses:
        '200':
          description: List of entity time spent entries successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Time spent unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    duration:
                      type: number
                      format: float
                      description: Time duration in hours
                      example: 2.5
                    date:
                      type: string
                      format: date
                      description: Date when time was spent
                      example: '2023-12-07'
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    person_id:
                      type: string
                      format: uuid
                      description: Person identifier who spent the time
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Entities
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/time-spents" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/entities-linked/with-tasks":
    get:
      summary: Get linked entities
      description: Retrieve all entities that are linked to a specific entity along
        with their associated tasks. This includes related entities, dependencies,
        and hierarchical relationships.
      responses:
        '200':
          description: List of linked entities successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Entity unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Entity name
                      example: Character Model
                    entity_type_id:
                      type: string
                      format: uuid
                      description: Entity type identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    parent_id:
                      type: string
                      format: uuid
                      description: Parent entity identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: Task unique identifier
                            example: e68e0ie8-gi19-8009-e514-91897426g69
                          name:
                            type: string
                            description: Task name
                            example: Modeling Task
                          task_type_id:
                            type: string
                            format: uuid
                            description: Task type identifier
                            example: f79f1jf9-hj20-9010-f625-02998537h80
      parameters:
      - in: path
        name: entity_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the entity
      tags:
      - Entities
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/entities-linked/with-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/entities-linked/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/projects/{project_id}/assets.csv":
    get:
      summary: "        Export assets csv"
      description: "        "
      responses:
        '200':
          description: Assets exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Project,Type,Name,Description,Time Spent Project A,Character,Asset1,Description,10.50
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/projects/{project_id}/shots.csv":
    get:
      summary: "        Export shots csv"
      description: "        "
      responses:
        '200':
          description: Shots exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Project,Episode,Sequence,Name,Description,Time Spent,Frames,Frame
                In,Frame Out,FPS Project A,EP01,SQ01,SH010,Description,5.25,120,1001,1120,24
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/projects/{project_id}/casting.csv":
    get:
      summary: "        Export casting csv"
      description: "        "
      responses:
        '200':
          description: Casting exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Parent,Name,Asset Type,Asset,Occurences,Label Sequence1,SH010,Character,Asset1,1,fixed
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: episode_id
        required: false
        schema:
          type: string
          format: uuid
        example: b24a6ea4-ce75-4665-a070-57453082c25
        description: Episode ID to filter casting links
      - in: query
        name: is_shot_casting
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to export shot casting only
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/casting.csv?episode_id=b24a6ea4-ce75-4665-a070-57453082c25&is_shot_casting=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/casting.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "episode_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "is_shot_casting": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/projects/{project_id}/edits.csv":
    get:
      summary: "        Export edits csv"
      description: "        "
      responses:
        '200':
          description: Edits exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Project,Episode,Name,Description,Time Spent Project A,EP01,Edit_001,Description,8.75
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/playlists/{playlist_id}":
    get:
      summary: "        Export playlist csv"
      description: "        "
      responses:
        '200':
          description: Playlist exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Entity name,Nb Frames,Task Type,Retake count,Revision,Task
                Status,Last comment author,Last comment date,Last comment SH010,120,Animation,2,10,WIP,John
                Doe,2024-01-15,Good work
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/playlists/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/playlists/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/persons.csv":
    get:
      summary: "        Export persons csv"
      description: "        "
      responses:
        '200':
          description: Persons exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Last Name,First Name,Email,Phone,Role,Contract Type,Active
                Doe,John,john.doe@example.com,+1234567890,user,freelance,yes
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/persons.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/persons.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/projects.csv":
    get:
      summary: "        Export projects csv"
      description: "        "
      responses:
        '200':
          description: Projects exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Name,Status Project A,Active Project B,Open
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/projects.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/projects.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/tasks.csv":
    get:
      summary: "        Export tasks csv"
      description: "        "
      responses:
        '200':
          description: Tasks exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Project,Task Type,Episode,Sequence,Entity Type,Entity,Assigner,Assignees,Duration,Estimation,Start
                date,Due date,WIP date,Validation date,Task Status Project A,Animation,EP01,SQ01,Shot,SH010,John
                Doe,Jane Doe,480,600,2024-01-01,2024-01-15,2024-01-05,2024-01-20,WIP
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/tasks.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/tasks.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/time-spents.csv":
    get:
      summary: "        Export time spents csv"
      description: "        "
      responses:
        '200':
          description: Time spents exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Project,Person,Entity Type Name,Entity,Task Type,Date,Time
                spent Project A,John Doe,Shot,SH010,Animation,2024-01-15,480
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/time-spents.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/time-spents.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/export/csv/task-types.csv":
    get:
      summary: "        Export task types csv"
      description: "        "
      responses:
        '200':
          description: Task types exported as CSV successfully
          content:
            text/csv:
              schema:
                type: string
              example: Department,Name Animation,Animation Modeling,Modeling
      tags:
      - Export
      produces:
      - text/csv
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/export/csv/task-types.csv" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/export/csv/task-types.csv"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/events/last":
    get:
      summary: Get events
      description: Retrieve last events with filtering support. Filters can be specified
        in the query string to narrow down results by date range, project, or other
        criteria.
      responses:
        '200':
          description: List of events successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Event unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Event name
                      example: user_login
                    data:
                      type: object
                      description: Event data content
                      example:
                        user_id: b35b7fb5-df86-5776-b181-68564193d36
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Event timestamp
                      example: '2023-01-01T12:00:00Z'
                    user_id:
                      type: string
                      format: uuid
                      description: User identifier who triggered the event
                      example: d57d9hd7-fh08-7998-d403-80786315f58
      parameters:
      - in: query
        name: after
        type: string
        format: date
        example: '2022-07-12'
        description: Filter events after this date
      - in: query
        name: before
        type: string
        format: date
        example: '2022-07-12'
        description: Filter events before this date
      - in: query
        name: only_files
        type: boolean
        default: false
        description: Return only file-related events
        example: false
      - in: query
        name: cursor_event_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: ID of the last event from previous page for cursor-based pagination
      - in: query
        name: limit
        type: integer
        default: 100
        example: 100
        description: Maximum number of events to return
      - in: query
        name: project_id
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter events by specific project
      - in: query
        name: name
        type: string
        example: user_login
        description: Filter events by event name
      tags:
      - Events
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/events/last?after=2022-07-12&before=2022-07-12&only_files=false&cursor_event_id=a24a6ea4-ce75-4665-a070-57453082c25&limit=100&project_id=a24a6ea4-ce75-4665-a070-57453082c25&name=user_login" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/last"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "after": "2022-07-12",
              "before": "2022-07-12",
              "only_files": false,
              "cursor_event_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "limit": 100,
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "user_login"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/events/login-logs/last":
    get:
      summary: Get login logs
      description: Retrieve all login logs with filtering support. Filters can be
        specified in the query string to narrow down results by date range and limit.
      responses:
        '200':
          description: List of login logs successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Login log unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      description: Login timestamp
                      example: '2023-01-01T12:00:00Z'
                    ip_address:
                      type: string
                      description: IP address of the login
                      example: 192.168.1.100
                    person_id:
                      type: string
                      format: uuid
                      description: Person identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    origin:
                      type: string
                      description: Login origin
                      example: web
                      enum:
                      - web
                      - script
      parameters:
      - in: query
        name: after
        type: string
        format: date
        example: '2022-07-12'
        description: Filter logs after this date
      - in: query
        name: before
        type: string
        format: date
        example: '2022-07-12'
        description: Filter logs before this date
      - in: query
        name: cursor_login_log_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: ID of the last login log from previous page for cursor-based
          pagination
      - in: query
        name: limit
        type: integer
        default: 100
        example: 100
        description: Maximum number of login logs to return
      tags:
      - Events
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/events/login-logs/last?before=2022-07-12T00%3A00%3A00&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/events/login-logs/last"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "before": "2022-07-12T00:00:00",
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/files/{file_id}":
    get:
      summary: Get file information
      description: Retrieve information about a file that could be either a working
        file or an output file. Returns detailed file metadata and properties.
      responses:
        '200':
          description: File information retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: File unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: File name
                    example: main
                  path:
                    type: string
                    description: File path
                    example: "/project/asset/working/main_v001.blend"
                  revision:
                    type: integer
                    description: File revision
                    example: 1
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:00:00Z'
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier (for working files)
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity identifier (for output files)
                    example: d57d9hd7-fh08-7998-d403-80786315f58
      parameters:
      - in: path
        name: file_id
        required: true
        schema:
          type: string
          format: uuid
        description: File unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/working-files":
    get:
      summary: Get task working files
      description: Retrieve all working file revisions for a given task. Returns complete
        list of working files with their revisions.
      responses:
        '200':
          description: All working file revisions for given task
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Working file unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Working file name
                      example: main
                    revision:
                      type: integer
                      description: Working file revision
                      example: 1
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/working-files/new":
    post:
      summary: Create new working file
      description: Create a new working file for a task. Working files are versioned
        files used by artists to produce output files. Each file requires a comment
        and generates a path based on file tree template.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Working file name
                  example: main
                mode:
                  type: string
                  description: Working file mode
                  default: working
                  example: working
                description:
                  type: string
                  description: Working file description
                  example: Main character model
                comment:
                  type: string
                  description: Working file comment
                  example: Updated lighting and materials
                person_id:
                  type: string
                  format: uuid
                  description: Person identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                software_id:
                  type: string
                  format: uuid
                  description: Software identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                revision:
                  type: integer
                  description: Working file revision
                  example: 1
                sep:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '201':
          description: New working file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Working file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: Working file name
                    example: main
                  path:
                    type: string
                    description: Working file path
                    example: "/project/asset/working/main_v001.blend"
                  revision:
                    type: integer
                    description: Working file revision
                    example: 1
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files/new" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "working",
            "description": "Main character model",
            "comment": "Updated lighting and materials",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "software_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "revision": 1,
            "sep": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files/new"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "working",
              "description": "Main character model",
              "comment": "Updated lighting and materials",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "software_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "revision": 1,
              "sep": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/working-files/last-revisions":
    get:
      summary: Get last working files
      description: Retrieve the last working file revisions for each file name for
        a given task. Returns the most recent version of each working file.
      responses:
        '200':
          description: Last working file revisions for each file name
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Working file unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Working file name
                      example: main
                    revision:
                      type: integer
                      description: Working file revision
                      example: 3
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files/last-revisions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-files/last-revisions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/working-file-path":
    post:
      summary: Generate working file path
      description: Generate a working file path from file tree template based on task
        parameters. Revision can be computed automatically if not provided.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: File name
                  default: main
                  example: main
                mode:
                  type: string
                  description: File mode
                  default: working
                  example: working
                software_id:
                  type: string
                  format: uuid
                  description: Software identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                comment:
                  type: string
                  description: File comment
                  example: Updated lighting
                revision:
                  type: integer
                  description: File revision number
                  example: 1
                separator:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '200':
          description: Working file path generated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  path:
                    type: string
                    description: Generated file path
                    example: "/project/asset/working/main_v001.blend"
                  name:
                    type: string
                    description: Generated file name
                    example: main_v001.blend
        '400':
          description: Malformed file tree
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-file-path" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "working",
            "software_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "comment": "Updated lighting",
            "revision": 1,
            "separator": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/working-file-path"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "working",
              "software_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "comment": "Updated lighting",
              "revision": 1,
              "separator": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/new":
    post:
      summary: Create new instance output file
      description: Create a new output file linked to an asset instance for a specific
        shot. Output files track the source working file and require output type and
        task type for categorization.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: Output file name
                  default: main
                  example: main
                mode:
                  type: string
                  description: Output file mode
                  default: output
                  example: output
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                person_id:
                  type: string
                  format: uuid
                  description: Person identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                working_file_id:
                  type: string
                  format: uuid
                  description: Source working file identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                file_status_id:
                  type: string
                  format: uuid
                  description: File status identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                is_sequence:
                  type: boolean
                  description: Whether file is a sequence
                  default: false
                  example: false
                comment:
                  type: string
                  description: Output file comment
                  example: Final render
                extension:
                  type: string
                  description: File extension
                  example: ".mp4"
                representation:
                  type: string
                  description: File representation
                  example: mp4
                revision:
                  type: integer
                  description: File revision number
                  example: 1
                nb_elements:
                  type: integer
                  description: Number of elements
                  default: 1
                  example: 1
                sep:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '201':
          description: New output file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Output file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: Output file name
                    example: main
                  path:
                    type: string
                    description: Output file path
                    example: "/project/asset/instance/output/main_v001.mp4"
                  revision:
                    type: integer
                    description: Output file revision
                    example: 1
                  asset_instance_id:
                    type: string
                    format: uuid
                    description: Asset instance identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  temporal_entity_id:
                    type: string
                    format: uuid
                    description: Temporal entity identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/new" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "output",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "working_file_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "file_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "is_sequence": false,
            "comment": "Final render",
            "extension": ".mp4",
            "representation": "mp4",
            "revision": 1,
            "nb_elements": 1,
            "sep": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/new"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "output",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "working_file_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "file_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "is_sequence": false,
              "comment": "Final render",
              "extension": ".mp4",
              "representation": "mp4",
              "revision": 1,
              "nb_elements": 1,
              "sep": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/next-revision":
    post:
      summary: Get next instance output file revision
      description: Get the next revision number for an output file based on asset
        instance, output type, task type, and name. Used for automatic revision numbering.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: File name
                  default: main
                  example: main
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '200':
          description: Next revision number for the instance output file
          content:
            application/json:
              schema:
                type: object
                properties:
                  next_revision:
                    type: integer
                    description: Next available revision number
                    example: 2
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/next-revision" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/next-revision"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/last-revisions":
    get:
      summary: Get last instance output files
      description: Retrieve the last revisions of output files for a given instance
        grouped by output type and file name. Returns the most recent version of each
        output file.
      responses:
        '200':
          description: Last revisions of output files grouped by output type and file
            name
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/instance/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: output_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by output type
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type
        example: d57d9hd7-fh08-7998-d403-80786315f58
      - in: query
        name: file_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by file status
        example: e68e0ie8-gi19-8009-e514-91897426g69
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: cache
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/last-revisions?output_type_id=c46c8gc6-eg97-6887-c292-79675204e47&task_type_id=d57d9hd7-fh08-7998-d403-80786315f58&file_status_id=e68e0ie8-gi19-8009-e514-91897426g69&representation=cache&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/last-revisions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "output_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "task_type_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "file_status_id": "e68e0ie8-gi19-8009-e514-91897426g69",
              "representation": "cache",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-types":
    get:
      summary: Get instance output types
      description: Retrieve all types of output files generated for a given asset
        instance and temporal entity. Returns list of output types available for the
        instance.
      responses:
        '200':
          description: All types of output files generated for the instance
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output type unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Output type name
                      example: Render
                    short_name:
                      type: string
                      description: Output type short name
                      example: RENDER
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-types/{output_type_id}/output-files":
    get:
      summary: Get instance output type files
      description: Retrieve all output files for a given asset instance, temporal
        entity, and output type. Optionally filter by representation.
      responses:
        '200':
          description: All output files for the asset instance and output type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/instance/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    asset_instance_id:
                      type: string
                      format: uuid
                      description: Asset instance identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    temporal_entity_id:
                      type: string
                      format: uuid
                      description: Temporal entity identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: path
        name: output_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Output type unique identifier
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: mp4
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-types/c46c8gc6-eg97-6887-c292-79675204e47/output-files?representation=mp4" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-types/c46c8gc6-eg97-6887-c292-79675204e47/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "representation": "mp4"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-file-path":
    post:
      summary: Generate instance output file path
      description: Generate an output file path from file tree template based on asset
        instance parameters. Revision can be computed automatically if not provided.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: File name
                  default: main
                  example: main
                mode:
                  type: string
                  description: File mode
                  default: output
                  example: output
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                extension:
                  type: string
                  description: File extension
                  example: ".mp4"
                representation:
                  type: string
                  description: File representation
                  example: mp4
                revision:
                  type: integer
                  description: File revision number
                  example: 1
                separator:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '200':
          description: Output file path generated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  folder_path:
                    type: string
                    description: Generated folder path
                    example: "/project/asset/instance/output"
                  file_name:
                    type: string
                    description: Generated file name
                    example: main_v001.mp4
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: temporal_entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Temporal entity unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-file-path" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "output",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "extension": ".mp4",
            "representation": "mp4",
            "revision": 1,
            "separator": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-file-path"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "output",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "extension": ".mp4",
              "representation": "mp4",
              "revision": 1,
              "separator": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/working-files":
    get:
      summary: Get entity working files
      description: Retrieve all working files for a given entity with optional filtering
        by task and name. Returns complete list of working files with their revisions.
      responses:
        '200':
          description: All working files for the entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Working file unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Working file name
                      example: main
                    revision:
                      type: integer
                      description: Working file revision
                      example: 1
                    path:
                      type: string
                      description: Working file path
                      example: "/project/asset/working/main_v001.blend"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: task_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/working-files?task_id=b35b7fb5-df86-5776-b181-68564193d36&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/working-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "task_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-files/new":
    post:
      summary: Create new entity output file
      description: Create a new output file linked to a specific entity. Output files
        are created when artists are satisfied with their working files. They track
        the source working file and require output type and task type for categorization.
        An output type is required for better categorization (textures, caches, ...).
        A task type can be set too to give the department related to the output file.
        The revision is automatically set.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: Output file name
                  example: main
                mode:
                  type: string
                  description: Output file mode
                  default: output
                  example: output
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                person_id:
                  type: string
                  format: uuid
                  description: Person identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                working_file_id:
                  type: string
                  format: uuid
                  description: Source working file identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                file_status_id:
                  type: string
                  format: uuid
                  description: File status identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                comment:
                  type: string
                  description: Output file comment
                  example: Final render
                extension:
                  type: string
                  description: File extension
                  example: ".mp4"
                representation:
                  type: string
                  description: File representation
                  example: mp4
                revision:
                  type: integer
                  description: File revision number
                  example: 1
                nb_elements:
                  type: integer
                  description: Number of elements
                  default: 1
                  example: 1
                sep:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '201':
          description: New output file created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Output file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: Output file name
                    example: main
                  path:
                    type: string
                    description: Output file path
                    example: "/project/asset/output/main_v001.mp4"
                  revision:
                    type: integer
                    description: Output file revision
                    example: 1
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/new" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "output",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "working_file_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "file_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "comment": "Final render",
            "extension": ".mp4",
            "representation": "mp4",
            "revision": 1,
            "nb_elements": 1,
            "sep": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/new"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "output",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "working_file_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "file_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "comment": "Final render",
              "extension": ".mp4",
              "representation": "mp4",
              "revision": 1,
              "nb_elements": 1,
              "sep": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-files/next-revision":
    post:
      summary: Get next entity output file revision
      description: Get the next revision number for an output file based on entity,
        output type, task type, and name. Used for automatic revision numbering.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: File name
                  default: main
                  example: main
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '200':
          description: Next revision number for the output file
          content:
            application/json:
              schema:
                type: object
                properties:
                  next_revision:
                    type: integer
                    description: Next available revision number
                    example: 3
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/next-revision" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/next-revision"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-files/last-revisions":
    get:
      summary: Get last entity output files
      description: Retrieve the last revisions of output files for a given entity
        grouped by output type and file name. Returns the most recent version of each
        output file.
      responses:
        '200':
          description: Last revisions of output files grouped by output type and file
            name
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 2
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/output/main_v002.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: output_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by output type
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: mp4
      - in: query
        name: file_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by file status
        example: d57d9hd7-fh08-7998-d403-80786315f58
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/last-revisions?output_type_id=b35b7fb5-df86-5776-b181-68564193d36&task_type_id=c46c8gc6-eg97-6887-c292-79675204e47&representation=mp4&file_status_id=d57d9hd7-fh08-7998-d403-80786315f58&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files/last-revisions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "output_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "task_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "representation": "mp4",
              "file_status_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-types":
    get:
      summary: Get entity output types
      description: Retrieve all types of output files generated for a given entity.
        Returns list of output types available for the entity.
      responses:
        '200':
          description: All types of output files generated for the entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Output type name
                      example: Cache
                    short_name:
                      type: string
                      description: Output type short name
                      example: CACHE
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-types/{output_type_id}/output-files":
    get:
      summary: Get entity output type files
      description: Retrieve all output files for a given entity and output type. Optionally
        filter by representation.
      responses:
        '200':
          description: All output files for the entity and output type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: output_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Output type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: mp4
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-types/b35b7fb5-df86-5776-b181-68564193d36/output-files?representation=mp4" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-types/b35b7fb5-df86-5776-b181-68564193d36/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "representation": "mp4"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-files":
    get:
      summary: Get entity output files
      description: Retrieve all output files for a given entity with optional filtering
        by output type, task type, representation, file status, and name.
      responses:
        '200':
          description: All output files for the entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: output_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by output type
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: file_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by file status
        example: d57d9hd7-fh08-7998-d403-80786315f58
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: cache
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files?output_type_id=b35b7fb5-df86-5776-b181-68564193d36&task_type_id=c46c8gc6-eg97-6887-c292-79675204e47&file_status_id=d57d9hd7-fh08-7998-d403-80786315f58&representation=cache&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "output_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "task_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "file_status_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "representation": "cache",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/output-files":
    get:
      summary: Get project output files
      description: Retrieve all output files for a given project with optional filtering
        by output type, task type, representation, file status, and name.
      responses:
        '200':
          description: All output files for the project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: output_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by output type
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: file_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by file status
        example: d57d9hd7-fh08-7998-d403-80786315f58
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: cache
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/output-files?output_type_id=b35b7fb5-df86-5776-b181-68564193d36&task_type_id=c46c8gc6-eg97-6887-c292-79675204e47&file_status_id=d57d9hd7-fh08-7998-d403-80786315f58&representation=cache&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "output_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "task_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "file_status_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "representation": "cache",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/asset-instances/{asset_instance_id}/output-files":
    get:
      summary: Get instance output files
      description: Retrieve all output files for a given asset instance and temporal
        entity with optional filtering by output type, task type, representation,
        file status, and name.
      responses:
        '200':
          description: All output files for the asset instance and temporal entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Output file unique identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
                    name:
                      type: string
                      description: Output file name
                      example: main
                    revision:
                      type: integer
                      description: Output file revision
                      example: 1
                    path:
                      type: string
                      description: Output file path
                      example: "/project/asset/instance/output/main_v001.mp4"
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:00:00Z'
                    asset_instance_id:
                      type: string
                      format: uuid
                      description: Asset instance identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    temporal_entity_id:
                      type: string
                      format: uuid
                      description: Temporal entity identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: asset_instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: temporal_entity_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by temporal entity
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: output_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by output type
        example: c46c8gc6-eg97-6887-c292-79675204e47
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type
        example: d57d9hd7-fh08-7998-d403-80786315f58
      - in: query
        name: file_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by file status
        example: e68e0ie8-gi19-8009-e514-91897426g69
      - in: query
        name: representation
        required: false
        schema:
          type: string
        description: Filter by representation
        example: cache
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter by file name
        example: main
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/output-files?temporal_entity_id=b35b7fb5-df86-5776-b181-68564193d36&output_type_id=c46c8gc6-eg97-6887-c292-79675204e47&task_type_id=d57d9hd7-fh08-7998-d403-80786315f58&file_status_id=e68e0ie8-gi19-8009-e514-91897426g69&representation=cache&name=main" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/output-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "temporal_entity_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "output_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "task_type_id": "d57d9hd7-fh08-7998-d403-80786315f58",
              "file_status_id": "e68e0ie8-gi19-8009-e514-91897426g69",
              "representation": "cache",
              "name": "main"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/output-file-path":
    post:
      summary: Generate entity output file path
      description: Generate an output file path from file tree template based on entity
        parameters. Revision can be computed automatically if not provided.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - output_type_id
              - task_type_id
              properties:
                name:
                  type: string
                  description: File name
                  default: main
                  example: main
                mode:
                  type: string
                  description: File mode
                  default: output
                  example: output
                output_type_id:
                  type: string
                  format: uuid
                  description: Output type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                extension:
                  type: string
                  description: File extension
                  example: ".mp4"
                representation:
                  type: string
                  description: File representation
                  example: mp4
                revision:
                  type: integer
                  description: File revision number
                  example: 1
                separator:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '200':
          description: Output file path generated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  folder_path:
                    type: string
                    description: Generated folder path
                    example: "/project/asset/output"
                  file_name:
                    type: string
                    description: Generated file name
                    example: main_v001.mp4
        '400':
          description: Malformed file tree
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-file-path" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "main",
            "mode": "output",
            "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "extension": ".mp4",
            "representation": "mp4",
            "revision": 1,
            "separator": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/output-file-path"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "main",
              "mode": "output",
              "output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "extension": ".mp4",
              "representation": "mp4",
              "revision": 1,
              "separator": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/guess_from_path":
    post:
      summary: Guess file tree template
      description: Get list of possible project file tree templates matching a file
        path and data ids corresponding to template tokens.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - project_id
              - file_path
              properties:
                project_id:
                  type: string
                  format: uuid
                  description: Project unique identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                file_path:
                  type: string
                  description: File path to analyze
                  example: "/project/asset/working/main_v001.blend"
                sep:
                  type: string
                  description: Path separator
                  default: "/"
                  example: "/"
      responses:
        '200':
          description: List of possible project file tree templates matching the file
            path
          content:
            application/json:
              schema:
                type: object
                properties:
                  matches:
                    type: array
                    items:
                      type: object
                      properties:
                        template:
                          type: string
                          description: Template name
                          example: default
                        confidence:
                          type: number
                          description: Confidence score
                          example: 0.95
                        data:
                          type: object
                          description: Extracted data from path
                          properties:
                            project_id:
                              type: string
                              format: uuid
                              description: Project identifier
                              example: a24a6ea4-ce75-4665-a070-57453082c25
                            entity_id:
                              type: string
                              format: uuid
                              description: Entity identifier
                              example: b35b7fb5-df86-5776-b181-68564193d36
        '400':
          description: Invalid project ID or file path
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/entities/guess_from_path" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "file_path": "/project/asset/working/main_v001.blend",
            "sep": "/"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/guess_from_path"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "file_path": "/project/asset/working/main_v001.blend",
              "sep": "/"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/working-files/{working_file_id}/file":
    get:
      summary: Download working file
      description: Download a working file from storage. Returns the file content
        with appropriate headers for caching and attachment.
      responses:
        '200':
          description: Working file downloaded successfully
          content:
            image/png:
              schema:
                type: string
                format: binary
                description: PNG image file
                example: binary data
            image/jpg:
              schema:
                type: string
                format: binary
                description: JPEG image file
                example: binary data
            image/gif:
              schema:
                type: string
                format: binary
                description: GIF image file
                example: binary data
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: Binary file content
                example: binary data
      parameters:
      - in: path
        name: working_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Working file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25/file" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25/file"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Store working file
      description: Store a working file in the file storage system. Uploads the file
        content and associates it with the working file record.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
                  description: Working file to upload
                  example: file content
      responses:
        '201':
          description: Working file stored successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Working file unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Working file name
                    example: main
                  path:
                    type: string
                    description: Working file path
                    example: "/project/asset/working/main_v001.blend"
                  revision:
                    type: integer
                    description: Working file revision
                    example: 1
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: working_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Working file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25/file" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/working-files/a24a6ea4-ce75-4665-a070-57453082c25/file"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/set-file-tree":
    post:
      summary: Set project file tree
      description: Define a template file to use for a given project. Template files
        are located on the server side and each template has a name for selection.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - tree_name
              properties:
                tree_name:
                  type: string
                  description: Name of the file tree template
                  example: default
      responses:
        '200':
          description: File tree template set successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: Project name
                    example: My Project
                  file_tree:
                    type: object
                    description: File tree template configuration
                    example:
                      template: default
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/set-file-tree" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "tree_name": "default"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/set-file-tree"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "tree_name": "default"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/working-files/{working_file_id}/comment":
    put:
      summary: Update working file comment
      description: Update the comment on a specific working file. Comments provide
        context about changes made to the working file.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - comment
              properties:
                comment:
                  type: string
                  description: Working file comment
                  example: Updated lighting and materials
      responses:
        '200':
          description: Working file comment updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Working file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  comment:
                    type: string
                    description: Updated comment
                    example: Updated lighting and materials
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: working_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Working file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/working-files/a24a6ea4-ce75-4665-a070-57453082c25/comment" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "comment": "Updated lighting and materials"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/working-files/a24a6ea4-ce75-4665-a070-57453082c25/comment"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "comment": "Updated lighting and materials"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/working-files/{working_file_id}/modified":
    put:
      summary: Update working file modification date
      description: Update the modification date of a working file to the current timestamp.
        Used to track when the file was last modified.
      responses:
        '200':
          description: Working file modification date updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Working file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  updated_at:
                    type: string
                    format: date-time
                    description: Updated modification timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: working_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Working file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Files
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/working-files/a24a6ea4-ce75-4665-a070-57453082c25/modified" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/working-files/a24a6ea4-ce75-4665-a070-57453082c25/modified"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/persons":
    post:
      summary: Import shotgun persons
      description: Import Shotgun persons (users). Send a list of Shotgun person entries
        in the JSON body. Returns created or updated persons with department associations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the person
                    example: 12345
                  firstname:
                    type: string
                    description: First name
                    example: John
                  lastname:
                    type: string
                    description: Last name
                    example: Doe
                  email:
                    type: string
                    format: email
                    description: Email address
                    example: john.doe@example.com
                  login:
                    type: string
                    description: Desktop login
                    example: jdoe
                  sg_status_list:
                    type: string
                    description: Status list
                    example: act
                  permission_rule_set:
                    type: object
                    description: Permission rule set
                    properties:
                      name:
                        type: string
                        example: Manager
                  department:
                    type: object
                    description: Department information
                    properties:
                      name:
                        type: string
                        example: Animation
            example:
            - id: 12345
              firstname: John
              lastname: Doe
              email: john.doe@example.com
              login: jdoe
              sg_status_list: act
              permission_rule_set:
                name: Manager
              department:
                name: Animation
      responses:
        '200':
          description: Persons imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    first_name:
                      type: string
                      description: First name
                      example: John
                    last_name:
                      type: string
                      description: Last name
                      example: Doe
                    email:
                      type: string
                      format: email
                      description: Email address
                      example: john.doe@example.com
                    role:
                      type: string
                      description: User role
                      example: manager
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/persons" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "firstname": "John",
              "lastname": "Doe",
              "email": "john.doe@example.com",
              "login": "jdoe",
              "sg_status_list": "act",
              "permission_rule_set": {
                "name": "Manager"
              },
              "department": {
                "name": "Animation"
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/persons"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "firstname": "John",
                  "lastname": "Doe",
                  "email": "john.doe@example.com",
                  "login": "jdoe",
                  "sg_status_list": "act",
                  "permission_rule_set": {
                      "name": "Manager"
                  },
                  "department": {
                      "name": "Animation"
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/projects":
    post:
      summary: Import shotgun projects
      description: Import Shotgun projects. Send a list of Shotgun project entries
        in the JSON body. Returns created or updated projects with custom fields preserved.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the project
                    example: 12345
                  name:
                    type: string
                    description: Project name
                    example: My Project
                  sg_status:
                    type: string
                    description: Project status
                    example: Active
            example:
            - id: 12345
              name: My Project
              sg_status: Active
      responses:
        '200':
          description: Projects imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    data:
                      type: object
                      description: Custom project data
                      example: {}
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/projects" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "name": "My Project",
              "sg_status": "Active"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/projects"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "name": "My Project",
                  "sg_status": "Active"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/episodes":
    post:
      summary: Import shotgun episodes
      description: Import Shotgun episodes. Send a list of Shotgun episode entries
        in the JSON body. Returns created or updated episodes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the episode
                    example: 12345
                  code:
                    type: string
                    description: Episode code
                    example: EP01
                  description:
                    type: string
                    description: Episode description
                    example: First episode
                  project:
                    type: object
                    description: Project information
                    properties:
                      name:
                        type: string
                        example: My Project
            example:
            - id: 12345
              code: EP01
              description: First episode
              project:
                name: My Project
      responses:
        '200':
          description: Episodes imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Episode unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Episode name
                      example: EP01
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/episodes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "EP01",
              "description": "First episode",
              "project": {
                "name": "My Project"
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "EP01",
                  "description": "First episode",
                  "project": {
                      "name": "My Project"
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/sequences":
    post:
      summary: Import shotgun sequences
      description: Import Shotgun sequences. Send a list of Shotgun sequence entries
        in the JSON body. Returns created or updated sequences linked to episodes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the sequence
                    example: 12345
                  code:
                    type: string
                    description: Sequence code
                    example: SQ01
                  description:
                    type: string
                    description: Sequence description
                    example: Main sequence
                  project:
                    type: object
                    description: Project information
                    properties:
                      name:
                        type: string
                        example: My Project
                  episode:
                    type: object
                    description: Episode information
                    properties:
                      id:
                        type: integer
                        example: 11111
            example:
            - id: 12345
              code: SQ01
              description: Main sequence
              project:
                name: My Project
              episode:
                id: 11111
      responses:
        '200':
          description: Sequences imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Sequence unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Sequence name
                      example: SQ01
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/sequences" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "SQ01",
              "description": "Main sequence",
              "project": {
                "name": "My Project"
              },
              "episode": {
                "id": 11111
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "SQ01",
                  "description": "Main sequence",
                  "project": {
                      "name": "My Project"
                  },
                  "episode": {
                      "id": 11111
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/shots":
    post:
      summary: Import shotgun shots
      description: Import Shotgun shots. Send a list of Shotgun shot entries in the
        JSON body. Returns created or updated shots with frame ranges, custom fields,
        and asset links.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the shot
                    example: 12345
                  code:
                    type: string
                    description: Shot code
                    example: SH010
                  sg_cut_in:
                    type: integer
                    description: Cut in frame
                    example: 1001
                  sg_cut_duration:
                    type: integer
                    description: Cut duration in frames
                    example: 50
                  project:
                    type: object
                    description: Project information
                    properties:
                      name:
                        type: string
                        example: My Project
                  sg_sequence:
                    type: object
                    description: Sequence information
                    properties:
                      id:
                        type: integer
                        example: 11111
                  sg_scene:
                    type: object
                    description: Scene information
                    properties:
                      id:
                        type: integer
                        example: 22222
                  assets:
                    type: array
                    description: Linked assets
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 33333
            example:
            - id: 12345
              code: SH010
              sg_cut_in: 1001
              sg_cut_duration: 50
              project:
                name: My Project
              sg_sequence:
                id: 11111
              sg_scene:
                id: 22222
              assets:
              - id: 33333
      responses:
        '200':
          description: Shots imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Shot name
                      example: SH010
                    data:
                      type: object
                      description: Shot data with frame ranges and custom fields
                      example:
                        frame_in: 1001
                        frame_out: 1051
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "SH010",
              "sg_cut_in": 1001,
              "sg_cut_duration": 50,
              "project": {
                "name": "My Project"
              },
              "sg_sequence": {
                "id": 11111
              },
              "sg_scene": {
                "id": 22222
              },
              "assets": [
                {
                  "id": 33333
                }
              ]
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "SH010",
                  "sg_cut_in": 1001,
                  "sg_cut_duration": 50,
                  "project": {
                      "name": "My Project"
                  },
                  "sg_sequence": {
                      "id": 11111
                  },
                  "sg_scene": {
                      "id": 22222
                  },
                  "assets": [
                      {
                          "id": 33333
                      }
                  ]
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/scenes":
    post:
      summary: Import shotgun scenes
      description: Import Shotgun scenes. Send a list of Shotgun scene entries in
        the JSON body. Returns created or updated scenes linked to sequences.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the scene
                    example: 12345
                  code:
                    type: string
                    description: Scene code
                    example: SC01
                  project:
                    type: object
                    description: Project information
                    properties:
                      name:
                        type: string
                        example: My Project
            example:
            - id: 12345
              code: SC01
              project:
                name: My Project
      responses:
        '200':
          description: Scenes imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Scene unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Scene name
                      example: SC01
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/scenes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "SC01",
              "project": {
                "name": "My Project"
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/scenes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "SC01",
                  "project": {
                      "name": "My Project"
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/assets":
    post:
      summary: Import shotgun assets
      description: Import Shotgun assets. Send a list of Shotgun asset entries in
        the JSON body. Returns created or updated assets with parent-child relationships.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the asset
                    example: 12345
                  code:
                    type: string
                    description: Asset code
                    example: Asset01
                  description:
                    type: string
                    description: Asset description
                    example: Main character asset
                  sg_asset_type:
                    type: string
                    description: Asset type name
                    example: Character
                  project:
                    type: object
                    description: Project information
                    properties:
                      id:
                        type: integer
                        example: 11111
                  parents:
                    type: array
                    description: Parent assets
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 22222
            example:
            - id: 12345
              code: Asset01
              description: Main character asset
              sg_asset_type: Character
              project:
                id: 11111
              parents:
              - id: 22222
      responses:
        '200':
          description: Assets imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Asset name
                      example: Asset01
                    description:
                      type: string
                      description: Asset description
                      example: Main character asset
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/assets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "Asset01",
              "description": "Main character asset",
              "sg_asset_type": "Character",
              "project": {
                "id": 11111
              },
              "parents": [
                {
                  "id": 22222
                }
              ]
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "Asset01",
                  "description": "Main character asset",
                  "sg_asset_type": "Character",
                  "project": {
                      "id": 11111
                  },
                  "parents": [
                      {
                          "id": 22222
                      }
                  ]
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/steps":
    post:
      summary: Import shotgun steps
      description: Import Shotgun steps (task types). Send a list of Shotgun step
        entries in the JSON body. Returns created or updated task types with departments.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the step
                    example: 12345
                  code:
                    type: string
                    description: Step code (used to extract department)
                    example: Animation Modeling
                  short_name:
                    type: string
                    description: Step short name
                    example: mod
                  color:
                    type: string
                    description: Color in RGB format
                    example: '255,128,0'
                  entity_type:
                    type: string
                    description: Entity type this step applies to
                    example: Asset
            example:
            - id: 12345
              code: Animation Modeling
              short_name: mod
              color: '255,128,0'
              entity_type: Asset
      responses:
        '200':
          description: Task types imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Task type name
                      example: Animation Modeling
                    short_name:
                      type: string
                      description: Task type short name
                      example: mod
                    color:
                      type: string
                      description: Task type color in hex format
                      example: "#FF8000"
                    for_entity:
                      type: string
                      description: Entity type
                      example: Asset
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/steps" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "Animation Modeling",
              "short_name": "mod",
              "color": "255,128,0",
              "entity_type": "Asset"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/steps"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "Animation Modeling",
                  "short_name": "mod",
                  "color": "255,128,0",
                  "entity_type": "Asset"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/status":
    post:
      summary: Import shotgun task statuses
      description: Import Shotgun task statuses. Send a list of Shotgun status entries
        in the JSON body. Returns created or updated task statuses with colors.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the status
                    example: 12345
                  name:
                    type: string
                    description: Status name
                    example: In Progress
                  code:
                    type: string
                    description: Status short code
                    example: IP
                  bg_color:
                    type: string
                    description: Background color in RGB format
                    example: '255,128,0'
            example:
            - id: 12345
              name: In Progress
              code: IP
              bg_color: '255,128,0'
      responses:
        '200':
          description: Task statuses imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task status unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Status name
                      example: In Progress
                    short_name:
                      type: string
                      description: Status short code
                      example: IP
                    color:
                      type: string
                      description: Status color in hex format
                      example: "#FF8000"
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "name": "In Progress",
              "code": "IP",
              "bg_color": "255,128,0"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "name": "In Progress",
                  "code": "IP",
                  "bg_color": "255,128,0"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/tasks":
    post:
      summary: Import shotgun tasks
      description: Import Shotgun tasks. Send a list of Shotgun task entries in the
        JSON body. Only tasks with steps and projects are imported. Returns created
        or updated tasks with assignees.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the task
                    example: 12345
                  cached_display_name:
                    type: string
                    description: Task display name
                    example: Modeling for Asset
                  start_date:
                    type: string
                    format: date
                    description: Start date
                    example: '2024-01-15'
                  due_date:
                    type: string
                    format: date
                    description: Due date
                    example: '2024-02-15'
                  sg_sort_order:
                    type: integer
                    description: Sort order
                    example: 1
                  duration:
                    type: integer
                    description: Duration in days
                    example: 30
                  step:
                    type: object
                    description: Step (task type) information
                    properties:
                      id:
                        type: integer
                        example: 11111
                  project:
                    type: object
                    description: Project information
                    properties:
                      id:
                        type: integer
                        example: 22222
                  entity:
                    type: object
                    description: Entity information
                    properties:
                      id:
                        type: integer
                        example: 33333
                      type:
                        type: string
                        example: Asset
                  sg_status_list:
                    type: string
                    description: Status short name
                    example: IP
                  created_by:
                    type: object
                    description: Creator information
                    properties:
                      id:
                        type: integer
                        example: 44444
                  task_assignees:
                    type: array
                    description: Task assignees
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 55555
            example:
            - id: 12345
              cached_display_name: Modeling for Asset
              start_date: '2024-01-15'
              due_date: '2024-02-15'
              sg_sort_order: 1
              duration: 30
              step:
                id: 11111
              project:
                id: 22222
              entity:
                id: 33333
                type: Asset
              sg_status_list: IP
              created_by:
                id: 44444
              task_assignees:
              - id: 55555
      responses:
        '200':
          description: Tasks imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Task name
                      example: Modeling for Asset
                    start_date:
                      type: string
                      format: date
                      description: Start date
                      example: '2024-01-15'
                    due_date:
                      type: string
                      format: date
                      description: Due date
                      example: '2024-02-15'
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "cached_display_name": "Modeling for Asset",
              "start_date": "2024-01-15",
              "due_date": "2024-02-15",
              "sg_sort_order": 1,
              "duration": 30,
              "step": {
                "id": 11111
              },
              "project": {
                "id": 22222
              },
              "entity": {
                "id": 33333,
                "type": "Asset"
              },
              "sg_status_list": "IP",
              "created_by": {
                "id": 44444
              },
              "task_assignees": [
                {
                  "id": 55555
                }
              ]
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "cached_display_name": "Modeling for Asset",
                  "start_date": "2024-01-15",
                  "due_date": "2024-02-15",
                  "sg_sort_order": 1,
                  "duration": 30,
                  "step": {
                      "id": 11111
                  },
                  "project": {
                      "id": 22222
                  },
                  "entity": {
                      "id": 33333,
                      "type": "Asset"
                  },
                  "sg_status_list": "IP",
                  "created_by": {
                      "id": 44444
                  },
                  "task_assignees": [
                      {
                          "id": 55555
                      }
                  ]
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/versions":
    post:
      summary: Import shotgun versions
      description: Import Shotgun versions (preview files). Send a list of Shotgun
        version entries in the JSON body. Only versions linked to tasks are imported.
        Returns created or updated preview files.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the version
                    example: 12345
                  code:
                    type: string
                    description: Version code
                    example: v001
                  description:
                    type: string
                    description: Version description
                    example: First version
                  sg_task:
                    type: object
                    description: Task information
                    properties:
                      id:
                        type: integer
                        example: 11111
                  user:
                    type: object
                    description: User information
                    properties:
                      id:
                        type: integer
                        example: 22222
                  sg_uploaded_movie:
                    type: object
                    description: Uploaded movie information
                    properties:
                      url:
                        type: string
                        example: https://example.com/movie.mp4
                      name:
                        type: string
                        example: movie.mp4
            example:
            - id: 12345
              code: v001
              description: First version
              sg_task:
                id: 11111
              user:
                id: 22222
              sg_uploaded_movie:
                url: https://example.com/movie.mp4
                name: movie.mp4
      responses:
        '200':
          description: Versions imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Preview file unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Preview file name
                      example: v001
                    description:
                      type: string
                      description: Preview file description
                      example: First version
                    source:
                      type: string
                      description: Source of the preview
                      example: Shotgun
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/versions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "code": "v001",
              "description": "First version",
              "sg_task": {
                "id": 11111
              },
              "user": {
                "id": 22222
              },
              "sg_uploaded_movie": {
                "url": "https://example.com/movie.mp4",
                "name": "movie.mp4"
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/versions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "code": "v001",
                  "description": "First version",
                  "sg_task": {
                      "id": 11111
                  },
                  "user": {
                      "id": 22222
                  },
                  "sg_uploaded_movie": {
                      "url": "https://example.com/movie.mp4",
                      "name": "movie.mp4"
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/notes":
    post:
      summary: Import shotgun notes
      description: Import Shotgun notes (comments) linked to tasks. Send a list of
        Shotgun note entries in the JSON body. Only notes linked to tasks are imported.
        Returns created or updated comments.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the note
                    example: 12345
                  content:
                    type: string
                    description: Note content
                    example: This is a comment
                  tasks:
                    type: array
                    description: Linked tasks
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 67890
                  user:
                    type: object
                    description: User who created the note
                    properties:
                      id:
                        type: integer
                        example: 11111
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2024-01-15T10:30:00Z'
            example:
            - id: 12345
              content: This is a comment
              tasks:
              - id: 67890
              user:
                id: 11111
              created_at: '2024-01-15T10:30:00Z'
      responses:
        '200':
          description: Notes imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Comment unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    text:
                      type: string
                      description: Comment text
                      example: This is a comment
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/notes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "content": "This is a comment",
              "tasks": [
                {
                  "id": 67890
                }
              ],
              "user": {
                "id": 11111
              },
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/notes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "content": "This is a comment",
                  "tasks": [
                      {
                          "id": 67890
                      }
                  ],
                  "user": {
                      "id": 11111
                  },
                  "created_at": "2024-01-15T10:30:00Z"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/errors":
    get:
      summary: Get shotgun import errors
      description: Get all Shotgun import errors from the database. Returns a list
        of data import errors with source "shotgun".
      responses:
        '200':
          description: List of import errors retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Import error unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    source:
                      type: string
                      description: Source of the import error
                      example: shotgun
                    event_data:
                      type: object
                      description: Error event data
                      example:
                        error: Import failed
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid request
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/import/shotgun/errors" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/errors"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create shotgun import error
      description: Create a new Shotgun import error record. The error event data
        should be provided in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Error event data
              properties:
                error:
                  type: string
                  description: Error message
                  example: Failed to import asset
                details:
                  type: object
                  description: Additional error details
                  example:
                    shotgun_id: 12345
                    reason: Missing field
              example:
                error: Failed to import asset
                details:
                  shotgun_id: 12345
                  reason: Missing required field
      responses:
        '201':
          description: Import error created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Import error unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  source:
                    type: string
                    description: Source of the import error
                    example: shotgun
                  event_data:
                    type: object
                    description: Error event data
                    example:
                      error: Failed to import asset
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid request body
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/errors" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "error": "Failed to import asset",
            "details": {
              "shotgun_id": 12345,
              "reason": "Missing required field"
            }
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/errors"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "error": "Failed to import asset",
              "details": {
                  "shotgun_id": 12345,
                  "reason": "Missing required field"
              }
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/projectconnections":
    post:
      summary: Import shotgun project connections
      description: Import Shotgun project-user connections. Send a list of Shotgun
        project connection entries in the JSON body. Returns projects with team members
        added.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    description: Shotgun ID of the connection
                    example: 12345
                  project:
                    type: object
                    description: Project information
                    properties:
                      id:
                        type: integer
                        example: 11111
                  user:
                    type: object
                    description: User information
                    properties:
                      id:
                        type: integer
                        example: 22222
            example:
            - id: 12345
              project:
                id: 11111
              user:
                id: 22222
      responses:
        '200':
          description: Project connections imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    team:
                      type: array
                      description: Team member IDs
                      items:
                        type: string
                        format: uuid
                      example:
                      - b35b7fb5-df86-5776-b181-68564193d36
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or data format error
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/projectconnections" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": 12345,
              "project": {
                "id": 11111
              },
              "user": {
                "id": 22222
              }
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/projectconnections"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": 12345,
                  "project": {
                      "id": 11111
                  },
                  "user": {
                      "id": 22222
                  }
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/errors/{error_id}":
    delete:
      summary: Delete shotgun import error
      description: Delete a Shotgun import error by its unique identifier. Returns
        success confirmation when the error is deleted.
      responses:
        '204':
          description: Import error deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  deletion_success:
                    type: boolean
                    description: Whether deletion was successful
                    example: true
        '400':
          description: Invalid error ID format
      parameters:
      - in: path
        name: error_id
        required: true
        schema:
          type: string
          format: uuid
        description: Import error unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/import/shotgun/errors/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/errors/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/project":
    post:
      summary: Remove shotgun project
      description: Remove a Shotgun project from the database. Provide the Shotgun
        entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the project to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed project, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/project" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/project"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/person":
    post:
      summary: Remove shotgun person
      description: Remove a Shotgun person (user) from the database. Provide the Shotgun
        entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the person to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed person, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/person" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/person"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/shot":
    post:
      summary: Remove shotgun shot
      description: Remove a Shotgun shot from the database. Provide the Shotgun entry
        ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the shot to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed shot, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/shot" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/shot"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/scene":
    post:
      summary: Remove shotgun scene
      description: Remove a Shotgun scene from the database. Provide the Shotgun entry
        ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the scene to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed scene, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/scene" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/scene"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/episode":
    post:
      summary: Remove shotgun episode
      description: Remove a Shotgun episode from the database. Provide the Shotgun
        entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the episode to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed episode, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/episode" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/episode"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/sequence":
    post:
      summary: Remove shotgun sequence
      description: Remove a Shotgun sequence from the database. Provide the Shotgun
        entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the sequence to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed sequence, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/sequence" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/sequence"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/asset":
    post:
      summary: Remove shotgun asset
      description: Remove a Shotgun asset from the database. Provide the Shotgun entry
        ID in the JSON body. If the asset has working files linked to tasks, it will
        be cancelled instead of deleted.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the asset to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed asset, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/asset" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/asset"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/projectconnection":
    post:
      summary: Remove shotgun project connection
      description: Remove a Shotgun project-user connection from the database. Provide
        the Shotgun entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the connection to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed connection, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/projectconnection" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/projectconnection"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/step":
    post:
      summary: Remove shotgun step
      description: Remove a Shotgun step (task type) from the database. Provide the
        Shotgun entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the step to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed step, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/step" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/step"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/status":
    post:
      summary: Remove shotgun task status
      description: Remove a Shotgun task status from the database. Provide the Shotgun
        entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the task status to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed task status, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/task":
    post:
      summary: Remove shotgun task
      description: Remove a Shotgun task from the database. Provide the Shotgun entry
        ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the task to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed task, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/task" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/task"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/note":
    post:
      summary: Remove shotgun note
      description: Remove a Shotgun note (comment) from the database. Provide the
        Shotgun entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the note to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed note, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/note" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/note"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/shotgun/remove/version":
    post:
      summary: Remove shotgun version
      description: Remove a Shotgun version (preview file) from the database. Provide
        the Shotgun entry ID in the JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: integer
                  description: Shotgun ID of the version to remove
                  example: 12345
            example:
              id: 12345
      responses:
        '200':
          description: Removal result returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the removal was successful
                    example: true
                  removed_instance_id:
                    type: string
                    format: uuid
                    description: ID of the removed version, if found
                    example: a24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid request body or instance not found
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/shotgun/remove/version" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "id": 12345
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/shotgun/remove/version"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "id": 12345
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/persons":
    post:
      summary: Import persons csv
      description: Import persons from a CSV file. Creates or updates persons based
        on CSV rows. Supports role, contract type, and active status updates.
      responses:
        '201':
          description: Persons imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    first_name:
                      type: string
                      example: John
                    last_name:
                      type: string
                      example: Doe
                    email:
                      type: string
                      format: email
                      example: john.doe@example.com
                    phone:
                      type: string
                      example: 1234567890
                    active:
                      type: boolean
                      example: true
        '400':
          description: Invalid CSV format or missing required columns
      parameters:
      - in: query
        name: update
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to update existing persons
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with person data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/persons?update=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/persons"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "update": false
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/assets":
    post:
      summary: Import assets csv
      description: Import project assets from a CSV file. Creates or updates assets
        based on CSV rows. Supports metadata descriptors and task status updates.
      responses:
        '201':
          description: Assets imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Character A
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_type_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    description:
                      type: string
                      example: Main character asset
        '400':
          description: Invalid CSV format or missing required columns
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: update
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to update existing assets
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with asset data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets?update=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "update": false
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/shots":
    post:
      summary: Import shots csv
      description: Import project shots from a CSV file. Creates or updates shots
        based on CSV rows. Supports sequences, episodes, and task status updates.
      responses:
        '201':
          description: Shots imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    nb_frames:
                      type: integer
                      example: 120
                    description:
                      type: string
                      example: Shot description
        '400':
          description: Invalid CSV format or missing required columns
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: update
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to update existing shots
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with shot data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots?update=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "update": false
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/edits":
    post:
      summary: Import edits csv
      description: Import project edits from a CSV file. Creates or updates edits
        based on CSV rows. Supports metadata descriptors and task status updates.
      responses:
        '201':
          description: Edits imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Edit_001
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    description:
                      type: string
                      example: Edit description
        '400':
          description: Invalid CSV format or missing required columns
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: update
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to update existing edits
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with edit data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits?update=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "update": false
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/casting":
    post:
      summary: Import casting csv
      description: Import project casting links from a CSV file. Links assets to shots,
        sequences, or episodes based on CSV rows.
      responses:
        '201':
          description: Casting links imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    entity_in_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_out_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    nb_occurences:
                      type: integer
                      example: 1
                    label:
                      type: string
                      example: fixed
        '400':
          description: Invalid CSV format or missing required columns
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: update
        required: false
        schema:
          type: boolean
        default: false
        example: false
        description: Whether to update existing casting links
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with casting link data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/casting?update=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/casting"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "update": false
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/task-types/{task_type_id}/estimations":
    post:
      summary: Import task type estimations csv
      description: Import task type estimations from a CSV file. Updates estimations,
        dates, and other task properties for assets or shots based on CSV rows.
      responses:
        '201':
          description: Task estimations imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Asset Modeling
                    estimation:
                      type: integer
                      example: 480
                    start_date:
                      type: string
                      format: date
                      example: '2024-01-15'
                    due_date:
                      type: string
                      format: date
                      example: '2024-01-25'
        '400':
          description: Invalid CSV format or entity not found
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: b24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with task estimation data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b24a6ea4-ce75-4665-a070-57453082c25/estimations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b24a6ea4-ce75-4665-a070-57453082c25/estimations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/csv/projects/{project_id}/episodes/{episode_id}/task-types/{task_type_id}/estimations":
    post:
      summary: Import episode task type estimations csv
      description: Import task type estimations from a CSV file for a specific episode.
        Updates estimations, dates, and other task properties for assets or shots
        based on CSV rows.
      responses:
        '201':
          description: Task estimations imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Asset Modeling
                    estimation:
                      type: integer
                      example: 480
                    start_date:
                      type: string
                      format: date
                      example: '2024-01-15'
                    due_date:
                      type: string
                      format: date
                      example: '2024-01-25'
        '400':
          description: Invalid CSV format or entity not found
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: b24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: episode_id
        required: true
        schema:
          type: string
          format: uuid
        example: c24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        type: file
        required: true
        description: CSV file with task estimation data
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/c24a6ea4-ce75-4665-a070-57453082c25/task-types/b24a6ea4-ce75-4665-a070-57453082c25/estimations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/csv/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/c24a6ea4-ce75-4665-a070-57453082c25/task-types/b24a6ea4-ce75-4665-a070-57453082c25/estimations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/otio/projects/{project_id}":
    post:
      summary: Import otio EDL
      description: Import an OTIO file to set frame_in, frame_out, and nb_frames for
        shots. Supports any OpenTimelineIO adapter format like EDL or OTIO. Uses naming
        convention to match shots.
      responses:
        '201':
          description: Shots imported successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_shots:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        name:
                          type: string
                          example: SH010
                        project_id:
                          type: string
                          format: uuid
                          example: b24a6ea4-ce75-4665-a070-57453082c25
                        nb_frames:
                          type: integer
                          example: 120
                        data:
                          type: object
                          properties:
                            frame_in:
                              type: integer
                              example: 1001
                            frame_out:
                              type: integer
                              example: 1120
                  created_shots:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        name:
                          type: string
                          example: SH020
                        project_id:
                          type: string
                          format: uuid
                          example: b24a6ea4-ce75-4665-a070-57453082c25
                        nb_frames:
                          type: integer
                          example: 96
                        data:
                          type: object
                          properties:
                            frame_in:
                              type: integer
                              example: 2001
                            frame_out:
                              type: integer
                              example: 2096
        '400':
          description: Invalid file format or parsing error
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: naming_convention
        required: false
        schema:
          type: string
        default: "${project_name}_${sequence_name}-${shot_name}"
        example: "${project_name}_${sequence_name}-${shot_name}"
        description: Template for matching shot names from the file
      - in: query
        name: match_case
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to match shot names case-sensitively
      - in: formData
        name: file
        type: file
        required: true
        description: OTIO file to import (EDL, OTIO, etc.)
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/otio/projects/a24a6ea4-ce75-4665-a070-57453082c25?naming_convention=%24%7Bproject_name%7D_%24%7Bsequence_name%7D-%24%7Bshot_name%7D&match_case=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/otio/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "naming_convention": "${project_name}_${sequence_name}-${shot_name}",
              "match_case": true
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/otio/projects/{project_id}/episodes/{episode_id}":
    post:
      summary: Import episode otio
      description: Import an OTIO file to set frame_in, frame_out, and nb_frames for
        shots in an episode. Supports any OpenTimelineIO adapter format like EDL or
        OTIO. Uses naming convention with episode name to match shots.
      responses:
        '201':
          description: Shots imported successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_shots:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        name:
                          type: string
                          example: SH010
                        project_id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        nb_frames:
                          type: integer
                          example: 120
                        data:
                          type: object
                          properties:
                            frame_in:
                              type: integer
                              example: 1001
                            frame_out:
                              type: integer
                              example: 1120
                  created_shots:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: d24a6ea4-ce75-4665-a070-57453082c25
                        name:
                          type: string
                          example: SH020
                        project_id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        nb_frames:
                          type: integer
                          example: 96
                        data:
                          type: object
                          properties:
                            frame_in:
                              type: integer
                              example: 2001
                            frame_out:
                              type: integer
                              example: 2096
        '400':
          description: Invalid file format or parsing error
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: episode_id
        required: true
        schema:
          type: string
          format: uuid
        example: b24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: naming_convention
        required: false
        schema:
          type: string
        default: "${project_name}_${episode_name}-${sequence_name}-${shot_name}"
        example: "${project_name}_${episode_name}-${sequence_name}-${shot_name}"
        description: Template for matching shot names from the file
      - in: query
        name: match_case
        required: false
        schema:
          type: boolean
        default: true
        example: true
        description: Whether to match shot names case-sensitively
      - in: formData
        name: file
        type: file
        required: true
        description: OTIO file to import (EDL, OTIO, etc.)
      tags:
      - Import
      consumes:
      - multipart/form-data
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/otio/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/b24a6ea4-ce75-4665-a070-57453082c25?naming_convention=%24%7Bproject_name%7D_%24%7Bepisode_name%7D-%24%7Bsequence_name%7D-%24%7Bshot_name%7D&match_case=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/otio/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/b24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "naming_convention": "${project_name}_${episode_name}-${sequence_name}-${shot_name}",
              "match_case": true
          }
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/kitsu/comments":
    post:
      summary: Import kitsu comments
      description: Import Kitsu comments. Send a list of Kitsu comment entries in
        the JSON body. Returns created or updated comments linked to tasks.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Kitsu ID of the comment
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    description: Task ID the comment is linked to
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    description: Comment text
                    example: This is a comment
                  person_id:
                    type: string
                    format: uuid
                    description: Person who created the comment
                    example: c24a6ea4-ce75-4665-a070-57453082c25
            example:
            - id: a24a6ea4-ce75-4665-a070-57453082c25
              object_id: b24a6ea4-ce75-4665-a070-57453082c25
              text: This is a comment
              person_id: c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Comments imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Comment unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    text:
                      type: string
                      description: Comment text
                      example: This is a comment
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or missing required fields
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/kitsu/comments" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "object_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "text": "This is a comment",
              "person_id": "c24a6ea4-ce75-4665-a070-57453082c25"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/kitsu/comments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": "a24a6ea4-ce75-4665-a070-57453082c25",
                  "object_id": "b24a6ea4-ce75-4665-a070-57453082c25",
                  "text": "This is a comment",
                  "person_id": "c24a6ea4-ce75-4665-a070-57453082c25"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/kitsu/entities":
    post:
      summary: Import kitsu entities
      description: Import Kitsu entities (assets, shots, sequences, etc.). Send a
        list of Kitsu entity entries in the JSON body. Returns created or updated
        entities.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Kitsu ID of the entity
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Entity name
                    example: Asset01
                  project_id:
                    type: string
                    format: uuid
                    description: Project ID
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_type_id:
                    type: string
                    format: uuid
                    description: Entity type ID
                    example: c24a6ea4-ce75-4665-a070-57453082c25
            example:
            - id: a24a6ea4-ce75-4665-a070-57453082c25
              name: Asset01
              project_id: b24a6ea4-ce75-4665-a070-57453082c25
              entity_type_id: c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Entities imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Entity unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Entity name
                      example: Asset01
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or missing required fields
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/kitsu/entities" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Asset01",
              "project_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "entity_type_id": "c24a6ea4-ce75-4665-a070-57453082c25"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/kitsu/entities"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": "a24a6ea4-ce75-4665-a070-57453082c25",
                  "name": "Asset01",
                  "project_id": "b24a6ea4-ce75-4665-a070-57453082c25",
                  "entity_type_id": "c24a6ea4-ce75-4665-a070-57453082c25"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/kitsu/entity-links":
    post:
      summary: Import kitsu entity links
      description: Import Kitsu entity links (casting links). Send a list of Kitsu
        entity link entries in the JSON body. Returns created or updated entity links.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Kitsu ID of the entity link
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  entity_in_id:
                    type: string
                    format: uuid
                    description: Source entity ID
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_out_id:
                    type: string
                    format: uuid
                    description: Target entity ID
                    example: c24a6ea4-ce75-4665-a070-57453082c25
            example:
            - id: a24a6ea4-ce75-4665-a070-57453082c25
              entity_in_id: b24a6ea4-ce75-4665-a070-57453082c25
              entity_out_id: c24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Entity links imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Entity link unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    entity_in_id:
                      type: string
                      format: uuid
                      description: Source entity ID
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_out_id:
                      type: string
                      format: uuid
                      description: Target entity ID
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or missing required fields
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/kitsu/entity-links" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "entity_in_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "entity_out_id": "c24a6ea4-ce75-4665-a070-57453082c25"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/kitsu/entity-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": "a24a6ea4-ce75-4665-a070-57453082c25",
                  "entity_in_id": "b24a6ea4-ce75-4665-a070-57453082c25",
                  "entity_out_id": "c24a6ea4-ce75-4665-a070-57453082c25"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/kitsu/projects":
    post:
      summary: Import kitsu projects
      description: Import Kitsu projects. Send a list of Kitsu project entries in
        the JSON body. Returns created or updated projects.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Kitsu ID of the project
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
                  production_type:
                    type: string
                    description: Production type
                    example: tvshow
            example:
            - id: a24a6ea4-ce75-4665-a070-57453082c25
              name: My Project
              production_type: tvshow
      responses:
        '200':
          description: Projects imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or missing required fields
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/kitsu/projects" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "My Project",
              "production_type": "tvshow"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/kitsu/projects"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": "a24a6ea4-ce75-4665-a070-57453082c25",
                  "name": "My Project",
                  "production_type": "tvshow"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/import/kitsu/tasks":
    post:
      summary: Import kitsu tasks
      description: Import Kitsu tasks. Send a list of Kitsu task entries in the JSON
        body. Returns created or updated tasks.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Kitsu ID of the task
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Task name
                    example: Modeling
                  project_id:
                    type: string
                    format: uuid
                    description: Project ID
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity ID the task is linked to
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  task_type_id:
                    type: string
                    format: uuid
                    description: Task type ID
                    example: d24a6ea4-ce75-4665-a070-57453082c25
            example:
            - id: a24a6ea4-ce75-4665-a070-57453082c25
              name: Modeling
              project_id: b24a6ea4-ce75-4665-a070-57453082c25
              entity_id: c24a6ea4-ce75-4665-a070-57453082c25
              task_type_id: d24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Tasks imported successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Task name
                      example: Modeling
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Update timestamp
                      example: '2024-01-15T11:00:00Z'
        '400':
          description: Invalid request body or missing required fields
      tags:
      - Import
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/import/kitsu/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            {
              "id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Modeling",
              "project_id": "b24a6ea4-ce75-4665-a070-57453082c25",
              "entity_id": "c24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "d24a6ea4-ce75-4665-a070-57453082c25"
            }
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/import/kitsu/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              {
                  "id": "a24a6ea4-ce75-4665-a070-57453082c25",
                  "name": "Modeling",
                  "project_id": "b24a6ea4-ce75-4665-a070-57453082c25",
                  "entity_id": "c24a6ea4-ce75-4665-a070-57453082c25",
                  "task_type_id": "d24a6ea4-ce75-4665-a070-57453082c25"
              }
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/":
    get:
      summary: Get API name and version
      responses:
        '200':
          description: API name and version
          content:
            application/json:
              schema:
                type: object
                properties:
                  api:
                    type: string
                    example: Zou
                  version:
                    type: string
                    example: 0.20.0
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/status":
    get:
      summary: Get status of the API services
      description: " "
      responses:
        '200':
          description: Status of the API services
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                    example: Zou
                  version:
                    type: string
                    example: 0.20.0
                  database-up:
                    type: boolean
                    example: true
                  key-value-store-up:
                    type: boolean
                    example: true
                  event-stream-up:
                    type: boolean
                    example: true
                  job-queue-up:
                    type: boolean
                    example: true
                  indexer-up:
                    type: boolean
                    example: true
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/status/influx":
    get:
      summary: Get status of the API services for InfluxDB
      description: Get status of the database, key value store, event stream, job
        queue, indexer as a JSON object.
      responses:
        '200':
          description: Status of database, key value, event stream, job queue and
            time
          content:
            application/json:
              schema:
                type: object
                properties:
                  database-up:
                    type: integer
                    example: 1
                  key-value-store-up:
                    type: integer
                    example: 1
                  event-stream-up:
                    type: integer
                    example: 1
                  job-queue-up:
                    type: integer
                    example: 1
                  indexer-up:
                    type: integer
                    example: 1
                  time:
                    type: number
                    format: float
                    example: 1701948600.123
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/status/influx" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/status/influx"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/status/resources":
    get:
      summary: Get resource usage stats
      description: Get CPU usage for each core, memory repartition and number of jobs
        in the job queue.
      responses:
        '200':
          description: CPU, memory and jobs stats
          content:
            application/json:
              schema:
                type: object
                properties:
                  date:
                    type: string
                    format: date-time
                    example: '2023-12-07T10:30:00.000Z'
                  cpu:
                    type: object
                    properties:
                      percent:
                        type: array
                        items:
                          type: number
                        example:
                        - 25.5
                        - 30.2
                        - 28.1
                      loadavg:
                        type: object
                        properties:
                          last 1 min:
                            type: number
                            example: 0.75
                          last 5 min:
                            type: number
                            example: 0.82
                          last 10 min:
                            type: number
                            example: 0.78
                  memory:
                    type: object
                    properties:
                      total:
                        type: integer
                        example: 8589934592
                      used:
                        type: integer
                        example: 4294967296
                      available:
                        type: integer
                        example: 4294967296
                      percent:
                        type: number
                        example: 50.0
                  jobs:
                    type: object
                    properties:
                      running_jobs:
                        type: integer
                        example: 3
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/status/resources" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/status/resources"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/status.txt":
    get:
      summary: Get status of the API services as text
      description: Get status of the database, key value store, event stream, job
        queue, the indexer as a text.
      responses:
        '200':
          description: API name, version and status as txt
          content:
            text/plain:
              schema:
                type: string
                example: |-
                  name: Zou
                  version: 0.20.0
                  database-up: up
                  event-stream-up: up
                  key-value-store-up: up
                  job-queue-up: up
                  indexer-up: up
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/status.txt" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/status.txt"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/status/test-event":
    get:
      summary: Generate a test event
      description: Generate a `main:test` event to test the event stream with the
        Python client or similar.
      responses:
        '200':
          description: Success flag
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/status/test-event" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/status/test-event"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/stats":
    get:
      summary: Get usage stats
      description: Get the amount of projects, assets, shots, tasks, and persons.
      responses:
        '200':
          description: Main stats
          content:
            application/json:
              schema:
                type: object
                properties:
                  projects:
                    type: integer
                    example: 15
                  assets:
                    type: integer
                    example: 1250
                  shots:
                    type: integer
                    example: 890
                  tasks:
                    type: integer
                    example: 5670
                  persons:
                    type: integer
                    example: 45
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/stats" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/stats"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/config":
    get:
      summary: Get the configuration of the Kitsu instance
      description: The configuration includes self-hosted status, Crisp token, indexer
        configuration, SAML status, and dark theme status.
      responses:
        '200':
          description: Configuration object
          content:
            application/json:
              schema:
                type: object
                properties:
                  is_self_hosted:
                    type: boolean
                    example: true
                  crisp_token:
                    type: string
                    example: abc123def456
                  dark_theme_by_default:
                    type: boolean
                    example: false
                  indexer_configured:
                    type: boolean
                    example: true
                  saml_enabled:
                    type: boolean
                    example: false
                  saml_idp_name:
                    type: string
                    example: My Company SSO
                  default_locale:
                    type: string
                    example: en_US
                  default_timezone:
                    type: string
                    example: UTC
                  sentry:
                    type: object
                    properties:
                      dsn:
                        type: string
                        example: https://example@sentry.io/123456
                      sampleRate:
                        type: number
                        example: 0.1
      tags:
      - Index
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/config" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/config"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/news":
    get:
      summary: Get open projects news
      description: Returns the latest news and activity feed from all projects the
        user has access to.
      responses:
        '200':
          description: News feed successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                    description: Array of news items
                  stats:
                    type: object
                    description: News statistics
                  total:
                    type: integer
                    description: Total number of news items
      parameters:
      - in: query
        name: project_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by specific project
      - in: query
        name: before
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter news before this date
      - in: query
        name: after
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter news after this date
      - in: query
        name: page
        required: false
        schema:
          type: integer
          default: 1
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 50
        example: 50
        description: Number of news items per page
      - in: query
        name: person_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by specific team member
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by task type
      - in: query
        name: task_status_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by task status
      - in: query
        name: episode_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by specific episode
      - in: query
        name: only_preview
        required: false
        schema:
          type: boolean
          default: false
        example: false
        description: Show only news related to preview uploads
      tags:
      - News
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/news?project_id=a24a6ea4-ce75-4665-a070-57453082c25&before=2022-07-12&after=2022-07-12&page=1&limit=50&person_id=a24a6ea4-ce75-4665-a070-57453082c25&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&task_status_id=a24a6ea4-ce75-4665-a070-57453082c25&episode_id=a24a6ea4-ce75-4665-a070-57453082c25&only_preview=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/news"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "before": "2022-07-12",
              "after": "2022-07-12",
              "page": 1,
              "limit": 50,
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "only_preview": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/news":
    get:
      summary: Get project latest news
      description: Get the 50 latest news object (activity feed) for a project
      responses:
        '200':
          description: All news related to given project
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique news item identifier
                        title:
                          type: string
                          description: News item title
                        content:
                          type: string
                        created_at:
                          type: string
                          format: date-time
                        author_id:
                          type: string
                          format: uuid
                  stats:
                    type: object
                    properties:
                      total:
                        type: integer
        '404':
          description: Project not found
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: query
        name: before
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter news before this date
      - in: query
        name: after
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter news after this date
      - in: query
        name: page
        required: false
        schema:
          type: integer
          default: 1
        example: 1
        description: Page number for pagination
      - in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 50
        example: 50
        description: Number of news items per page
      - in: query
        name: person_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by specific team member
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by task type
      - in: query
        name: task_status_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by task status
      - in: query
        name: episode_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter news by specific episode
      - in: query
        name: only_preview
        required: false
        schema:
          type: boolean
          default: false
        example: false
        description: Show only news related to preview uploads
      tags:
      - News
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/news?before=2022-07-12&after=2022-07-12&page=1&limit=50&person_id=a24a6ea4-ce75-4665-a070-57453082c25&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&task_status_id=a24a6ea4-ce75-4665-a070-57453082c25&episode_id=a24a6ea4-ce75-4665-a070-57453082c25&only_preview=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/news"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "before": "2022-07-12",
              "after": "2022-07-12",
              "page": 1,
              "limit": 50,
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "only_preview": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/news/{news_id}":
    get:
      summary: Get news item
      description: Retrieves detailed information about a specific news item from
        a givenproject.
      responses:
        '200':
          description: News item successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Unique news item identifier
                  title:
                    type: string
                    description: News item title
                  content:
                    type: string
                    description: News item content
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                  author_id:
                    type: string
                    format: uuid
                    description: Author's user ID
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
        '404':
          description: News item or project not found
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      - in: path
        name: news_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the news item
      tags:
      - News
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/news/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/news/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/desktop-login-logs":
    get:
      summary: Get desktop login logs
      description: Retrieve desktop login logs for a person. Desktop login logs can
        only be created by current user.
      responses:
        '200':
          description: Desktop login logs for the person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Log entry unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    date:
                      type: string
                      format: date-time
                      description: Login date and time
                      example: '2022-07-12T10:30:00Z'
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/desktop-login-logs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/desktop-login-logs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create desktop login log
      description: Add a new log entry for desktop logins for a person.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - date
              properties:
                date:
                  type: string
                  format: date
                  description: Login date
                  example: '2022-07-12'
      responses:
        '201':
          description: Desktop login log entry created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Log entry unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    description: Person unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  date:
                    type: string
                    format: date-time
                    description: Login date and time
                    example: '2022-07-12T10:30:00Z'
        '400':
          description: Invalid date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/desktop-login-logs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "date": "2022-07-12"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/desktop-login-logs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "date": "2022-07-12"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/presence-logs/{month_date}":
    get:
      summary: Get presence logs
      description: Return a CSV file containing the presence logs based on a daily
        basis for the given month.
      responses:
        '200':
          description: CSV file containing the presence logs based on daily basis
          content:
            text/csv:
              schema:
                type: string
                format: binary
        '400':
          description: Invalid date format
      parameters:
      - in: path
        name: month_date
        required: true
        schema:
          type: string
          format: date
        description: Month in YYYY-MM format
        example: 2022-07
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/presence-logs/2022-07" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/presence-logs/2022-07"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents":
    get:
      summary: Get time spents
      description: Get all time spents for the given person. Optionally can accept
        date range parameters.
      responses:
        '200':
          description: All time spents for the given person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Time spent unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    duration:
                      type: number
                      format: float
                      description: Time spent duration in hours
                      example: 8.5
                    date:
                      type: string
                      format: date
                      description: Date of time spent entry
                      example: '2022-07-12'
        '400':
          description: Invalid date range parameters
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        description: Start date for date range filter
        example: '2022-07-01'
      - in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date
        description: End date for date range filter
        example: '2022-07-31'
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents?start_date=2022-07-01&end_date=2022-07-31" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "start_date": "2022-07-01",
              "end_date": "2022-07-31"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/{date}":
    get:
      summary: Get time spents for date
      description: Get time spents for given person and specific date.
      responses:
        '200':
          description: Time spents for given person and date
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Time spent unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    duration:
                      type: number
                      format: float
                      description: Time spent duration in hours
                      example: 8.5
                    date:
                      type: string
                      format: date
                      description: Date of time spent entry
                      example: '2022-07-12'
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        description: Date to get time spents for
        example: '2022-07-12'
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/day-offs/{date}":
    get:
      summary: Get day off
      description: Get day off object for given person and date.
      responses:
        '200':
          description: Day off object for given person and date
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Day off unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    description: Person unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  date:
                    type: string
                    format: date
                    description: Day off date
                    example: '2022-07-12'
                  type:
                    type: string
                    description: Day off type
                    example: vacation
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        description: Date to get day off for
        example: '2022-07-12'
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/2022-07-12" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/2022-07-12"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/year/{year}":
    get:
      summary: Get year time spents
      description: Get aggregated time spents for given person and year.
      responses:
        '200':
          description: Aggregated time spents for given person and year
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_duration:
                    type: number
                    format: float
                    description: Total duration in hours
                    example: 2080.5
                  year:
                    type: integer
                    description: Year
                    example: 2022
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get aggregated time spents for
        example: 2022
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/year/2022" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/year/2022"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/month/{year}/{month}":
    get:
      summary: Get month time spents
      description: Get aggregated time spents for given person and month.
      responses:
        '200':
          description: Aggregated time spents for given person and month
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_duration:
                    type: number
                    format: float
                    description: Total duration in hours
                    example: 173.5
                  year:
                    type: integer
                    description: Year
                    example: 2022
                  month:
                    type: integer
                    description: Month
                    example: 7
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get aggregated time spents for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get aggregated time spents for
        example: 7
        minimum: 1
        maximum: 12
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/month/2022/7" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/month/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/month/all/{year}/{month}":
    get:
      summary: Get all month time spents
      description: Get all time spents for a given person and month.
      responses:
        '200':
          description: All time spents for the given person and month
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get time spents for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get time spents for
        example: 7
        minimum: 1
        maximum: 12
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/month/all/2022/7" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/month/all/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/week/{year}/{week}":
    get:
      summary: Get week time spents
      description: Get aggregated time spents for given person and week.
      responses:
        '200':
          description: Aggregated time spents for given person and week
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_duration:
                    type: number
                    format: float
                    description: Total duration in hours
                    example: 40.0
                  year:
                    type: integer
                    description: Year
                    example: 2022
                  week:
                    type: integer
                    description: Week number
                    example: 35
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get aggregated time spents for
        example: 2022
      - in: path
        name: week
        required: true
        schema:
          type: integer
        description: Week number to get aggregated time spents for
        example: 35
        minimum: 1
        maximum: 52
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/week/2022/35" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/week/2022/35"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/time-spents/day/{year}/{month}/{day}":
    get:
      summary: Get day time spents
      description: Get aggregated time spents for given person and day.
      responses:
        '200':
          description: Aggregated time spents for given person and day
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_duration:
                    type: number
                    format: float
                    description: Total duration in hours
                    example: 8.5
                  year:
                    type: integer
                    description: Year
                    example: 2022
                  month:
                    type: integer
                    description: Month
                    example: 7
                  day:
                    type: integer
                    description: Day
                    example: 12
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get aggregated time spents for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get aggregated time spents for
        example: 7
        minimum: 1
        maximum: 12
      - in: path
        name: day
        required: true
        schema:
          type: integer
        description: Day to get aggregated time spents for
        example: 12
        minimum: 1
        maximum: 31
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/day/2022/7/12" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/day/2022/7/12"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/quota-shots/month/{year}/{month}":
    get:
      summary: Get month quota shots
      description: Get ended shots used for quota calculation of this month.
      responses:
        '200':
          description: Ended shots used for quota calculation of this month
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: Wrong date format or invalid count mode
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get quota shots for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get quota shots for
        example: 7
        minimum: 1
        maximum: 12
      - in: query
        name: count_mode
        required: false
        schema:
          type: string
          enum:
          - weighted
          - weighteddone
          - feedback
          - done
        description: Count mode for quota calculation
        example: weighted
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/month/2022/7?count_mode=weighted" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/month/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "count_mode": "weighted"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/quota-shots/week/{year}/{week}":
    get:
      summary: Get week quota shots
      description: Get ended shots used for quota calculation of this week.
      responses:
        '200':
          description: Ended shots used for quota calculation of this week
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: Wrong date format or invalid count mode
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get quota shots for
        example: 2022
      - in: path
        name: week
        required: true
        schema:
          type: integer
        description: Week number to get quota shots for
        example: 35
        minimum: 1
        maximum: 52
      - in: query
        name: count_mode
        required: false
        schema:
          type: string
          enum:
          - weighted
          - weighteddone
          - feedback
          - done
        description: Count mode for quota calculation
        example: weighted
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/week/2022/35?count_mode=weighted" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/week/2022/35"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "count_mode": "weighted"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/quota-shots/day/{year}/{month}/{day}":
    get:
      summary: Get day quota shots
      description: Get ended shots used for quota calculation of this day.
      responses:
        '200':
          description: Ended shots used for quota calculation of this day
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: Wrong date format or invalid count mode
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get quota shots for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get quota shots for
        example: 7
        minimum: 1
        maximum: 12
      - in: path
        name: day
        required: true
        schema:
          type: integer
        description: Day to get quota shots for
        example: 12
        minimum: 1
        maximum: 31
      - in: query
        name: count_mode
        required: false
        schema:
          type: string
          enum:
          - weighted
          - weighteddone
          - feedback
          - done
        description: Count mode for quota calculation
        example: weighted
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/day/2022/7/12?count_mode=weighted" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/quota-shots/day/2022/7/12"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "count_mode": "weighted"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/time-spents/year-table/":
    get:
      summary: Get time spent years table
      description: Return a table giving time spent by user and by month for all years.
      responses:
        '200':
          description: Table giving time spent by user and by month for all years
          content:
            application/json:
              schema:
                type: object
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/time-spents/year-table/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/time-spents/year-table/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/time-spents/month-table/{year}":
    get:
      summary: Get time spent months table
      description: Return a table giving time spent by user and by month for given
        year.
      responses:
        '200':
          description: Table giving time spent by user and by month for given year
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get time spent table for
        example: 2022
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/time-spents/month-table/2022" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/time-spents/month-table/2022"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/time-spents/week-table/{year}":
    get:
      summary: Get time spent weeks table
      description: Return a table giving time spent by user and by week for given
        year.
      responses:
        '200':
          description: Table giving time spent by user and by week for given year
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get time spent table for
        example: 2022
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/time-spents/week-table/2022" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/time-spents/week-table/2022"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/time-spents/day-table/{year}/{month}":
    get:
      summary: Get time spent month table
      description: Return a table giving time spent by user and by day for given year
        and month.
      responses:
        '200':
          description: Table giving time spent by user and by day for given year and
            month
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get time spent table for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get time spent table for
        example: 7
        minimum: 1
        maximum: 12
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/time-spents/day-table/2022/7" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/time-spents/day-table/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/day-offs/{year}/{month}":
    get:
      summary: Get day offs for month
      description: Return all day off recorded for given month. Admins get all day
        offs, regular users get only their own.
      responses:
        '200':
          description: All day off recorded for given month
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get day offs for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get day offs for
        example: 7
        minimum: 1
        maximum: 12
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/day-offs/2022/7" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/day-offs/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/day-offs/week/{year}/{week}":
    get:
      summary: Get person week day offs
      description: Return all day off recorded for given week and person.
      responses:
        '200':
          description: All day off recorded for given week and person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get day offs for
        example: 2022
      - in: path
        name: week
        required: true
        schema:
          type: integer
        description: Week number to get day offs for
        example: 35
        minimum: 1
        maximum: 52
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/week/2022/35" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/week/2022/35"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/day-offs/month/{year}/{month}":
    get:
      summary: Get person month day offs
      description: Return all day off recorded for given month and person.
      responses:
        '200':
          description: All day off recorded for given month and person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get day offs for
        example: 2022
      - in: path
        name: month
        required: true
        schema:
          type: integer
        description: Month to get day offs for
        example: 7
        minimum: 1
        maximum: 12
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/month/2022/7" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/month/2022/7"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/day-offs/year/{year}":
    get:
      summary: Get person year day offs
      description: Return all day off recorded for given year and person.
      responses:
        '200':
          description: All day off recorded for given year and person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: year
        required: true
        schema:
          type: integer
        description: Year to get day offs for
        example: 2022
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/year/2022" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs/year/2022"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/day-offs":
    get:
      summary: Get person day offs
      description: Return all day offs recorded for given person.
      responses:
        '200':
          description: All day off recorded for given person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/day-offs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/invite":
    get:
      summary: Invite person
      description: Sends an email to given person to invite him or her to connect
        to Kitsu.
      responses:
        '200':
          description: Email sent successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Success flag
                    example: true
                  message:
                    type: string
                    description: Success message
                    example: Email sent
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/invite" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/invite"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/departments/add":
    post:
      summary: Add person to department
      description: Add a user to given department.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - department_id
              properties:
                department_id:
                  type: string
                  format: uuid
                  description: Department unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: User added to given department
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Person unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  department_id:
                    type: string
                    format: uuid
                    description: Department unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
        '400':
          description: Invalid department ID
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/departments/add" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "department_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/departments/add"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "department_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/departments/{department_id}":
    delete:
      summary: Remove person from department
      description: Remove a user from given department.
      responses:
        '204':
          description: User removed from given department
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: department_id
        required: true
        schema:
          type: string
          format: uuid
        description: Department unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/departments/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/departments/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/change-password":
    post:
      summary: Change person password
      description: Allow admin to change password for given user. An admin can't change
        other admins password. The new password requires a confirmation to ensure
        that the admin didn't make a mistake by typing the new password.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - password
              - password_2
              properties:
                password:
                  type: string
                  format: password
                  description: New password
                  example: newSecurePassword123
                password_2:
                  type: string
                  format: password
                  description: Password confirmation
                  example: newSecurePassword123
      responses:
        '200':
          description: Password changed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Success flag
                    example: true
        '400':
          description: Invalid password or inactive user
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: Error flag
                    example: true
                  message:
                    type: string
                    description: Error message
                    example: Password is too short.
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/change-password" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "password": "newSecurePassword123",
            "password_2": "newSecurePassword123"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/change-password"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "password": "newSecurePassword123",
              "password_2": "newSecurePassword123"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/disable-two-factor-authentication":
    delete:
      summary: Disable two factor authentication
      description: Allow admin to disable two factor authentication for given user.
        An admin can't disable two factor authentication for other admins.
      responses:
        '200':
          description: Two factor authentication disabled successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Success flag
                    example: true
        '400':
          description: Inactive user or two factor authentication not enabled
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: Error flag
                    example: true
                  message:
                    type: string
                    description: Error message
                    example: User is unactive.
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/disable-two-factor-authentication" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/disable-two-factor-authentication"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/clear-avatar":
    delete:
      summary: Clear person avatar
      description: Set has_avatar flag to False for current user and remove its avatar
        file.
      responses:
        '204':
          description: Avatar file deleted
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Persons
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/clear-avatar" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/clear-avatar"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/playlists":
    get:
      summary: Get project playlists
      description: Retrieve all playlists related to given project. Result is paginated
        and can be sorted.
      responses:
        '200':
          description: All playlists related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Playlist unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Playlist name
                      example: Review Playlist
                    project_id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: page
        required: false
        schema:
          type: integer
        description: Page number for pagination
        example: 1
      - in: query
        name: sort_by
        required: false
        schema:
          type: string
        description: Field to sort by
        example: updated_at
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Task type unique identifier to filter by
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists?page=1&sort_by=updated_at&task_type_id=b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "sort_by": "updated_at",
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/playlists/all":
    get:
      summary: Get all project playlists
      description: Retrieve all playlists related to given project. It's mainly used
        for synchronisation purpose.
      responses:
        '200':
          description: All playlists related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Playlist unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Playlist name
                      example: Review Playlist
                    project_id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/all" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/{episode_id}/playlists":
    get:
      summary: Get episode playlists
      description: Retrieve all playlists related to given episode. The full list
        is returned because the number of playlists in an episode is not that big.
      responses:
        '200':
          description: All playlists related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Playlist unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Playlist name
                      example: Review Playlist
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: episode_id
        required: true
        schema:
          type: string
          format: uuid
        description: Episode unique identifier or special value (main, all)
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/a24a6ea4-ce75-4665-a070-57453082c25/playlists" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/a24a6ea4-ce75-4665-a070-57453082c25/playlists"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/playlists/{playlist_id}":
    get:
      summary: Get playlist
      description: Retrieve a specific playlist by ID with preview file revisions.
      responses:
        '200':
          description: Playlist details with preview file revisions
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Playlist unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Playlist name
                    example: Review Playlist
                  project_id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  shots:
                    type: array
                    description: List of shots with preview file revisions
                    items:
                      type: object
                      example:
                      - id: uuid
                        preview_file_id: uuid
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/entities/{entity_id}/preview-files":
    get:
      summary: Get entity previews
      description: Retrieve all previews related to a given entity. It sends them
        as a dict. Keys are related task type ids and values are arrays of preview
        for this task type.
      responses:
        '200':
          description: All previews related to given entity grouped by task type
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Preview file unique identifier
                        example: a24a6ea4-ce75-4665-a070-57453082c25
                      name:
                        type: string
                        description: Preview file name
                        example: preview_v001.png
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/entities/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/entities/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/{playlist_id}/jobs/{build_job_id}":
    get:
      summary: Get build job
      description: Retrieve build job related to given playlist.
      responses:
        '200':
          description: Build job related to given playlist
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Build job unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  status:
                    type: string
                    description: Build job status
                    example: succeeded
                  created_at:
                    type: string
                    format: date-time
                    description: Build job creation timestamp
                    example: '2022-07-12T10:30:00Z'
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: build_job_id
        required: true
        schema:
          type: string
          format: uuid
        description: Build job unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete build job
      description: Remove given build job related to given playlist.
      responses:
        '204':
          description: Build job removed successfully
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: build_job_id
        required: true
        schema:
          type: string
          format: uuid
        description: Build job unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/build-jobs":
    get:
      summary: Get project build jobs
      description: Retrieve all build jobs related to given project. It's mainly used
        for synchronisation purpose.
      responses:
        '200':
          description: All build jobs related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Build job unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    status:
                      type: string
                      description: Build job status
                      example: succeeded
                    created_at:
                      type: string
                      format: date-time
                      description: Build job creation timestamp
                      example: '2022-07-12T10:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/build-jobs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/build-jobs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/{playlist_id}/build/mp4":
    get:
      summary: Build playlist movie
      description: Build given playlist as MP4 movie. Starts a build job that processes
        the playlist shots into a video file.
      responses:
        '200':
          description: Build job created for playlist movie
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Build job unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  status:
                    type: string
                    description: Build job status
                    example: pending
                  created_at:
                    type: string
                    format: date-time
                    description: Build job creation timestamp
                    example: '2022-07-12T10:30:00Z'
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: full
        required: false
        schema:
          type: boolean
        description: Whether to build full quality movie
        example: true
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/build/mp4?full=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/build/mp4"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "full": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/{playlist_id}/jobs/{build_job_id}/build/mp4":
    get:
      summary: Download playlist build
      description: Download given playlist build as MP4 file.
      responses:
        '200':
          description: Playlist build downloaded as MP4 file
          content:
            video/mp4:
              schema:
                type: string
                format: binary
        '400':
          description: Build not finished, need to retry later
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: Error flag
                    example: true
                  message:
                    type: string
                    description: Error message
                    example: Build is not finished
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: build_job_id
        required: true
        schema:
          type: string
          format: uuid
        description: Build job unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36/build/mp4" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/jobs/b35b7fb5-df86-5776-b181-68564193d36/build/mp4"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/{playlist_id}/download/zip":
    get:
      summary: Download playlist zip
      description: Download given playlist as ZIP file containing all preview files.
      responses:
        '200':
          description: Playlist downloaded as ZIP file
          content:
            application/zip:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/download/zip" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/download/zip"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/playlists/temp":
    post:
      summary: Generate temp playlist
      description: Generate a temporary playlist from task IDs. It's mainly used for
        synchronisation purpose.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_ids
              properties:
                task_ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: List of task unique identifiers
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Temporary playlist generated
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Preview file unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Preview file name
                      example: preview_v001.png
        '400':
          description: Invalid task IDs
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: sort
        required: false
        schema:
          type: boolean
        description: Whether to sort the playlist
        example: true
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/temp?sort=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_ids": [
              "a24a6ea4-ce75-4665-a070-57453082c25"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/temp"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {
              "sort": true
          }
          payload = {
              "task_ids": [
                  "a24a6ea4-ce75-4665-a070-57453082c25"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/playlists/{playlist_id}/add-entity":
    post:
      summary: Add entity to playlist
      description: Atomically add a single entity to the given playlist.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - entity_id
              properties:
                entity_id:
                  type: string
                  format: uuid
                  description: Entity unique identifier to add to playlist
                preview_file_id:
                  type: string
                  format: uuid
                  nullable: true
                  description: Optional preview file identifier associated to the
                    entity
      responses:
        '200':
          description: Updated playlist
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
      tags:
      - Playlists
  "/data/playlists/{playlist_id}/notify-clients":
    post:
      summary: Notify clients playlist ready
      description: Notify clients that given playlist is ready for review.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                studio_id:
                  type: string
                  format: uuid
                  description: Studio unique identifier to notify
                  example: b35b7fb5-df86-5776-b181-68564193d36
                department_id:
                  type: string
                  format: uuid
                  description: Department unique identifier to notify
                  example: c46c8gc6-eg97-6887-c292-79675204e47
      responses:
        '200':
          description: Clients notified successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Notification status
                    example: success
      parameters:
      - in: path
        name: playlist_id
        required: true
        schema:
          type: string
          format: uuid
        description: Playlist unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Playlists
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/notify-clients" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "studio_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/a24a6ea4-ce75-4665-a070-57453082c25/notify-clients"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "studio_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/open":
    get:
      summary: Get open projects
      description: Return the list of projects currently running. Most of the time,
        past projects are not needed.
      responses:
        '200':
          description: All running projects
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    project_status_id:
                      type: string
                      format: uuid
                      description: Project status unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter projects by name
        example: My Project
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/open?name=My%20Project" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/open"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "name": "My Project"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/all":
    get:
      summary: Get all projects
      description: Return all projects listed in database. Ensure that user has at
        least the manager level before that.
      responses:
        '200':
          description: All projects listed in database
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    project_status_id:
                      type: string
                      format: uuid
                      description: Project status unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
      parameters:
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter projects by name
        example: My Project
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/all?name=My%20Project" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "name": "My Project"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/team":
    get:
      summary: Get production team
      description: Return the people listed in a production team.
      responses:
        '200':
          description: People listed in a production team
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    first_name:
                      type: string
                      description: Person first name
                      example: John
                    last_name:
                      type: string
                      description: Person last name
                      example: Doe
                    email:
                      type: string
                      description: Person email address
                      example: john.doe@example.com
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add person to production team
      description: Add a person to a production team.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - person_id
              properties:
                person_id:
                  type: string
                  format: uuid
                  description: Person unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Person added to the production team
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/task-types":
    get:
      summary: Get production task types
      description: Retrieve task types linked to the production.
      responses:
        '200':
          description: Task types linked to the production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/task-types/{task_type_id}/time-spents":
    get:
      summary: Get production task type time spents
      description: Retrieve time spents for a task type in the production.
      responses:
        '200':
          description: All time spents for given task type and project
          content:
            application/json:
              schema:
                type: dict
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Time spent unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    duration:
                      type: number
                      format: float
                      description: Time spent duration in hours
                      example: 8.5
                    date:
                      type: string
                      format: date
                      description: Date of time spent entry
                      example: '2022-07-15'
        '400':
          description: Invalid date range parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        description: Start date for filtering time spents
        example: '2022-07-01'
      - in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date
        description: End date for filtering time spents
        example: '2022-07-31'
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/time-spents?start_date=2022-07-01&end_date=2022-07-31" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "start_date": "2022-07-01",
              "end_date": "2022-07-31"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/day-offs":
    get:
      summary: Get production day offs
      description: Retrieve all day offs for a production.
      responses:
        '200':
          description: All day offs for given project
          content:
            application/json:
              schema:
                type: dict
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Day off unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    description:
                      type: string
                      description: Day off description
                      example: Vacation
                    date:
                      type: string
                      format: date
                      description: Day off start date
                      example: '2022-07-15'
                    end_date:
                      type: string
                      format: date
                      description: Day off end date
                      example: '2022-07-22'
        '400':
          description: Invalid date range parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        description: Start date for filtering day offs
        example: '2022-07-01'
      - in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date
        description: End date for filtering day offs
        example: '2022-07-31'
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/day-offs?start_date=2022-07-01&end_date=2022-07-31" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/day-offs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "start_date": "2022-07-01",
              "end_date": "2022-07-31"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/team/{person_id}":
    delete:
      summary: Remove person from production team
      description: Remove people listed in a production team.
      responses:
        '204':
          description: Person removed from production team
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        description: Person unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/asset-types":
    post:
      summary: Add asset type to production
      description: Add an asset type linked to a production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - asset_type_id
              properties:
                asset_type_id:
                  type: string
                  format: uuid
                  description: Asset type unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Asset type added to production
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/asset-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "asset_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "asset_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/asset-types/{asset_type_id}":
    delete:
      summary: Remove asset type from production
      description: Remove an asset type from a production.
      responses:
        '204':
          description: Asset type removed from production
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: asset_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/asset-types/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/asset-types/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/task-types":
    post:
      summary: Add task type to production
      description: Add a task type linked to a production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_type_id
              properties:
                task_type_id:
                  type: string
                  format: uuid
                  description: Task type unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                priority:
                  type: string
                  description: Task type priority
                  example: None
      responses:
        '201':
          description: Task type added to production
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "priority": "None"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "priority": "None"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/task-types/{task_type_id}":
    delete:
      summary: Remove task type from production
      description: Remove a task type from a production.
      responses:
        '204':
          description: Task type removed from production
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-types/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-types/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/task-status":
    get:
      summary: Get production task statuses
      description: Return task statuses linked to a production.
      responses:
        '200':
          description: Task statuses linked to production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add task status to production
      description: Add a task status linked to a production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_status_id
              properties:
                task_status_id:
                  type: string
                  format: uuid
                  description: Task status unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Task status added to production
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_status_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_status_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/task-status/{task_status_id}":
    delete:
      summary: Remove task status from production
      description: Remove a task status from a production.
      responses:
        '204':
          description: Task status removed from production
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_status_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task status unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/task-status/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/status-automations":
    get:
      summary: Get production status automations
      description: Get status automations linked to a production.
      responses:
        '200':
          description: Status automations linked to production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add status automation to production
      description: Add a status automation linked to a production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - status_automation_id
              properties:
                status_automation_id:
                  type: string
                  format: uuid
                  description: Status automation unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Status automation added to production
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "status_automation_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "status_automation_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/status-automations/{status_automation_id}":
    delete:
      summary: Remove status automation from production
      description: Remove a status automation from a production.
      responses:
        '204':
          description: Status automation removed from production
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: status_automation_id
        required: true
        schema:
          type: string
          format: uuid
        description: Status automation unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/status-automations/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/preview-background-files/{preview_background_file_id}":
    delete:
      summary: Remove preview background file from production
      description: Remove a preview background file from a production.
      responses:
        '204':
          description: Preview background file removed from production
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: preview_background_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview background file unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/settings/preview-background-files":
    get:
      summary: Get production preview background files
      description: Return preview background files linked to a production.
      responses:
        '200':
          description: Preview background files linked to production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add preview background file to production
      description: Add a preview background file linked to a production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - preview_background_file_id
              properties:
                preview_background_file_id:
                  type: string
                  format: uuid
                  description: Preview background file unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Preview background file added to production
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Project unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Project name
                    example: My Project
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "preview_background_file_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "preview_background_file_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/metadata-descriptors":
    get:
      summary: Get metadata descriptors
      description: Get all metadata descriptors. It serves to describe extra fields
        listed in the data attribute of entities.
      responses:
        '200':
          description: All metadata descriptors
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create metadata descriptor
      description: Create a new metadata descriptor. It serves to describe extra fields
        listed in the data attribute of entities.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - data_type
              properties:
                entity_type:
                  type: string
                  description: Entity type for the metadata descriptor
                  enum:
                  - Asset
                  - Shot
                  - Edit
                  - Episode
                  - Sequence
                  default: Asset
                  example: Asset
                name:
                  type: string
                  description: Name of the metadata descriptor
                  example: Custom Field
                data_type:
                  type: string
                  description: Type of data (string, number, boolean, etc.)
                  example: string
                for_client:
                  type: string
                  description: Whether the descriptor is for client
                  default: 'False'
                  example: 'True'
                choices:
                  type: array
                  description: List of choices for the descriptor
                  items:
                    type: string
                  example:
                  - option1
                  - option2
                departments:
                  type: array
                  description: List of departments for the descriptor
                  items:
                    type: string
                  example:
                  - department1
                  - department2
      responses:
        '201':
          description: Metadata descriptor created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Metadata descriptor unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Metadata descriptor name
                    example: Custom Field
                  data_type:
                    type: string
                    description: Metadata descriptor data type
                    example: string
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "entity_type": "Asset",
            "name": "Custom Field",
            "data_type": "string",
            "for_client": "True",
            "choices": [
              "option1",
              "option2"
            ],
            "departments": [
              "department1",
              "department2"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "entity_type": "Asset",
              "name": "Custom Field",
              "data_type": "string",
              "for_client": "True",
              "choices": [
                  "option1",
                  "option2"
              ],
              "departments": [
                  "department1",
                  "department2"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/metadata-descriptors/reorder":
    post:
      summary: Reorder metadata descriptors
      description: Reorder metadata descriptors for a specific entity type and project.
        Descriptors are reordered based on the list of descriptor IDs provided in
        the request body. Position is set according to the order in the list.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - entity_type
              - descriptor_ids
              properties:
                entity_type:
                  type: string
                  description: Entity type for the metadata descriptors
                  enum:
                  - Asset
                  - Shot
                  - Edit
                  - Episode
                  - Sequence
                  example: Asset
                descriptor_ids:
                  type: array
                  description: List of metadata descriptor IDs in the desired order
                  items:
                    type: string
                    format: uuid
                  example:
                  - b35b7fb5-df86-5776-b181-68564193d36
                  - c46c8gc6-eg97-6887-c292-79675204e47
      responses:
        '200':
          description: Metadata descriptors reordered successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Metadata descriptor unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Metadata descriptor name
                      example: Custom Field
                    position:
                      type: integer
                      description: Position of the descriptor
                      example: 1
                    entity_type:
                      type: string
                      description: Entity type
                      example: Asset
        '400':
          description: Invalid parameters or descriptor not found
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/reorder" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "entity_type": "Asset",
            "descriptor_ids": [
              "b35b7fb5-df86-5776-b181-68564193d36",
              "c46c8gc6-eg97-6887-c292-79675204e47"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/reorder"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "entity_type": "Asset",
              "descriptor_ids": [
                  "b35b7fb5-df86-5776-b181-68564193d36",
                  "c46c8gc6-eg97-6887-c292-79675204e47"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/metadata-descriptors/{descriptor_id}":
    get:
      summary: Get metadata descriptor
      description: Get a metadata descriptor. Descriptors serve to describe extra
        fields listed in the data attribute of entities.
      responses:
        '200':
          description: Metadata descriptor
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: descriptor_id
        required: true
        schema:
          type: string
          format: uuid
        description: Metadata descriptor unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete metadata descriptor
      description: Delete a metadata descriptor. Descriptors serve to describe extra
        fields listed in the data attribute of entities.
      responses:
        '204':
          description: Metadata descriptor deleted
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: descriptor_id
        required: true
        schema:
          type: string
          format: uuid
        description: Metadata descriptor unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update metadata descriptor
      description: Update a metadata descriptor. Descriptors serve to describe extra
        fields listed in the data attribute of entities.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the metadata descriptor
                  example: Custom Field
                for_client:
                  type: string
                  description: Whether the descriptor is for client
                  default: 'False'
                  example: 'True'
                choices:
                  type: array
                  description: List of choices for the descriptor
                  items:
                    type: string
                  example:
                  - option1
                  - option2
                departments:
                  type: array
                  description: List of departments for the descriptor
                  items:
                    type: string
                  example:
                  - department1
                  - department2
      responses:
        '200':
          description: Metadata descriptor updated
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: descriptor_id
        required: true
        schema:
          type: string
          format: uuid
        description: Metadata descriptor unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Custom Field",
            "for_client": "True",
            "choices": [
              "option1",
              "option2"
            ],
            "departments": [
              "department1",
              "department2"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/metadata-descriptors/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Custom Field",
              "for_client": "True",
              "choices": [
                  "option1",
                  "option2"
              ],
              "departments": [
                  "department1",
                  "department2"
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/milestones":
    get:
      summary: Get production milestones
      description: Retrieve milestones for given production.
      responses:
        '200':
          description: All milestones of given production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/milestones" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/milestones"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/schedule-items":
    get:
      summary: Get production schedule items
      description: Retrieve schedule items for given production.
      responses:
        '200':
          description: All schedule items of given production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/schedule-items/task-types":
    get:
      summary: Get production task type schedule items
      description: Retrieve task type schedule items for given production.
      responses:
        '200':
          description: All task types schedule items of given production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/schedule-items/{task_type_id}/asset-types":
    get:
      summary: Get asset types schedule items
      description: Retrieve asset types schedule items for given task type.
      responses:
        '200':
          description: All asset types schedule items for given task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/asset-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/schedule-items/{task_type_id}/episodes":
    get:
      summary: Get episodes schedule items
      description: Retrieve episodes schedule items for given task type.
      responses:
        '200':
          description: All episodes schedule items for given task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/episodes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/schedule-items/{task_type_id}/sequences":
    get:
      summary: Get sequences schedule items
      description: Retrieve sequences schedule items for given task type.
      responses:
        '200':
          description: All sequences schedule items for given task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/sequences" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/schedule-items/b35b7fb5-df86-5776-b181-68564193d36/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/time-spents":
    get:
      summary: Get production time spents
      description: Retrieve time spents for given production.
      responses:
        '200':
          description: All time spents of given production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/time-spents" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/budgets":
    get:
      summary: Get production budgets
      description: Retrieve budgets for given production.
      responses:
        '200':
          description: All budgets of given production
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create budget
      description: Create a budget for given production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Budget name
                  example: New Budget
                currency:
                  type: string
                  description: Budget currency code
                  default: USD
                  example: USD
      responses:
        '201':
          description: Budget created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Budget unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Budget name
                    example: New Budget
                  currency:
                    type: string
                    description: Budget currency code
                    example: USD
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "New Budget",
            "currency": "USD"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "New Budget",
              "currency": "USD"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/budgets/{budget_id}":
    get:
      summary: Get budget
      description: Retrieve a budget for given production.
      responses:
        '200':
          description: Budget retrieved
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete budget
      description: Delete a budget for given production.
      responses:
        '204':
          description: Budget deleted
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update budget
      description: Update a budget for given production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Budget name
                  example: New Budget
                currency:
                  type: string
                  description: Budget currency code
                  example: USD
      responses:
        '200':
          description: Budget updated
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "New Budget",
            "currency": "USD"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "New Budget",
              "currency": "USD"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/budgets/{budget_id}/entries":
    get:
      summary: Get budget entries
      description: Retrieve budget entries for given production.
      responses:
        '200':
          description: All budget entries of given production and budget
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create budget entry
      description: Create a budget entry for given production and budget.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - department_id
              properties:
                department_id:
                  type: string
                  format: uuid
                  description: Department unique identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
                person_id:
                  type: string
                  format: uuid
                  description: Person unique identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                start_date:
                  type: string
                  format: date
                  description: Budget entry start date
                  example: '2025-01-01'
                months_duration:
                  type: integer
                  description: Budget entry duration in months
                  example: 12
                daily_salary:
                  type: number
                  format: float
                  description: Daily salary amount
                  example: 100.0
                position:
                  type: string
                  description: Position name
                  example: Artist
                seniority:
                  type: string
                  description: Seniority level
                  example: Mid
      responses:
        '201':
          description: Budget entry created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Budget entry unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  department_id:
                    type: string
                    format: uuid
                    description: Department unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "department_id": "c46c8gc6-eg97-6887-c292-79675204e47",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "start_date": "2025-01-01",
            "months_duration": 12,
            "daily_salary": 100,
            "position": "Artist",
            "seniority": "Mid"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "department_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "start_date": "2025-01-01",
              "months_duration": 12,
              "daily_salary": 100,
              "position": "Artist",
              "seniority": "Mid"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/budgets/{budget_id}/entries/{entry_id}":
    get:
      summary: Get budget entry
      description: Retrieve a budget entry for given production and budget.
      responses:
        '200':
          description: Budget entry retrieved
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: path
        name: entry_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget entry unique identifier
        example: c46c8gc6-eg97-6887-c292-79675204e47
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete budget entry
      description: Delete a budget entry for given production and budget.
      responses:
        '204':
          description: Budget entry deleted
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: path
        name: entry_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget entry unique identifier
        example: c46c8gc6-eg97-6887-c292-79675204e47
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update budget entry
      description: Update a budget entry for given production and budget.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                department_id:
                  type: string
                  format: uuid
                  description: Department unique identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
                person_id:
                  type: string
                  format: uuid
                  description: Person unique identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                start_date:
                  type: string
                  format: date
                  description: Budget entry start date
                  example: '2025-01-01'
                months_duration:
                  type: integer
                  description: Budget entry duration in months
                  example: 12
                daily_salary:
                  type: number
                  format: float
                  description: Daily salary amount
                  example: 100.0
                position:
                  type: string
                  description: Position name
                  example: Artist
                seniority:
                  type: string
                  description: Seniority level
                  example: Mid
                exceptions:
                  type: object
                  description: Map of amount exceptions. Key is the date and value
                    is the amount
                  example:
                    '2025-01-01': 1000
                    '2025-02-01': 2000
      responses:
        '200':
          description: Budget entry updated
          content:
            application/json:
              schema:
                type: object
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: budget_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: path
        name: entry_id
        required: true
        schema:
          type: string
          format: uuid
        description: Budget entry unique identifier
        example: c46c8gc6-eg97-6887-c292-79675204e47
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "department_id": "c46c8gc6-eg97-6887-c292-79675204e47",
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "start_date": "2025-01-01",
            "months_duration": 12,
            "daily_salary": 100,
            "position": "Artist",
            "seniority": "Mid",
            "exceptions": {
              "2025-01-01": 1000,
              "2025-02-01": 2000
            }
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/b35b7fb5-df86-5776-b181-68564193d36/entries/c46c8gc6-eg97-6887-c292-79675204e47"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "department_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "start_date": "2025-01-01",
              "months_duration": 12,
              "daily_salary": 100,
              "position": "Artist",
              "seniority": "Mid",
              "exceptions": {
                  "2025-01-01": 1000,
                  "2025-02-01": 2000
              }
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/budgets/time-spents":
    get:
      summary: Get production month time spents
      description: Get aggregated time spents by month for given project.
      responses:
        '200':
          description: Aggregated time spents for given project and month
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Wrong ID format
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/time-spents" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/budgets/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/production-schedule-versions/{production_schedule_version_id}/task-links":
    get:
      summary: Get production schedule version task links
      description: Get task links for given production schedule version.
      responses:
        '200':
          description: Task links for given production schedule version
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: Wrong ID format
      parameters:
      - in: path
        name: production_schedule_version_id
        required: true
        schema:
          type: string
          format: uuid
        description: Production schedule version unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Task type unique identifier for filtering
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/task-links?task_type_id=b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/task-links"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/production-schedule-versions/{production_schedule_version_id}/set-task-links-from-production":
    post:
      summary: Set task links from tasks
      description: Set task links for given production schedule version from tasks.
      responses:
        '200':
          description: Task links created
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Wrong ID format
      parameters:
      - in: path
        name: production_schedule_version_id
        required: true
        schema:
          type: string
          format: uuid
        description: Production schedule version unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/set-task-links-from-production" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/set-task-links-from-production"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/production-schedule-versions/{production_schedule_version_id}/set-task-links-from-production-schedule-version":
    post:
      summary: Set task links from production schedule version
      description: Set task links for given production schedule version from another
        production schedule version.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - production_schedule_version_id
              properties:
                production_schedule_version_id:
                  type: string
                  format: uuid
                  description: Source production schedule version unique identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '200':
          description: Task links created
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Wrong ID format
      parameters:
      - in: path
        name: production_schedule_version_id
        required: true
        schema:
          type: string
          format: uuid
        description: Production schedule version unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/set-task-links-from-production-schedule-version" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "production_schedule_version_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/set-task-links-from-production-schedule-version"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "production_schedule_version_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/production-schedule-versions/{production_schedule_version_id}/apply-to-production":
    post:
      summary: Apply production schedule version
      description: Apply production schedule version to production.
      responses:
        '200':
          description: Production schedule version applied
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Wrong ID format
      parameters:
      - in: path
        name: production_schedule_version_id
        required: true
        schema:
          type: string
          format: uuid
        description: Production schedule version unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Projects
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/apply-to-production" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/production-schedule-versions/a24a6ea4-ce75-4665-a070-57453082c25/apply-to-production"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/project-templates/{template_id}/task-types":
    get:
      summary: List task types attached to a project template.
      tags:
      - Project Templates
    post:
      summary: Attach a task type to a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/task-types/{task_type_id}":
    delete:
      summary: Detach a task type from a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/task-statuses":
    get:
      summary: List task statuses attached to a project template.
      tags:
      - Project Templates
    post:
      summary: Attach a task status to a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/task-statuses/{task_status_id}":
    delete:
      summary: Detach a task status from a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/asset-types":
    get:
      summary: List asset types attached to a project template.
      tags:
      - Project Templates
    post:
      summary: Attach an asset type to a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/asset-types/{asset_type_id}":
    delete:
      summary: Detach an asset type from a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/status-automations":
    get:
      summary: List status automations attached to a project template.
      tags:
      - Project Templates
    post:
      summary: Attach a status automation to a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/status-automations/{status_automation_id}":
    delete:
      summary: Detach a status automation from a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/metadata-descriptors":
    put:
      summary: Replace the JSONB metadata descriptors snapshot on a project
      description: template. Admin only.<br/>
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/preview-background-files":
    get:
      summary: List preview background files attached to a project template.
      tags:
      - Project Templates
    post:
      summary: Attach a preview background file to a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/preview-background-files/{preview_background_file_id}":
    delete:
      summary: Detach a preview background file from a project template.
      tags:
      - Project Templates
  "/data/project-templates/{template_id}/default-preview-background-file":
    put:
      summary: Set the default preview background file for a project template.
      tags:
      - Project Templates
  "/data/project-templates/from-project/{project_id}":
    post:
      summary: Create a new project template from an existing project's
      description: configuration. Admin only.<br/>
      tags:
      - Project Templates
  "/data/projects/{project_id}/apply-template/{template_id}":
    post:
      summary: Apply a project template to an existing project. Admin only.
      tags:
      - Project Templates
  "/data/shots":
    get:
      summary: Get all shots
      description: Get all shots across projects with optional filters. Use sequence_id,
        project_id, or parent_id to filter.
      responses:
        '200':
          description: All shot entries
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH020
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: query
        name: sequence_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: parent_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots?sequence_id=a24a6ea4-ce75-4665-a070-57453082c25&project_id=a24a6ea4-ce75-4665-a070-57453082c25&parent_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "parent_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/all":
    get:
      summary: Get shots
      description: Get shots with optional filters. Use query params like project_id,
        sequence_id or parent_id to filter results.
      responses:
        '200':
          description: All shot entries
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: query
        name: sequence_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: parent_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/all?sequence_id=a24a6ea4-ce75-4665-a070-57453082c25&project_id=a24a6ea4-ce75-4665-a070-57453082c25&parent_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "parent_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/with-tasks":
    get:
      summary: Get shots and tasks
      description: Get shots and their related tasks. Optionally filter by project.
      responses:
        '200':
          description: All shots
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: c24a6ea4-ce75-4665-a070-57453082c25
                          name:
                            type: string
                            example: SH010 Animation
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}":
    get:
      summary: Get shot
      description: Get a shot by id. Returns full shot data. Use this to fetch a single
        shot with all fields needed by the UI.
      responses:
        '200':
          description: Shot found and returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  parent_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_frames:
                    type: integer
                    example: 120
                  data:
                    type: object
                    example:
                      camera: camA
                      cut_in: 1001
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete shot
      description: Delete a shot by id. Requires manager access or ownership of the
        shot.
      responses:
        '204':
          description: Shot deleted
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update shot
      description: Update a shot by id. Only mutable fields are allowed. Send a JSON
        body with the fields to change.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Data to update on the shot
              properties:
                name:
                  type: string
                  example: SH010 new name
                description:
                  type: string
                  example: Update description for the shot
                nb_frames:
                  type: integer
                  example: 24
                data:
                  type: object
                  example:
                    camera: camA
                    cut_in: 1001
      responses:
        '200':
          description: Shot updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  parent_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_frames:
                    type: integer
                    example: 120
                  data:
                    type: object
                    example:
                      camera: camA
                      cut_in: 1001
        '400':
          description: Invalid body or unsupported fields
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "SH010 new name",
            "description": "Update description for the shot",
            "nb_frames": 24,
            "data": {
              "camera": "camA",
              "cut_in": 1001
            }
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "SH010 new name",
              "description": "Update description for the shot",
              "nb_frames": 24,
              "data": {
                  "camera": "camA",
                  "cut_in": 1001
              }
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/assets":
    get:
      summary: Get shot assets
      description: Get assets linked to a shot. Returns the breakdown casting for
        the shot.
      responses:
        '200':
          description: All assets for given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Character A
                    entity_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/assets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/task-types":
    get:
      summary: Get shot task types
      description: Get task types for a shot.
      responses:
        '200':
          description: All task types related to given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Animation
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/tasks":
    get:
      summary: Get shot tasks
      description: Get tasks for a shot. Optionally include relations using query
        params.
      responses:
        '200':
          description: All tasks related to given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/preview-files":
    get:
      summary: Get shot previews
      description: Return previews for a shot as a dict keyed by task type id. Each
        value is an array of previews for that task type.
      responses:
        '200':
          description: All previews related to given shot
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: b24a6ea4-ce75-4665-a070-57453082c25
                      revision:
                        type: integer
                        example: 3
                      file_id:
                        type: string
                        format: uuid
                        example: c24a6ea4-ce75-4665-a070-57453082c25
              example:
                a24a6ea4-ce75-4665-a070-57453082c25:
                - id: b24a6ea4-ce75-4665-a070-57453082c25
                  revision: 3
                  file_id: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/shots/{shot_id}/versions":
    get:
      summary: Get shot versions
      description: Get data versions of a shot. Use this to inspect version history.
      responses:
        '200':
          description: Data versions of given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
      parameters:
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/versions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25/versions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/all":
    get:
      summary: Get scenes
      description: Get scenes with optional filters. Use project_id to filter by project.
      responses:
        '200':
          description: All scene entries
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SC001
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/all?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/with-tasks":
    get:
      summary: Get scenes and tasks
      description: Get scenes and their related tasks. Optionally filter by project.
      responses:
        '200':
          description: All scenes
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SC001
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: c24a6ea4-ce75-4665-a070-57453082c25
                          name:
                            type: string
                            example: Layout
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}":
    get:
      summary: Get scene
      description: Get a scene by id. Returns full scene data needed by clients.
      responses:
        '200':
          description: Scene found and returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SC001
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete scene
      description: Delete a scene by id. Requires manager access or ownership.
      responses:
        '204':
          description: Scene deleted
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/tasks":
    get:
      summary: Get scene tasks
      description: Get tasks for a scene.
      responses:
        '200':
          description: All tasks related to given scene
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SC001 Layout
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/task-types":
    get:
      summary: Get scene task types
      description: Get task types for a scene.
      responses:
        '200':
          description: All task types related to given scene
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Animation
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/shots":
    get:
      summary: Get scene shots
      description: Get shots that come from a scene.
      responses:
        '200':
          description: All shots that come from given scene
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Link shot to scene
      description: Link a shot to a scene as its source.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - shot_id
              properties:
                shot_id:
                  type: string
                  format: uuid
                  required: true
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Scene marked as source of shot
          content:
            application/json:
              schema:
                type: object
                properties:
                  scene_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  shot_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "shot_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "shot_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/scenes/{scene_id}/shots/{shot_id}":
    delete:
      summary: Delete given shot from given scene.
      responses:
        '204':
          description: Given shot deleted from given scene
      parameters:
      - in: path
        name: scene_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: shot_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25/shots/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes":
    get:
      summary: Get episodes
      description: Get episodes with optional filters. Use project_id to filter by
        project.
      responses:
        '200':
          description: All episode entries
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    description:
                      type: string
                      example: A short description of the episode
                    status:
                      type: string
                      example: running
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/with-tasks":
    get:
      summary: Get episodes and tasks
      description: Get episodes and their related tasks. Optionally filter by project.
      responses:
        '200':
          description: All episodes
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: c24a6ea4-ce75-4665-a070-57453082c25
                          name:
                            type: string
                            example: EP01 Layout
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}":
    get:
      summary: Get episode
      description: Get an episode by id. needs.
      responses:
        '200':
          description: Episode found and returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: EP01
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  description:
                    type: string
                    example: A short description of the episode
                  status:
                    type: string
                    example: running
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete episode
      description: Delete an episode by id. Requires manager access or ownership.
      responses:
        '204':
          description: Episode deleted
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/shots":
    get:
      summary: Get episode shots
      description: Get shots for an episode. Supports including relations via query
        params.
      responses:
        '200':
          description: All shots related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/sequences":
    get:
      summary: Get episode sequences
      description: Get sequences for an episode. You can add query filters if needed.
      responses:
        '200':
          description: All sequence entries for given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SQ01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/sequences?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/tasks":
    get:
      summary: Get episode tasks
      responses:
        '200':
          description: All tasks related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01 Layout
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/task-types":
    get:
      summary: Get episode task types
      responses:
        '200':
          description: All task types related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Animation
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/shot-tasks":
    get:
      summary: Get episode shot tasks
      description: Get shot tasks for an episode. Restricted for vendor permissions.
      responses:
        '200':
          description: All shot tasks related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01 Layout
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/shot-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/shot-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/asset-tasks":
    get:
      summary: Get episode asset tasks
      description: Get asset tasks for an episode. Restricted for vendor permissions.
      responses:
        '200':
          description: All assets tasks related to given episode
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Character Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/asset-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/asset-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences":
    get:
      summary: Get sequences
      description: Get sequences with optional filters. Use episode_id to filter by
        episode.
      responses:
        '200':
          description: All sequence entries
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SQ01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: query
        name: episode_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences?episode_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/with-tasks":
    get:
      summary: Get sequences and tasks
      description: Get sequences and their related tasks. Optionally filter by project.
      responses:
        '200':
          description: All sequences
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SQ010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: c24a6ea4-ce75-4665-a070-57453082c25
                          name:
                            type: string
                            example: SQ010 Editing
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}":
    get:
      summary: Get sequence
      description: Get a sequence by id.
      responses:
        '200':
          description: Sequence found and returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SQ01
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  parent_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete sequence
      description: Delete a sequence by id. Requires manager access or ownership.
      responses:
        '204':
          description: Sequence deleted
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}/shots":
    get:
      summary: Get sequence shots
      description: Get shots for a sequence. Supports filtering using query params.
      responses:
        '200':
          description: All shot entries for given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shots?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}/scenes":
    get:
      summary: Get sequence scenes
      description: Get scenes that belong to a sequence.
      responses:
        '200':
          description: All scenes related to given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SC010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/scenes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/scenes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}/tasks":
    get:
      summary: Get sequence tasks
      description: Get tasks for a sequence. Optionally include relations using query
        params.
      responses:
        '200':
          description: All tasks related to given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}/task-types":
    get:
      summary: Get sequence task types
      description: Get task types for a sequence.
      responses:
        '200':
          description: All task types related to given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Animation
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/sequences/{sequence_id}/shot-tasks":
    get:
      summary: Get sequence shot tasks
      description: Get shot tasks for a sequence. Restricted for vendor permissions.
      responses:
        '200':
          description: All shot tasks related to given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: sequence_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shot-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shot-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/shots":
    get:
      summary: Get project shots
      description: Get shots for a project. May limit to assigned shots for vendor
        users.
      responses:
        '200':
          description: All shots related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project shot
      description: Create a shot in a project. Provide name and optional fields like
        description, sequence_id and nb_frames.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  required: true
                  example: SH010
                description:
                  type: string
                  required: false
                  example: A short description of the shot
                sequence_id:
                  type: string
                  format: uuid
                  required: false
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                nb_frames:
                  type: integer
                  required: false
                  example: 24
      responses:
        '201':
          description: Shot created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  sequence_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  nb_frames:
                    type: integer
                    example: 24
                  description:
                    type: string
                    example: A short description of the shot
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "SH010",
            "description": "A short description of the shot",
            "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "nb_frames": 24
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "SH010",
              "description": "A short description of the shot",
              "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "nb_frames": 24
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/scenes":
    get:
      summary: Get project scenes
      description: Get all scenes for a project.
      responses:
        '200':
          description: All scenes related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SC001
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    parent_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/scenes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/scenes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project scene
      description: Create a new scene in a project. Provide a name and the related
        sequence id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - sequence_id
              properties:
                name:
                  type: string
                  required: true
                  example: Name of scene
                sequence_id:
                  type: string
                  format: uuid
                  required: true
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Scene created for given project
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SC001
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  parent_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/scenes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Name of scene",
            "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/scenes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Name of scene",
              "sequence_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/sequences":
    get:
      summary: Get project sequences
      description: Get sequences for a project. May limit to assigned items for vendor
        users.
      responses:
        '200':
          description: All sequences related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SQ01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    episode_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project sequence
      description: Create a sequence in a project. Provide name and optional episode_id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  required: true
                  example: SQ01
                episode_id:
                  type: string
                  format: uuid
                  required: false
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Sequence created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SQ01
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  episode_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  description:
                    type: string
                    example: A sequence description
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "SQ01",
            "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "SQ01",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes":
    get:
      summary: Get project episodes
      description: Get episodes for a project. May limit to assigned items for vendor
        users.
      responses:
        '200':
          description: All episodes related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01
                    project_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    description:
                      type: string
                      example: A short description of the episode
                    status:
                      type: string
                      example: running
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create project episode
      description: Create an episode in a project. Provide name and description. Status
        is optional.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - description
              properties:
                name:
                  type: string
                  required: true
                  example: EP01
                description:
                  type: string
                  required: true
                  example: A short description of the episode
                status:
                  type: string
                  required: false
                  example: running
      responses:
        '201':
          description: Episode created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: EP01
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  description:
                    type: string
                    example: A short description of the episode
                  status:
                    type: string
                    example: running
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "EP01",
            "description": "A short description of the episode",
            "status": "running"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "EP01",
              "description": "A short description of the episode",
              "status": "running"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/stats":
    get:
      summary: Get episode stats
      description: Return number of tasks by status, task type and episode for the
        project.
      responses:
        '200':
          description: Number of tasks by status, task types and episodes for given
            project
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
                    additionalProperties:
                      type: object
                      properties:
                        count:
                          type: integer
                          example: 120
                        frames:
                          type: integer
                          example: 1440
                        drawings:
                          type: integer
                          example: 360
                example:
                  episodeId1:
                    taskTypeId1:
                      taskStatusId1:
                        count: 50
                        frames: 600
                        drawings: 150
                      taskStatusId2:
                        count: 70
                        frames: 840
                        drawings: 210
                  all:
                    all:
                      taskStatusId1:
                        count: 200
                        frames: 2400
                        drawings: 600
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/stats" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/stats"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/episodes/retake-stats":
    get:
      summary: Get episode retake stats
      description: Return retake and done counts by task type and episode. Includes
        evolution data and max retake count.
      responses:
        '200':
          description: Number of tasks by status, task types and episodes for given
            project
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    max_retake_count:
                      type: integer
                      example: 4
                    evolution:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          retake:
                            type: object
                            properties:
                              count:
                                type: integer
                                example: 80
                              frames:
                                type: integer
                                example: 7900
                              drawings:
                                type: integer
                                example: 8000
                          done:
                            type: object
                            properties:
                              count:
                                type: integer
                                example: 117
                              frames:
                                type: integer
                                example: 3900
                              drawings:
                                type: integer
                                example: 8000
                    done:
                      type: object
                      properties:
                        count:
                          type: integer
                          example: 197
                        frames:
                          type: integer
                          example: 16090
                        drawings:
                          type: integer
                          example: 16090
                    retake:
                      type: object
                      properties:
                        count:
                          type: integer
                          example: 0
                        frames:
                          type: integer
                          example: 0
                        drawings:
                          type: integer
                          example: 0
                    other:
                      type: object
                      properties:
                        count:
                          type: integer
                          example: 5
                        frames:
                          type: integer
                          example: 185
                        drawings:
                          type: integer
                          example: 185
                example:
                  episodeId1:
                    max_retake_count: 4
                    evolution:
                      '1':
                        retake:
                          count: 80
                          frames: 7900
                          drawings: 8000
                        done:
                          count: 117
                          frames: 3900
                          drawings: 8000
                    done:
                      count: 197
                      frames: 16090
                      drawings: 16090
                    retake:
                      count: 0
                      frames: 0
                      drawings: 0
                    other:
                      count: 5
                      frames: 185
                      drawings: 185
                  all:
                    all:
                      max_retake_count: 4
                      done:
                        count: 500
                        frames: 50000
                        drawings: 50000
                      retake:
                        count: 100
                        frames: 10000
                        drawings: 10000
                      other:
                        count: 10
                        frames: 1000
                        drawings: 1000
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/retake-stats" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes/retake-stats"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/quotas/{task_type_id}":
    get:
      summary: Get project quotas
      description: Get quotas statistics for a project and task type. Supports weighted
        and raw modes with optional feedback filtering.
      responses:
        '200':
          description: Quotas statistics for shots
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    count:
                      type: integer
                      example: 42
                    frames:
                      type: integer
                      example: 1200
        '400':
          description: Invalid count_mode or parameter
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: count_mode
        required: true
        type: string
        enum:
        - weighted
        - weigtheddone
        - feedback
        - done
        example: weighted
      - in: query
        name: studio_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/quotas/a24a6ea4-ce75-4665-a070-57453082c25?count_mode=weighted&studio_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/quotas/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "count_mode": "weighted",
              "studio_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/quotas/persons/{person_id}":
    get:
      summary: Get project person quotas
      description: Get quotas statistics for a person in a project. Supports weighted
        and raw modes with optional feedback filtering.
      responses:
        '200':
          description: Quotas statistics for shots
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    count:
                      type: integer
                      example: 15
                    frames:
                      type: integer
                      example: 360
        '400':
          description: Invalid count_mode or parameter
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: person_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: count_mode
        required: true
        type: string
        enum:
        - weighted
        - weigtheddone
        - feedback
        - done
        example: weighted
      - in: query
        name: studio_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/quotas/persons/a24a6ea4-ce75-4665-a070-57453082c25?count_mode=weighted&studio_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/quotas/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "count_mode": "weighted",
              "studio_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/set-shot-nb-frames":
    post:
      summary: Set shots frames
      description: Set number of frames on shots based on latest preview files for
        a task type. Optionally scope by episode via query param.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - shots
              properties:
                shots:
                  type: array
                  required: true
                  items:
                    type: object
                    properties:
                      shot_id:
                        type: string
                        format: uuid
                        example: a24a6ea4-ce75-4665-a070-57453082c25
                      nb_frames:
                        type: integer
                        example: 24
      responses:
        '200':
          description: Frames set for given shots
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated:
                    type: integer
                    example: 12
        '400':
          description: Invalid ids or parameters
      tags:
      - Shots
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/{project_id}/task-types/{task_type_id}/set-shot-nb-frames" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "shots": [
              {
                "shot_id": "a24a6ea4-ce75-4665-a070-57453082c25",
                "nb_frames": 24
              }
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/{project_id}/task-types/{task_type_id}/set-shot-nb-frames"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "shots": [
                  {
                      "shot_id": "a24a6ea4-ce75-4665-a070-57453082c25",
                      "nb_frames": 24
                  }
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/open-tasks":
    get:
      summary: Get open tasks
      description: Return tasks for open projects with optional filters and pagination.
        Includes statistics.
      responses:
        '200':
          description: List of tasks with pagination and statistics
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                    description: List of tasks
                  stats:
                    type: object
                    properties:
                      total:
                        type: integer
                        description: Total number of tasks
                      total_duration:
                        type: integer
                        description: Total duration of tasks in minutes
                      total_estimation:
                        type: integer
                        description: Total estimation of tasks in minutes
                      status:
                        type: object
                        description: Number of tasks per status
                  limit:
                    type: integer
                    description: Number of tasks per page
                  page:
                    type: integer
                    description: Page number
                  is_more:
                    type: boolean
                    description: True if there are more tasks to retrieve
        '400':
          description: Bad request
      parameters:
      - in: query
        name: project_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter tasks on given project ID
      - in: query
        name: task_status_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter tasks on given task status ID
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter tasks on given task type ID
      - in: query
        name: person_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter tasks on given person ID
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter tasks posterior to given start date
      - in: query
        name: due_date
        required: false
        schema:
          type: string
          format: date
        example: '2022-07-12'
        description: Filter tasks anterior to given due date
      - in: query
        name: priority
        required: false
        schema:
          type: integer
        example: 3
        description: Filter tasks on given priority
      - in: query
        name: page
        required: false
        schema:
          type: integer
          default: 1
        example: 1
        description: Page number
      - in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 100
        example: 100
        description: Number of tasks per page
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/open-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25&task_status_id=a24a6ea4-ce75-4665-a070-57453082c25&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&person_id=a24a6ea4-ce75-4665-a070-57453082c25&start_date=2022-07-12&due_date=2022-07-12&priority=3&page=1&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/open-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "start_date": "2022-07-12",
              "due_date": "2022-07-12",
              "priority": 3,
              "page": 1,
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/open-tasks/stats":
    get:
      summary: Get open tasks stats
      description: Return totals and aggregates by status and task type per project
        for open projects.
      responses:
        '200':
          description: A dict by project with results for each task type and status
            pair
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    total:
                      type: integer
                    done:
                      type: integer
                    estimation:
                      type: integer
                    duration:
                      type: integer
        '400':
          description: Bad request
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/open-tasks/stats" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/open-tasks/stats"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments":
    get:
      summary: Get task comments
      description: Return comments linked to a task.
      responses:
        '200':
          description: Comments linked to task
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    object_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    text:
                      type: string
                      example: This task is progressing well
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T11:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/comments/{comment_id}":
    get:
      summary: Get comment
      description: Get a comment by id for a task.
      responses:
        '200':
          description: Comment found and returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  object_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  text:
                    type: string
                    example: Review completed successfully
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: comment_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete comment
      description: Delete a comment by id for a task.
      responses:
        '204':
          description: Comment deleted
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: comment_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/previews":
    get:
      summary: Get task previews
      description: Return previews linked to a task.
      responses:
        '200':
          description: Previews linked to task
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    task_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    revision:
                      type: integer
                      example: 1
                    comment_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/previews" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/previews"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/tasks/{task_id}/full":
    get:
      summary: Get task full
      description: Return a task with many information. Includes full details for
        assignees, task type, and task status.
      responses:
        '200':
          description: Task with full information
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010 Animation
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: e24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: f24a6ea4-ce75-4665-a070-57453082c25
                        first_name:
                          type: string
                          example: John
                        last_name:
                          type: string
                          example: Doe
                  task_type:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: b24a6ea4-ce75-4665-a070-57453082c25
                      name:
                        type: string
                        example: Animation
                  task_status:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: c24a6ea4-ce75-4665-a070-57453082c25
                      name:
                        type: string
                        example: In Progress
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/full" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/tasks/a24a6ea4-ce75-4665-a070-57453082c25/full"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/tasks":
    get:
      summary: Get person open tasks
      description: List tasks assigned to a person where the status is not done.
      responses:
        '200':
          description: Tasks assigned to user that are not done
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/related-tasks/{task_type_id}":
    get:
      summary: Get person tasks for type
      description: For all entities assigned to the person, return tasks for the given
        task type.
      responses:
        '200':
          description: All tasks for the given task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Asset Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/related-tasks/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/related-tasks/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/{person_id}/done-tasks":
    get:
      summary: Get person done tasks
      description: Return tasks assigned to the person that are done. Only tasks in
        open projects are returned.
      responses:
        '200':
          description: Tasks assigned to user that are done
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: EP01 Layout
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/done-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/done-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/entities/{entity_id}/task-types/{task_type_id}/tasks":
    get:
      summary: Get tasks for entity and type
      description: Return tasks related to the entity (asset, episode, sequence, shot,
        or scene) for a task type.
      responses:
        '200':
          description: Tasks related to the entity and task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/entities/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/comments":
    get:
      summary: Get project comments
      description: Retrieve comments for tasks related to a project. Useful for sync.
      responses:
        '200':
          description: All comments to tasks related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    object_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    text:
                      type: string
                      example: This task looks good
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T11:00:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: limit
        type: integer
        default: 100
        example: 100
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/comments?limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/comments"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/notifications":
    get:
      summary: Get project notifications
      description: Retrieve notifications for tasks related to a project. Useful for
        sync.
      responses:
        '200':
          description: All notifications to tasks related to given project
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        person_id:
                          type: string
                          format: uuid
                          example: b24a6ea4-ce75-4665-a070-57453082c25
                        task_id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        comment_id:
                          type: string
                          format: uuid
                          example: d24a6ea4-ce75-4665-a070-57453082c25
                        notification_type:
                          type: string
                          example: assignment
                        created_at:
                          type: string
                          format: date-time
                          example: '2024-01-15T10:30:00Z'
                        updated_at:
                          type: string
                          format: date-time
                          example: '2024-01-15T11:00:00Z'
                  limit:
                    type: integer
                    example: 100
                  page:
                    type: integer
                    example: 1
                  is_more:
                    type: boolean
                    example: true
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/notifications" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/notifications"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/preview-files":
    get:
      summary: Get project preview files
      description: Retrieve all preview files that are linked to a specific project.
        This includes images, videos, and other preview media associated with the
        project.
      responses:
        '200':
          description: Preview files related to given project
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        task_id:
                          type: string
                          format: uuid
                          example: b24a6ea4-ce75-4665-a070-57453082c25
                        comment_id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        revision:
                          type: integer
                          example: 1
                        person_id:
                          type: string
                          format: uuid
                          example: e24a6ea4-ce75-4665-a070-57453082c25
                        created_at:
                          type: string
                          format: date-time
                          example: '2024-01-15T10:30:00Z'
                  limit:
                    type: integer
                    example: 100
                  page:
                    type: integer
                    example: 1
                  is_more:
                    type: boolean
                    example: true
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/subscriptions":
    get:
      summary: Get project subscriptions
      description: Retrieve all subscriptions to tasks related to a project. Useful
        for sync.
      responses:
        '200':
          description: All subcriptions to tasks related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/subscriptions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/subscriptions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/tasks":
    get:
      summary: Get project tasks
      description: Retrieve tasks related to a project. Useful for sync.
      responses:
        '200':
          description: All tasks related to given project
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        name:
                          type: string
                          example: SH010 Animation
                        task_type_id:
                          type: string
                          format: uuid
                          example: b24a6ea4-ce75-4665-a070-57453082c25
                        task_status_id:
                          type: string
                          format: uuid
                          example: c24a6ea4-ce75-4665-a070-57453082c25
                        entity_id:
                          type: string
                          format: uuid
                          example: d24a6ea4-ce75-4665-a070-57453082c25
                        project_id:
                          type: string
                          format: uuid
                          example: e24a6ea4-ce75-4665-a070-57453082c25
                        assignees:
                          type: array
                          items:
                            type: string
                            format: uuid
                          example:
                          - f24a6ea4-ce75-4665-a070-57453082c25
                  limit:
                    type: integer
                    example: 100
                  page:
                    type: integer
                    example: 1
                  is_more:
                    type: boolean
                    example: true
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: page
        required: false
        type: integer
        example: 1
      - in: query
        name: task_type_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: episode_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks?page=1&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&episode_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "page": 1,
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/persons/task-dates":
    get:
      summary: Get persons tasks dates
      description: For each active person, return the first start date of all tasks
        assigned to them and the last end date. Useful for schedule planning.
      responses:
        '200':
          description: First start date and last end date for tasks per person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    person_id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    first_start_date:
                      type: string
                      format: date
                      example: '2024-01-15'
                    last_end_date:
                      type: string
                      format: date
                      example: '2024-03-21'
      parameters:
      - in: query
        name: project_id
        required: false
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter by project ID
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/persons/task-dates?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/persons/task-dates"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/delete-tasks":
    delete:
      summary: Delete tasks for type
      description: Delete all tasks for a task type in a project. Useful when tasks
        were created by mistake at project start.
      responses:
        '204':
          description: All tasks for given task type and project deleted
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/delete-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/delete-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/delete-tasks":
    post:
      summary: Delete tasks batch
      description: Delete tasks given by id list. Useful for batch deletions.
      responses:
        '200':
          description: Tasks matching id list given in parameter deleted
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  format: uuid
                example:
                - a24a6ea4-ce75-4665-a070-57453082c25
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/delete-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/delete-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/assign":
    put:
      summary: Assign task to person
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - person_id
              properties:
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Task assigned to person
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010 Animation
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: e24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example:
                    - f24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Assignee does not exist
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/assign" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/assign"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/clear-assignation":
    put:
      summary: Clear task assignations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_ids
              properties:
                task_ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
                  - b24a6ea4-ce75-4665-a070-57453082c25
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Assignations removed
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  format: uuid
                example:
                - a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/tasks/clear-assignation" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_ids": [
              "a24a6ea4-ce75-4665-a070-57453082c25",
              "b24a6ea4-ce75-4665-a070-57453082c25"
            ],
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/clear-assignation"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_ids": [
                  "a24a6ea4-ce75-4665-a070-57453082c25",
                  "b24a6ea4-ce75-4665-a070-57453082c25"
              ],
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/persons/{person_id}/assign":
    put:
      summary: Assign tasks to person
      description: Assign a list of tasks to a person. Unknown task ids are ignored.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - task_ids
              properties:
                task_ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
                  - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Tasks assigned to person
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      example:
                      - f24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Assignee does not exist
      parameters:
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/assign" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "task_ids": [
              "a24a6ea4-ce75-4665-a070-57453082c25",
              "b24a6ea4-ce75-4665-a070-57453082c25"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/assign"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "task_ids": [
                  "a24a6ea4-ce75-4665-a070-57453082c25",
                  "b24a6ea4-ce75-4665-a070-57453082c25"
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/time-spents/{date}":
    get:
      summary: Get task time spent for date
      responses:
        '200':
          description: Time spent on the task for the date
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    task_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    date:
                      type: string
                      format: date
                      example: '2022-07-12'
                    duration:
                      type: number
                      example: 120
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
        format: date
        example: '2022-07-12'
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/time-spents":
    get:
      summary: Get task time spent
      responses:
        '200':
          description: Time spent on the task
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    task_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    date:
                      type: string
                      format: date
                      example: '2022-07-12'
                    duration:
                      type: number
                      example: 120
                    created_at:
                      type: string
                      format: date-time
                      example: '2024-01-15T10:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/time-spents/{date}/persons/{person_id}":
    delete:
      summary: Delete time spent
      responses:
        '201':
          description: Time spent removed for the person on the task
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2022-07-12'
                  duration:
                    type: number
                    example: 0
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        example: '2022-07-12'
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Set time spent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                duration:
                  type: number
                  example: 120
      responses:
        '201':
          description: Time spent set for the person on the task and day
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2022-07-12'
                  duration:
                    type: number
                    example: 120
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        example: '2022-07-12'
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "duration": 120
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "duration": 120
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/time-spents/{date}/persons/{person_id}/add":
    post:
      summary: Add time spent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                duration:
                  type: number
                  example: 30
      responses:
        '201':
          description: Timeframe added to time spent
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  date:
                    type: string
                    format: date
                    example: '2022-07-12'
                  duration:
                    type: number
                    example: 150
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid parameters
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        example: '2022-07-12'
      - in: path
        name: person_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25/add" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "duration": 30
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2022-07-12/persons/a24a6ea4-ce75-4665-a070-57453082c25/add"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "duration": 30
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/comments/{comment_id}/add-preview":
    post:
      summary: Add task preview
      description: Add preview metadata to a task. The preview file is uploaded after.
        Revision is auto set to last + 1. It can also be set manually.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                revision:
                  type: integer
                  description: Revision number for the preview
                  example: 1
      responses:
        '201':
          description: Preview metadata added to task
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  comment_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 3
                  person_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Bad request
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: comment_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/add-preview" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "revision": 1
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/add-preview"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "revision": 1
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/comments/{comment_id}/preview-files/{preview_file_id}":
    delete:
      summary: Delete preview from comment
      description: Delete a preview from a comment. Use force query to delete even
        if there are dependencies.
      responses:
        '204':
          description: Preview deleted from comment
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: comment_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: force
        required: false
        schema:
          type: boolean
          default: false
        description: Force deletion even if preview has dependencies
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/preview-files/a24a6ea4-ce75-4665-a070-57453082c25?force=" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": ""
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Add preview to comment
      description: Add a preview to a comment by uploading a file in multipart form
        data.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Preview file to upload
      responses:
        '201':
          description: Preview added to comment
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  comment_id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  task_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  revision:
                    type: integer
                    example: 2
                  person_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Bad request
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: comment_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/preview-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/comments/a24a6ea4-ce75-4665-a070-57453082c25/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/to-review":
    put:
      summary: Set task to review
      description: Create a new preview file entry and set the path from the disk.
        Optionally change the task status.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                person_id:
                  type: string
                  format: uuid
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                comment:
                  type: string
                  example: Please check this version
                name:
                  type: string
                  example: main
                revision:
                  type: integer
                  example: 1
                change_status:
                  type: boolean
                  example: true
      responses:
        '200':
          description: Task set to review and preview created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010 Animation
                  task_type_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  task_status_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  entity_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  project_id:
                    type: string
                    format: uuid
                    example: e24a6ea4-ce75-4665-a070-57453082c25
                  assignees:
                    type: array
                    items:
                      type: string
                      format: uuid
                    example:
                    - f24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Invalid person or parameters
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/to-review" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "comment": "Please check this version",
            "name": "main",
            "revision": 1,
            "change_status": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/to-review"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "person_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "comment": "Please check this version",
              "name": "main",
              "revision": 1,
              "change_status": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/shots/create-tasks":
    post:
      summary: Create shot tasks
      description: Create tasks for shots. Provide a list of shot IDs in the JSON
        body, or omit for all shots in the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              description: List of shot IDs to create tasks for
            example:
            - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Tasks created for shots
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: SH010 Animation
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Bad request
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/shots/create-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            ""
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/shots/create-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              ""
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/assets/create-tasks":
    post:
      summary: Create asset tasks
      description: Create tasks for assets. Provide a list of asset IDs in the JSON
        body, or omit for all assets in the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              description: List of asset IDs to create tasks for
            example:
            - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Tasks created for assets
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Asset Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Bad request
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/create-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            ""
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/assets/create-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              ""
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/edits/create-tasks":
    post:
      summary: Create edit tasks
      description: Create tasks for edits. Provide a list of edit IDs in the JSON
        body, or omit for all edits in the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              description: List of edit IDs to create tasks for
            example:
            - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Tasks created for edits
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Edit Compositing
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Wrong criterions format
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/edits/create-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            ""
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/edits/create-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              ""
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/concepts/create-tasks":
    post:
      summary: Create concept tasks
      description: Create tasks for concepts. Provide a list of concept IDs in the
        JSON body, or omit for all concepts in the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              description: List of concept IDs to create tasks for
            example:
            - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Tasks created for concepts
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Concept Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Bad request
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/concepts/create-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            ""
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/concepts/create-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              ""
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/projects/{project_id}/task-types/{task_type_id}/create-tasks/{entity_type}/":
    post:
      summary: Create entity tasks
      description: Create tasks for entities of a given type. Provide entity IDs in
        the JSON body, or omit for all entities in the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              description: List of entity IDs to create tasks for
            example:
            - b24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '201':
          description: Tasks created for entities
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      example: Entity Task Name
                    task_type_id:
                      type: string
                      format: uuid
                      example: b24a6ea4-ce75-4665-a070-57453082c25
                    task_status_id:
                      type: string
                      format: uuid
                      example: c24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      example: d24a6ea4-ce75-4665-a070-57453082c25
                    project_id:
                      type: string
                      format: uuid
                      example: e24a6ea4-ce75-4665-a070-57453082c25
        '400':
          description: Bad request
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: entity_type
        required: true
        schema:
          type: string
        example: Asset
        description: Entity type name (Asset, Sequence, etc.)
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/create-tasks/Asset/" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '[
            ""
          ]'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/a24a6ea4-ce75-4665-a070-57453082c25/create-tasks/Asset/"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = [
              ""
          ]

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/set-main-preview":
    put:
      summary: Set main preview from task
      description: Set the last preview of a task as the main preview of the related
        entity.
      responses:
        '200':
          description: Preview set as main preview
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    example: SH010
                  project_id:
                    type: string
                    format: uuid
                    example: b24a6ea4-ce75-4665-a070-57453082c25
                  preview_file_id:
                    type: string
                    format: uuid
                    example: c24a6ea4-ce75-4665-a070-57453082c25
                  entity_type_id:
                    type: string
                    format: uuid
                    example: d24a6ea4-ce75-4665-a070-57453082c25
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T10:30:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-15T11:00:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Tasks
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/set-main-preview" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/set-main-preview"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/playlists/preview-files/running":
    get:
      summary: Get running preview files
      description: Retrieve all preview files from open productions with states equal
        to processing or broken.
      responses:
        '200':
          description: All preview files from open productions with processing or
            broken states
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Preview file unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    status:
                      type: string
                      description: Preview file status
                      example: processing
      parameters:
      - in: query
        name: cursor_preview_file_id
        required: false
        type: string
        format: uuid
        description: ID of the last preview file from previous page for cursor-based
          pagination
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: limit
        required: false
        type: integer
        description: Maximum number of preview files to return
        example: 100
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/playlists/preview-files/running?cursor_preview_file_id=a24a6ea4-ce75-4665-a070-57453082c25&limit=100" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/playlists/preview-files/running"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "cursor_preview_file_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "limit": 100
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/preview-files/{instance_id}":
    post:
      summary: Create preview file
      description: Main resource to add a preview. It stores the preview file and
        generates three picture files (thumbnails) matching preview when it's possible,
        a square thumbnail, a rectangle thumbnail and a midsize file.
      responses:
        '201':
          description: Preview file added successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Preview file unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  extension:
                    type: string
                    description: File extension
                    example: png
                  file_size:
                    type: integer
                    description: File size in bytes
                    example: 1024000
        '400':
          description: Wrong file format or normalization failed
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Preview file to upload
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/preview-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/preview-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/{task_id}/batch-comment":
    post:
      summary: Add task batch comments
      description: Creates new comments for given task. Each comment requires a text,
        a task_status and a person as arguments. Can include preview files and attachments.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - comments
              properties:
                comments:
                  type: string
                  description: JSON string containing array of comments
                  example: '[{"text": "Good work", "task_status_id": "uuid"}]'
      responses:
        '201':
          description: New comments created
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/batch-comment" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/a24a6ea4-ce75-4665-a070-57453082c25/batch-comment"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/tasks/batch-comment":
    post:
      summary: Add tasks batch comments
      description: Creates new comments for given tasks. Each comment requires a task_id,
        text, a task_status and a person as arguments. Can include preview files and
        attachments.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - comments
              properties:
                comments:
                  type: string
                  description: JSON string containing array of comments
                  example: '[{"task_id": "uuid", "text": "Good work", "task_status_id":
                    "uuid"}]'
      responses:
        '201':
          description: New comments created
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      tags:
      - Comments
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/tasks/batch-comment" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/tasks/batch-comment"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/movies/originals/preview-files/{instance_id}.mp4":
    get:
      summary: Get preview movie
      description: Download a movie preview file.
      responses:
        '200':
          description: Movie preview downloaded
          content:
            video/mp4:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/movies/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.mp4" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/movies/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.mp4"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/movies/originals/preview-files/{instance_id}/download":
    get:
      summary: Download preview movie
      description: Download a movie preview file as attachment.
      responses:
        '200':
          description: Movie preview downloaded as attachment
          content:
            video/mp4:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/movies/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/download" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/movies/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/download"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/movies/low/preview-files/{instance_id}.mp4":
    get:
      summary: Get preview lowdef movie
      description: Download a low definition movie preview file. Falls back to full
        quality if lowdef version is not available.
      responses:
        '200':
          description: Low definition movie preview downloaded
          content:
            video/mp4:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/movies/low/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.mp4" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/movies/low/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.mp4"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/preview-files/{instance_id}.png":
    get:
      summary: Get preview thumbnail
      description: Download a thumbnail for a preview file.
      responses:
        '200':
          description: Preview thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/attachment-files/{attachment_file_id}.png":
    get:
      summary: Get attachment thumbnail
      description: Download the thumbnail representing given attachment file.
      responses:
        '200':
          description: Attachment thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: attachment_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Attachment file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/attachment-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails-square/preview-files/{instance_id}.png":
    get:
      summary: Get preview thumbnail
      description: Download a thumbnail for a preview file.
      responses:
        '200':
          description: Preview thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails-square/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails-square/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/originals/preview-files/{instance_id}.png":
    get:
      summary: Get preview thumbnail
      description: Download a thumbnail for a preview file.
      responses:
        '200':
          description: Preview thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/originals/preview-files/{instance_id}.{extension}":
    get:
      summary: Get preview file
      description: Download a generic file preview by extension.
      responses:
        '200':
          description: Generic file preview downloaded
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: extension
        required: true
        schema:
          type: string
        description: File extension
        example: png
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/originals/preview-files/{instance_id}/download":
    get:
      summary: Download preview file
      description: Download a generic file preview as attachment.
      responses:
        '200':
          description: Generic file preview downloaded as attachment
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/download" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/originals/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/download"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/previews/preview-files/{instance_id}.png":
    get:
      summary: Get preview thumbnail
      description: Download a thumbnail for a preview file.
      responses:
        '200':
          description: Preview thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/previews/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/previews/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/movies/tiles/preview-files/{instance_id}.png":
    get:
      summary: Get preview thumbnail
      description: Download a thumbnail for a preview file.
      responses:
        '200':
          description: Preview thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/movies/tiles/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/movies/tiles/preview-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/organisations/{instance_id}":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/organisations/{instance_id}.png":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/organisations/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/persons/{instance_id}":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/persons/{instance_id}.png":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/persons/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/projects/{instance_id}":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/projects/{instance_id}.png":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/projects/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/preview-background-files/{instance_id}":
    post:
      summary: Create preview background file
      description: Main resource to add a preview background file. It stores the preview
        background file and generates a rectangle thumbnail.
      responses:
        '201':
          description: Preview background file added successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Preview background file unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  extension:
                    type: string
                    description: File extension
                    example: hdr
                  file_size:
                    type: integer
                    description: File size in bytes
                    example: 2048000
        '400':
          description: Wrong file format or error saving file
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview background file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: HDR file to upload
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/thumbnails/preview-background-files/{instance_id}.png":
    get:
      summary: Get thumbnail
      description: Download the thumbnail linked to given object instance.
      responses:
        '200':
          description: Thumbnail downloaded
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/thumbnails/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create thumbnail
      description: Create a thumbnail for given object instance.
      responses:
        '201':
          description: Thumbnail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumbnail_path:
                    type: string
                    description: URL path to the thumbnail
                    example: "/api/thumbnails/persons/uuid"
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Object instance unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: formData
        name: file
        required: true
        type: file
        description: Image file to use as thumbnail
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/pictures/thumbnails/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.png" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/thumbnails/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.png"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/pictures/preview-background-files/{instance_id}.{extension}":
    get:
      summary: Get preview background file
      description: Download a preview background file.
      responses:
        '200':
          description: Preview background file downloaded
          content:
            image/vnd.radiance:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: instance_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview background file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: extension
        required: true
        schema:
          type: string
        description: File extension
        example: hdr
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/pictures/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.hdr" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/pictures/preview-background-files/a24a6ea4-ce75-4665-a070-57453082c25.hdr"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/preview-files/{preview_file_id}/set-main-preview":
    put:
      summary: Set main preview
      description: Set given preview as main preview of the related entity. This preview
        will be used to illustrate the entity.
      responses:
        '200':
          description: Preview set as main preview
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Entity unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  preview_file_id:
                    type: string
                    format: uuid
                    description: Preview file unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
        '400':
          description: Cannot use frame number on non-movie preview
      parameters:
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: frame_number
        required: false
        schema:
          type: integer
        description: Frame number for movie previews
        example: 120
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/set-main-preview?frame_number=120" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/set-main-preview"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "frame_number": 120
          }
          payload = None

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/preview-files/{preview_file_id}/extract-frame":
    get:
      summary: Extract frame from preview
      description: Extract a frame from a preview file movie. Frame number can be
        specified as query parameter, defaults to 0.
      responses:
        '200':
          description: Extracted frame as PNG image
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: frame_number
        required: false
        schema:
          type: integer
        description: Frame number to extract
        example: 120
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/extract-frame?frame_number=120" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/extract-frame"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "frame_number": 120
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/preview-files/{preview_file_id}/update-position":
    put:
      summary: Update preview position
      description: Allow to change orders of previews for a single revision.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                position:
                  type: integer
                  description: New position for the preview
                  example: 2
      responses:
        '200':
          description: Preview position updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Preview file unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  position:
                    type: integer
                    description: Preview position
                    example: 2
      parameters:
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/update-position" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "position": 2
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/update-position"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "position": 2
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/preview-files/{preview_file_id}/update-annotations":
    put:
      summary: Update preview annotations
      description: Allow to modify the annotations stored at the preview level. Modifications
        are applied via three fields, additions to give all the annotations that need
        to be added, updates that list annotations that needs to be modified, and
        deletions to list the IDs of annotations that needs to be removed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                additions:
                  type: array
                  description: Annotations to add
                  items:
                    type: object
                  example:
                  - type: drawing
                    x: 100
                    "y": 200
                updates:
                  type: array
                  description: Annotations to update
                  items:
                    type: object
                  example:
                  - id: uuid
                    x: 150
                    "y": 250
                deletions:
                  type: array
                  description: Annotation IDs to remove
                  items:
                    type: string
                    format: uuid
                  example:
                  - a24a6ea4-ce75-4665-a070-57453082c25
      responses:
        '200':
          description: Preview annotations updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Preview file unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  annotations:
                    type: array
                    description: Updated annotations
                    items:
                      type: object
      parameters:
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/update-annotations" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "additions": [
              {
                "type": "drawing",
                "x": 100,
                "y": 200
              }
            ],
            "updates": [
              {
                "id": "uuid",
                "x": 150,
                "y": 250
              }
            ],
            "deletions": [
              "a24a6ea4-ce75-4665-a070-57453082c25"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/update-annotations"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "additions": [
                  {
                      "type": "drawing",
                      "x": 100,
                      "y": 200
                  }
              ],
              "updates": [
                  {
                      "id": "uuid",
                      "x": 150,
                      "y": 250
                  }
              ],
              "deletions": [
                  "a24a6ea4-ce75-4665-a070-57453082c25"
              ]
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/preview-files/{preview_file_id}/extract-tile":
    get:
      summary: Extract tile from preview
      description: Extract a tile from a preview file movie.
      responses:
        '200':
          description: Extracted tile as PNG image
          content:
            image/png:
              schema:
                type: string
                format: binary
      parameters:
      - in: path
        name: preview_file_id
        required: true
        schema:
          type: string
          format: uuid
        description: Preview file unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - Previews
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/extract-tile" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/preview-files/a24a6ea4-ce75-4665-a070-57453082c25/extract-tile"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/context":
    get:
      summary: Get context
      description: Retrieve context information required to properly run a full application
        connected to the API. Returns user, project, and system configuration data.
      responses:
        '200':
          description: Context information for running a full app connected to the
            API
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    description: Current user information
                    example:
                      id: uuid
                      name: John Doe
                  projects:
                    type: array
                    items:
                      type: object
                    description: Available projects
                    example:
                    - id: uuid
                      name: Project 1
                  departments:
                    type: array
                    items:
                      type: object
                    description: Available departments
                    example:
                    - id: uuid
                      name: Animation
                  asset_types:
                    type: array
                    items:
                      type: object
                    description: Available asset types
                    example:
                    - id: uuid
                      name: Character
                  task_types:
                    type: array
                    items:
                      type: object
                    description: Available task types
                    example:
                    - id: uuid
                      name: Modeling
                  task_status:
                    type: array
                    items:
                      type: object
                    description: Available task statuses
                    example:
                    - id: uuid
                      name: In Progress
                  custom_actions:
                    type: array
                    items:
                      type: object
                    description: Available custom actions
                    example:
                    - id: uuid
                      name: Custom Action
                  status_automations:
                    type: array
                    items:
                      type: object
                    description: Available status automations
                    example:
                    - id: uuid
                      name: Auto Status
                  studios:
                    type: array
                    items:
                      type: object
                    description: Available studios
                    example:
                    - id: uuid
                      name: Studio Name
                  notification_count:
                    type: integer
                    description: Number of unread notifications
                    example: 5
                  persons:
                    type: array
                    items:
                      type: object
                    description: Available persons
                    example:
                    - id: uuid
                      name: John Doe
                  project_status:
                    type: array
                    items:
                      type: object
                    description: Available project statuses
                    example:
                    - id: uuid
                      name: Active
                  search_filters:
                    type: array
                    items:
                      type: object
                    description: Available search filters
                    example:
                    - id: uuid
                      name: My Filter
                  search_filter_groups:
                    type: array
                    items:
                      type: object
                    description: Available search filter groups
                    example:
                    - id: uuid
                      name: Filter Group
                  preview_background_files:
                    type: array
                    items:
                      type: object
                    description: Available preview background files
                    example:
                    - id: uuid
                      name: background.jpg
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/context" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/context"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/assets/{asset_id}/tasks":
    get:
      summary: Get asset tasks
      description: Return tasks related to given asset for current user.
      responses:
        '200':
          description: Tasks related to given asset for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/assets/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/assets/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/shots/{shot_id}/tasks":
    get:
      summary: Get shot tasks
      description: Retrieve tasks related to a specific shot for the current user.
        Returns all tasks assigned to the user for the given shot.
      responses:
        '200':
          description: Tasks related to given shot
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Animation
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: shot_id
        required: true
        schema:
          type: string
          format: uuid
        description: Shot unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/shots/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/shots/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/scenes/{scene_id}/tasks":
    get:
      summary: Get scene tasks
      description: Retrieve tasks related to a specific scene for the current user.
      responses:
        '200':
          description: Tasks related to given scene
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Layout
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: scene_id
        required: true
        schema:
          type: string
          format: uuid
        description: Scene unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/scenes/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/scenes/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/sequences/{sequence_id}/tasks":
    get:
      summary: Get sequence tasks
      description: Retrieve tasks related to a specific sequence for the current user.
        sequence.
      responses:
        '200':
          description: Tasks related to given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Compositing
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/assets/{asset_id}/task-types":
    get:
      summary: Get asset task types
      description: Retrieve task types related to a specific asset for the current
        user. Returns all task types available for the given asset.
      responses:
        '200':
          description: Task types related to given asset for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Modeling
                    short_name:
                      type: string
                      description: Task type short name
                      example: MOD
                    color:
                      type: string
                      description: Task type color
                      example: "#FF0000"
                    priority:
                      type: integer
                      description: Task type priority
                      example: 1
                    for_entity:
                      type: string
                      description: Entity type this task type applies to
                      example: Asset
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: asset_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/assets/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/assets/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/shots/{shot_id}/task-types":
    get:
      summary: Get shot task types
      description: Retrieve task types related to a specific shot for the current
        user. Returns all task types available for the given shot.
      responses:
        '200':
          description: Task types related to given shot for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Animation
                    short_name:
                      type: string
                      description: Task type short name
                      example: ANIM
                    color:
                      type: string
                      description: Task type color
                      example: "#00FF00"
                    priority:
                      type: integer
                      description: Task type priority
                      example: 2
                    for_entity:
                      type: string
                      description: Entity type this task type applies to
                      example: Shot
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: shot_id
        required: true
        schema:
          type: string
          format: uuid
        description: Shot unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/shots/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/shots/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/scenes/{scene_id}/task-types":
    get:
      summary: Get scene task types
      description: Retrieve task types related to a specific scene for the current
        user.
      responses:
        '200':
          description: Task types related to given scene for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Layout
                    short_name:
                      type: string
                      description: Task type short name
                      example: LAY
                    color:
                      type: string
                      description: Task type color
                      example: "#0000FF"
                    priority:
                      type: integer
                      description: Task type priority
                      example: 3
                    for_entity:
                      type: string
                      description: Entity type this task type applies to
                      example: Scene
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: scene_id
        required: true
        schema:
          type: string
          format: uuid
        description: Scene unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/scenes/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/scenes/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/sequences/{sequence_id}/task-types":
    get:
      summary: Get sequence task types
      description: Retrieve task types related to a specific sequence for the current
        user.
      responses:
        '200':
          description: Task types related to given sequence for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Compositing
                    short_name:
                      type: string
                      description: Task type short name
                      example: COMP
                    color:
                      type: string
                      description: Task type color
                      example: "#FFFF00"
                    priority:
                      type: integer
                      description: Task type priority
                      example: 4
                    for_entity:
                      type: string
                      description: Entity type this task type applies to
                      example: Sequence
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/open":
    get:
      summary: Get open projects
      description: Retrieve open projects for which the current user has at least
        one task assigned. Optionally filter by project name.
      responses:
        '200':
          description: Open projects with assigned tasks for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Project unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Project name
                      example: My Project
                    description:
                      type: string
                      description: Project description
                      example: A sample project
                    status:
                      type: string
                      description: Project status
                      example: Active
                    fps:
                      type: number
                      description: Frames per second
                      example: 24.0
                    ratio:
                      type: string
                      description: Aspect ratio
                      example: '16:9'
                    resolution:
                      type: string
                      description: Project resolution
                      example: 1920x1080
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Filter projects by name
        example: My Project
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/open?name=My%20Project" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/open"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "name": "My Project"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/{project_id}/asset-types":
    get:
      summary: Get project asset types
      description: Retrieve asset types related to a specific project for the current
        user.
      responses:
        '200':
          description: Asset types related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Asset type name
                      example: Character
                    short_name:
                      type: string
                      description: Asset type short name
                      example: CHAR
                    color:
                      type: string
                      description: Asset type color
                      example: "#FF0000"
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/{project_id}/asset-types/{asset_type_id}/assets":
    get:
      summary: Get project assets
      description: Retrieve assets of a specific type within a project matching the
        asset type in the given project if the user has access.
      responses:
        '200':
          description: Assets of given type in the specified project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Asset unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    name:
                      type: string
                      description: Asset name
                      example: Main Character
                    description:
                      type: string
                      description: Asset description
                      example: Main character model for the project
                    asset_type_id:
                      type: string
                      format: uuid
                      description: Asset type identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: asset_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Asset type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/b35b7fb5-df86-5776-b181-68564193d36/assets" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/asset-types/b35b7fb5-df86-5776-b181-68564193d36/assets"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/{project_id}/sequences":
    get:
      summary: Get project sequences
      description: Retrieve sequences related to a specific project for the current
        user. Returns all sequences in the project if the user has access.
      responses:
        '200':
          description: Sequences related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Sequence unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Sequence name
                      example: SEQ001
                    description:
                      type: string
                      description: Sequence description
                      example: Main sequence
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    fps:
                      type: number
                      description: Frames per second
                      example: 24.0
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/sequences"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/{project_id}/episodes":
    get:
      summary: Get project episodes
      description: Retrieve episodes related to a specific project for the current
        user. Returns all episodes in the project if the user has access.
      responses:
        '200':
          description: Episodes related to given project
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Episode unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Episode name
                      example: Episode 01
                    description:
                      type: string
                      description: Episode description
                      example: First episode
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/episodes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/sequences/{sequence_id}/shots":
    get:
      summary: Get sequence shots
      description: Retrieve shots related to a specific sequence for the current user.
      responses:
        '200':
          description: Shots related to given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Shot unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Shot name
                      example: SH001
                    description:
                      type: string
                      description: Shot description
                      example: Main shot
                    sequence_id:
                      type: string
                      format: uuid
                      description: Sequence identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shots" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/shots"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/sequences/{sequence_id}/scenes":
    get:
      summary: Get sequence scenes
      description: Retrieve scenes related to a specific sequence for the current
        user.
      responses:
        '200':
          description: Scenes related to given sequence
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Scene unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Scene name
                      example: SC001
                    description:
                      type: string
                      description: Scene description
                      example: Main scene
                    sequence_id:
                      type: string
                      format: uuid
                      description: Sequence identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/scenes" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/scenes"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/tasks":
    get:
      summary: Get my tasks
      description: Retrieve ttasks currently assigned to current user and of which
        status has is_done attribute set to false.
      responses:
        '200':
          description: Unfinished tasks currently assigned to current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Modeling
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/tasks-to-check":
    get:
      summary: Get tasks requiring feedback
      description: Retrieve tasks requiring feedback for departments where the current
        user is a supervisor. Returns empty list if user is not a supervisor.
      responses:
        '200':
          description: Tasks requiring feedback in current user departments
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Review
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/tasks-to-check" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/tasks-to-check"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/done-tasks":
    get:
      summary: Get done tasks
      description: Retrieve tasks currently assigned to the current user with status
        marked as done. Returns only tasks from open projects.
      responses:
        '200':
          description: Finished tasks currently assigned to current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Completed Task
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    assigner_id:
                      type: string
                      format: uuid
                      description: Person who assigned the task
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assignees:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of assigned person identifiers
                      example:
                      - f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/done-tasks" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/done-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/filters":
    get:
      summary: Get filters
      description: Retrieve filters for the current user limited to open projects
        only.
      responses:
        '200':
          description: Filters for current user and only for open projects
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Filter unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Filter name
                      example: My Filter
                    query:
                      type: string
                      description: Filter query JSON
                      example: '{"project_id": "uuid"}'
                    list_type:
                      type: string
                      description: List type
                      example: todo
                    entity_type:
                      type: string
                      description: Entity type
                      example: Asset
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    is_shared:
                      type: boolean
                      description: Whether filter is shared
                      example: false
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/filters" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filters"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create filter
      description: Create a new filter for the current user limited to open projects
        only.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - query
              - list_type
              - project_id
              properties:
                name:
                  type: string
                  description: Filter name
                  example: My Custom Filter
                query:
                  type: string
                  description: Filter query as JSON string
                  example: '{"project_id": "uuid"}'
                list_type:
                  type: string
                  description: Type of list this filter applies to
                  example: todo
                entity_type:
                  type: string
                  description: Entity type this filter applies to
                  example: Asset
                project_id:
                  type: string
                  format: uuid
                  description: Project identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                is_shared:
                  type: boolean
                  description: Whether to share this filter with others
                  default: false
                  example: false
                search_filter_group_id:
                  type: string
                  format: uuid
                  description: Filter group identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                department_id:
                  type: string
                  format: uuid
                  description: Department identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
      responses:
        '201':
          description: Filter created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Filter unique identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  name:
                    type: string
                    description: Filter name
                    example: My Custom Filter
                  query:
                    type: string
                    description: Filter query JSON
                    example: '{"project_id": "uuid"}'
                  list_type:
                    type: string
                    description: List type
                    example: todo
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  is_shared:
                    type: boolean
                    description: Whether filter is shared
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
        '400':
          description: Bad request
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/user/filters" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "My Custom Filter",
            "query": "{\"project_id\": \"uuid\"}",
            "list_type": "todo",
            "entity_type": "Asset",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "is_shared": false,
            "search_filter_group_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filters"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "My Custom Filter",
              "query": "{\"project_id\": \"uuid\"}",
              "list_type": "todo",
              "entity_type": "Asset",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "is_shared": false,
              "search_filter_group_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/filters/{filter_id}":
    put:
      summary: Update filter
      description: Update an existing filter if it is owned by the current user.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Filter name
                  example: Updated Filter Name
                search_query:
                  type: string
                  description: Updated filter query
                  example: '{"status": "active"}'
                search_filter_group_id:
                  type: string
                  format: uuid
                  description: Filter group identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                is_shared:
                  type: boolean
                  description: Whether to share this filter
                  example: true
                project_id:
                  type: string
                  format: uuid
                  description: Project identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
                department_id:
                  type: string
                  format: uuid
                  description: Department identifier
                  example: d57d9hd7-fh08-7998-d403-80786315f58
      responses:
        '200':
          description: Filter updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Filter unique identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  name:
                    type: string
                    description: Filter name
                    example: Updated Filter Name
                  query:
                    type: string
                    description: Filter query JSON
                    example: '{"status": "active"}'
                  list_type:
                    type: string
                    description: List type
                    example: todo
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: f79f1jf9-hj20-9010-f625-a09008537h80
                  is_shared:
                    type: boolean
                    description: Whether filter is shared
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: filter_id
        required: true
        schema:
          type: string
          format: uuid
        description: Filter unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/user/filters/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Filter Name",
            "search_query": "{\"status\": \"active\"}",
            "search_filter_group_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "is_shared": true,
            "project_id": "c46c8gc6-eg97-6887-c292-79675204e47",
            "department_id": "d57d9hd7-fh08-7998-d403-80786315f58"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filters/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Filter Name",
              "search_query": "{\"status\": \"active\"}",
              "search_filter_group_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "is_shared": true,
              "project_id": "c46c8gc6-eg97-6887-c292-79675204e47",
              "department_id": "d57d9hd7-fh08-7998-d403-80786315f58"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete filter
      description: Delete a specific filter if it is owned by the current user.
      responses:
        '204':
          description: Filter deleted successfully
      parameters:
      - in: path
        name: filter_id
        required: true
        schema:
          type: string
          format: uuid
        description: Filter unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/user/filters/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filters/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/filter-groups":
    get:
      summary: Get filter groups
      description: Retrieve filter groups for the current user limited to open projects
        only.
      responses:
        '200':
          description: Filter groups for current user and only for open projects
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Filter group unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Filter group name
                      example: My Filter Group
                    color:
                      type: string
                      description: Filter group color
                      example: "#FF0000"
                    list_type:
                      type: string
                      description: List type
                      example: todo
                    entity_type:
                      type: string
                      description: Entity type
                      example: Asset
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    is_shared:
                      type: boolean
                      description: Whether filter group is shared
                      example: false
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/filter-groups" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filter-groups"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create filter group
      description: Create a new filter group for the current user limited to open
        projects only. The filter group can be shared with other users.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - color
              - list_type
              - project_id
              properties:
                name:
                  type: string
                  description: Filter group name
                  example: My Filter Group
                color:
                  type: string
                  description: Filter group color in hex format
                  example: "#FF0000"
                list_type:
                  type: string
                  description: Type of list this filter group applies to
                  example: todo
                entity_type:
                  type: string
                  description: Entity type this filter group applies to
                  example: Asset
                is_shared:
                  type: boolean
                  description: Whether to share this filter group with others
                  default: false
                  example: false
                project_id:
                  type: string
                  format: uuid
                  description: Project identifier
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                department_id:
                  type: string
                  format: uuid
                  description: Department identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Filter group created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Filter group unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  name:
                    type: string
                    description: Filter group name
                    example: My Filter Group
                  color:
                    type: string
                    description: Filter group color
                    example: "#FF0000"
                  list_type:
                    type: string
                    description: List type
                    example: todo
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  is_shared:
                    type: boolean
                    description: Whether filter group is shared
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
        '400':
          description: Bad request
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/user/filter-groups" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "My Filter Group",
            "color": "#FF0000",
            "list_type": "todo",
            "entity_type": "Asset",
            "is_shared": false,
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "department_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filter-groups"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "My Filter Group",
              "color": "#FF0000",
              "list_type": "todo",
              "entity_type": "Asset",
              "is_shared": false,
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "department_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/filter-groups/{filter_group_id}":
    get:
      summary: Get filter group
      description: Retrieve a specific filter group for the current user. Returns
        detailed information about the filter group.
      responses:
        '200':
          description: Filter group details
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Filter group unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  name:
                    type: string
                    description: Filter group name
                    example: My Filter Group
                  color:
                    type: string
                    description: Filter group color
                    example: "#FF0000"
                  list_type:
                    type: string
                    description: List type
                    example: todo
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  is_shared:
                    type: boolean
                    description: Whether filter group is shared
                    example: false
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: search_filter_group_id
        required: true
        schema:
          type: string
          format: uuid
        description: Filter group unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/filter-groups/{filter_group_id}" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filter-groups/{filter_group_id}"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete filter group
      description: Delete a specific filter group if it is owned by the current user.
      responses:
        '204':
          description: Filter group deleted successfully
      parameters:
      - in: path
        name: filter_group_id
        required: true
        schema:
          type: string
          format: uuid
        description: Filter group unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/user/filter-groups/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filter-groups/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    put:
      summary: Update filter group
      description: Update an existing filter group if it is owned by the current user.
        Allows modification of filter group properties.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Filter group name
                  example: Updated Filter Group
                color:
                  type: string
                  description: Filter group color
                  example: "#00FF00"
                is_shared:
                  type: boolean
                  description: Whether to share this filter group
                  example: true
                project_id:
                  type: string
                  format: uuid
                  description: Project identifier
                  example: b35b7fb5-df86-5776-b181-68564193d36
                department_id:
                  type: string
                  format: uuid
                  description: Department identifier
                  example: c46c8gc6-eg97-6887-c292-79675204e47
      responses:
        '200':
          description: Filter group updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Filter group unique identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  name:
                    type: string
                    description: Filter group name
                    example: Updated Filter Group
                  color:
                    type: string
                    description: Filter group color
                    example: "#00FF00"
                  list_type:
                    type: string
                    description: List type
                    example: todo
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  is_shared:
                    type: boolean
                    description: Whether filter group is shared
                    example: true
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: filter_group_id
        required: true
        schema:
          type: string
          format: uuid
        description: Filter group unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/user/filter-groups/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Updated Filter Group",
            "color": "#00FF00",
            "is_shared": true,
            "project_id": "b35b7fb5-df86-5776-b181-68564193d36",
            "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/filter-groups/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Updated Filter Group",
              "color": "#00FF00",
              "is_shared": true,
              "project_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "department_id": "c46c8gc6-eg97-6887-c292-79675204e47"
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/desktop-login-logs":
    get:
      summary: Get desktop login logs
      description: Retrieve desktop login logs for the current user.
      responses:
        '200':
          description: Desktop login logs for current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Login log unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    date:
                      type: string
                      format: date
                      description: Login date
                      example: '2023-01-01'
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/desktop-login-logs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/desktop-login-logs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create desktop login log
      description: Create a desktop login log entry for the current user.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  format: date
                  description: Login date
                  example: '2023-01-01'
      responses:
        '201':
          description: Desktop login log created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Login log unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  date:
                    type: string
                    format: date
                    description: Login date
                    example: '2023-01-01'
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
        '400':
          description: Bad request
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/user/desktop-login-logs" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "date": "2023-01-01"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/desktop-login-logs"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "date": "2023-01-01"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/time-spents":
    get:
      summary: Get time spents
      description: Retrieve all time spent entries for the current user. Optionally
        accepts date range parameters to filter results.
      responses:
        '200':
          description: Time spent entries for the current user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Time spent unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    person_id:
                      type: string
                      format: uuid
                      description: Person identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    date:
                      type: string
                      format: date
                      description: Date of time spent
                      example: '2023-01-01'
                    duration:
                      type: number
                      description: Duration in seconds
                      example: 3600
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
        '400':
          description: Wrong date format
      parameters:
      - in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date
        description: Start date for filtering time spents
        example: '2023-01-01'
      - in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date
        description: End date for filtering time spents
        example: '2023-12-31'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/time-spents?start_date=2023-01-01&end_date=2023-12-31" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/time-spents"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "start_date": "2023-01-01",
              "end_date": "2023-12-31"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/time-spents/{date}":
    get:
      summary: Get time spents by date
      description: Retrieve time spent entries for the current user on a specific
        date. Returns all time entries for the given date.
      responses:
        '200':
          description: Time spent entries for the current user on given date
          content:
            application/json:
              schema:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                    description: Date of time spent
                    example: '2023-01-01'
                  total_duration:
                    type: number
                    description: Total duration in seconds
                    example: 28800
                  entries:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Time spent unique identifier
                          example: a24a6ea4-ce75-4665-a070-57453082c25
                        task_id:
                          type: string
                          format: uuid
                          description: Task identifier
                          example: b35b7fb5-df86-5776-b181-68564193d36
                        duration:
                          type: number
                          description: Duration in seconds
                          example: 3600
                        created_at:
                          type: string
                          format: date-time
                          description: Creation timestamp
                          example: '2023-01-01T12:00:00Z'
        '400':
          description: Wrong date format
      parameters:
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        description: Date to get time spents for
        example: '2023-01-01'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/time-spents/2023-01-01" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/time-spents/2023-01-01"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/tasks/{task_id}/time-spents/{date}":
    get:
      summary: Get task time spent
      description: Retrieve time spent entries for the current user on a specific
        task and date. Returns detailed time tracking information.
      responses:
        '200':
          description: Time spent entry for the current user on given task and date
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Time spent unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  date:
                    type: string
                    format: date
                    description: Date of time spent
                    example: '2023-01-01'
                  duration:
                    type: number
                    description: Duration in seconds
                    example: 3600
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        description: Date to get time spent for
        example: '2023-01-01'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2023-01-01" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/time-spents/2023-01-01"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/day-offs/{date}":
    get:
      summary: Get day off
      description: Retrieve day off information for the current user on a specific
        date.
      responses:
        '200':
          description: Day off object for the current user on given date
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Day off unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  date:
                    type: string
                    format: date
                    description: Day off date
                    example: '2023-01-01'
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: date
        required: true
        schema:
          type: string
          format: date
        description: Date to check for day off
        example: '2023-01-01'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/day-offs/2023-01-01" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/day-offs/2023-01-01"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/notifications":
    get:
      summary: Get notifications
      description: Retrieve the last 100 user notifications filtered by given parameters.
        Supports filtering by date range, task type, status, and other criteria.
      responses:
        '200':
          description: Last 100 user notifications matching filters
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Notification unique identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    type:
                      type: string
                      description: Notification type
                      example: comment
                    read:
                      type: boolean
                      description: Whether notification is read
                      example: false
                    author_id:
                      type: string
                      format: uuid
                      description: Author person identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    comment_id:
                      type: string
                      format: uuid
                      description: Comment identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    task_id:
                      type: string
                      format: uuid
                      description: Task identifier
                      example: f79f1jf9-hj20-9010-f625-a09008537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: after
        required: false
        schema:
          type: string
          format: date
        description: Filter notifications after this date
        example: '2023-01-01'
      - in: query
        name: before
        required: false
        schema:
          type: string
          format: date
        description: Filter notifications before this date
        example: '2023-12-31'
      - in: query
        name: task_type_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task type ID
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: query
        name: task_status_id
        required: false
        schema:
          type: string
          format: uuid
        description: Filter by task status ID
        example: b35b7fb5-df86-5776-b181-68564193d36
      - in: query
        name: type
        required: false
        schema:
          type: string
        description: Filter by notification type
        example: comment
      - in: query
        name: read
        required: false
        schema:
          type: boolean
        description: Filter by read status
        example: false
      - in: query
        name: watching
        required: false
        schema:
          type: boolean
        description: Filter by watching status
        example: true
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/notifications?after=2023-01-01&before=2023-12-31&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&task_status_id=b35b7fb5-df86-5776-b181-68564193d36&type=comment&read=false&watching=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/notifications"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "after": "2023-01-01",
              "before": "2023-12-31",
              "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "task_status_id": "b35b7fb5-df86-5776-b181-68564193d36",
              "type": "comment",
              "read": false,
              "watching": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/notifications/{notification_id}":
    put:
      summary: Update notification
      description: Change the read status of a specific notification. Only the notification
        owner can update their notifications.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                read:
                  type: boolean
                  description: Mark notification as read or unread
                  example: true
      responses:
        '200':
          description: Notification updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Notification unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  type:
                    type: string
                    description: Notification type
                    example: comment
                  read:
                    type: boolean
                    description: Whether notification is read
                    example: true
                  author_id:
                    type: string
                    format: uuid
                    description: Author person identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  comment_id:
                    type: string
                    format: uuid
                    description: Comment identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: notification_id
        required: true
        schema:
          type: string
          format: uuid
        description: Notification unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X PUT "http://api.example.com/data/user/notifications/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "read": true
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/notifications/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "read": true
          }

          response = requests.put(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    get:
      summary: Get notification
      description: Retrieve a specific notification by ID, only if it belongs to the
        current user.
      responses:
        '200':
          description: Notification details
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Notification unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  type:
                    type: string
                    description: Notification type
                    example: comment
                  read:
                    type: boolean
                    description: Whether notification is read
                    example: false
                  author_id:
                    type: string
                    format: uuid
                    description: Author person identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  comment_id:
                    type: string
                    format: uuid
                    description: Comment identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: notification_id
        required: true
        schema:
          type: string
          format: uuid
        description: Notification unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/notifications/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/notifications/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/tasks/{task_id}/subscribed":
    get:
      summary: Check task subscription
      description: Check if the current user has subscribed to a specific task.
      responses:
        '200':
          description: Subscription status for the task
          content:
            application/json:
              schema:
                type: boolean
                example: true
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/subscribed" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/subscribed"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/chats":
    get:
      summary: Get chats
      description: Retrieve all chats where the current user is a participant. Returns
        list of chat conversations the user can access.
      responses:
        '200':
          description: Chats where user is participant
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Chat unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    entity_type:
                      type: string
                      description: Entity type
                      example: Asset
                    participants:
                      type: array
                      items:
                        type: string
                        format: uuid
                      description: List of participant person identifiers
                      example:
                      - c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/chats" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/chats"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/chats/{entity_id}/join":
    delete:
      summary: Leave chat
      description: Leave a chat for a specific entity by removing the current user
        from participants. The user will no longer receive chat messages for this
        entity.
      responses:
        '204':
          description: Chat left successfully
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/user/chats/a24a6ea4-ce75-4665-a070-57453082c25/join" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/chats/a24a6ea4-ce75-4665-a070-57453082c25/join"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Join chat
      description: Join a chat for a specific entity by adding the current user as
        a participant. The user will be listed as a participant in the chat.
      responses:
        '201':
          description: Chat joined successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Chat unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  entity_id:
                    type: string
                    format: uuid
                    description: Entity identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  entity_type:
                    type: string
                    description: Entity type
                    example: Asset
                  participants:
                    type: array
                    items:
                      type: string
                      format: uuid
                    description: List of participant person identifiers
                    example:
                    - d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: entity_id
        required: true
        schema:
          type: string
          format: uuid
        description: Entity unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/user/chats/a24a6ea4-ce75-4665-a070-57453082c25/join" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/chats/a24a6ea4-ce75-4665-a070-57453082c25/join"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/tasks/{task_id}/subscribe":
    post:
      summary: Subscribe to task
      description: Create a subscription entry for the current user and given task.
        When subscribed, the user receives notifications for all comments posted on
        the task.
      responses:
        '201':
          description: Subscription created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Subscription unique identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  task_id:
                    type: string
                    format: uuid
                    description: Task identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/subscribe" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/subscribe"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/tasks/{task_id}/unsubscribe":
    delete:
      summary: Unsubscribe from task
      description: Remove the subscription entry for the current user and given task.
        The user will no longer receive notifications for this task.
      responses:
        '204':
          description: Subscription removed successfully
      parameters:
      - in: path
        name: task_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/unsubscribe" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/tasks/a24a6ea4-ce75-4665-a070-57453082c25/unsubscribe"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/clear-avatar":
    delete:
      summary: Clear avatar
      description: Set the has_avatar flag to false for the current user and remove
        the avatar file from storage. This action cannot be undone.
      responses:
        '204':
          description: Avatar file deleted successfully
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/user/clear-avatar" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/clear-avatar"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/entities/{sequence_id}/task-types/{task_type_id}/subscribed":
    get:
      summary: Check sequence subscription
      description: Check if the current user has subscribed to a specific sequence
        and task type combination. Returns true if subscribed.
      responses:
        '200':
          description: Subscription status for the sequence and task type
          content:
            application/json:
              schema:
                type: boolean
                example: true
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/entities/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/subscribed" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/entities/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/subscribed"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/user/projects/{project_id}/task-types/{task_type_id}/sequence-subscriptions":
    get:
      summary: Get sequence subscriptions
      description: Retrieve list of sequence IDs to which the current user has subscribed
        for a given task type within a specific project.
      responses:
        '200':
          description: List of subscribed sequence IDs for the task type
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  format: uuid
                  example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: project_id
        required: true
        schema:
          type: string
          format: uuid
        description: Project unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/sequence-subscriptions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/user/projects/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/sequence-subscriptions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/sequences/{sequence_id}/task-types/{task_type_id}/subscribe":
    post:
      summary: Subscribe to sequence
      description: Create a subscription entry for the current user, given sequence,
        and task type. When subscribed, the user receives notifications for all comments
        posted on tasks related to the sequence.
      responses:
        '201':
          description: Subscription created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Subscription unique identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  person_id:
                    type: string
                    format: uuid
                    description: Person identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  sequence_id:
                    type: string
                    format: uuid
                    description: Sequence identifier
                    example: e68e0ie8-gi19-8009-e514-91897426g69
                  task_type_id:
                    type: string
                    format: uuid
                    description: Task type identifier
                    example: f79f1jf9-hj20-9010-f625-a09008537h80
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/subscribe" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/subscribe"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/sequences/{sequence_id}/task-types/{task_type_id}/unsubscribe":
    delete:
      summary: Unsubscribe from sequence
      description: Remove the subscription entry for the current user, given sequence,
        and task type. The user will no longer receive notifications for tasks related
        to this sequence.
      responses:
        '204':
          description: Subscription removed successfully
      parameters:
      - in: path
        name: sequence_id
        required: true
        schema:
          type: string
          format: uuid
        description: Sequence unique identifier
        example: a24a6ea4-ce75-4665-a070-57453082c25
      - in: path
        name: task_type_id
        required: true
        schema:
          type: string
          format: uuid
        description: Task type unique identifier
        example: b35b7fb5-df86-5776-b181-68564193d36
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/actions/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/unsubscribe" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/sequences/a24a6ea4-ce75-4665-a070-57453082c25/task-types/b35b7fb5-df86-5776-b181-68564193d36/unsubscribe"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/actions/user/notifications/mark-all-as-read":
    post:
      summary: Mark all notifications as read
      description: Mark all notifications as read for the current user.
      responses:
        '200':
          description: Success object
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Operation success status
                    example: true
      tags:
      - User
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/actions/user/notifications/mark-all-as-read" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/actions/user/notifications/mark-all-as-read"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits":
    get:
      summary: Get all edits
      description: Retrieve all edit entries with filtering support. Filters can be
        specified in the query string.
      responses:
        '200':
          description: List of all edits successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Edit unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Edit name
                      example: Opening Sequence
                    description:
                      type: string
                      description: Edit description
                      example: Main opening sequence edit
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter edits by specific project
      - in: query
        name: name
        required: false
        type: string
        example: Opening Sequence
        description: Filter edits by name
      - in: query
        name: force
        required: false
        type: boolean
        default: false
        description: Force parameter for additional filtering
        example: false
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits?project_id=a24a6ea4-ce75-4665-a070-57453082c25&name=Opening%20Sequence&force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Opening Sequence",
              "force": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/all":
    get:
      summary: Get edits
      description: Retrieve all edit entries with filtering support. Filters can be
        specified in the query string.
      responses:
        '200':
          description: List of edits successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Edit unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Edit name
                      example: Opening Sequence
                    description:
                      type: string
                      description: Edit description
                      example: Main opening sequence edit
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter edits by specific project
      - in: query
        name: name
        required: false
        type: string
        example: Opening Sequence
        description: Filter edits by name
      - in: query
        name: force
        required: false
        type: boolean
        default: false
        description: Force parameter for additional filtering
        example: false
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/all?project_id=a24a6ea4-ce75-4665-a070-57453082c25&name=Opening%20Sequence&force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/all"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Opening Sequence",
              "force": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/with-tasks":
    get:
      summary: Get edits and tasks
      description: Retrieve all edits with project name and all related tasks.
      responses:
        '200':
          description: Edits with tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Edit unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Edit name
                      example: Opening Sequence
                    description:
                      type: string
                      description: Edit description
                      example: Main opening sequence edit
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    project_name:
                      type: string
                      description: Project name
                      example: My Animation Project
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: Task unique identifier
                            example: d57d9hd7-fh08-7998-d403-80786315f58
                          name:
                            type: string
                            description: Task name
                            example: Edit Task
                          task_type_id:
                            type: string
                            format: uuid
                            description: Task type identifier
                            example: e68e0ie8-gi19-8009-e514-91897426g69
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter edits by specific project
      - in: query
        name: name
        required: false
        type: string
        example: Opening Sequence
        description: Filter edits by name
      - in: query
        name: force
        required: false
        type: boolean
        default: false
        description: Force parameter for additional filtering
        example: false
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25&name=Opening%20Sequence&force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "name": "Opening Sequence",
              "force": false
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/{edit_id}":
    get:
      summary: Get edit
      description: Retrieve detailed information about a specific edit.
      responses:
        '200':
          description: Edit information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Edit unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Edit name
                    example: Opening Sequence
                  description:
                    type: string
                    description: Edit description
                    example: Main opening sequence edit
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  episode_id:
                    type: string
                    format: uuid
                    description: Episode identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete edit
      description: Permanently remove an edit from the system. Only edit creators
        or project managers can delete edits.
      responses:
        '204':
          description: Edit successfully deleted
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit to delete
      - in: query
        name: force
        type: boolean
        required: false
        description: Force deletion bypassing validation checks
        example: false
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/{edit_id}/task-types":
    get:
      summary: Get edit task types
      description: Retrieve all task types that are related to a specific edit.
      responses:
        '200':
          description: List of edit task types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Edit
                    short_name:
                      type: string
                      description: Task type short name
                      example: EDT
                    color:
                      type: string
                      description: Task type color code
                      example: "#FF5733"
                    for_entity:
                      type: string
                      description: Entity type this task type is for
                      example: Edit
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/{edit_id}/tasks":
    get:
      summary: Get edit tasks
      description: Retrieve all tasks that are related to a specific edit.
      responses:
        '200':
          description: List of edit tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Edit Task
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assigned_to:
                      type: string
                      format: uuid
                      description: Assigned person identifier
                      example: f79f1jf9-hj20-9010-f625-02998537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit
      - in: query
        name: relations
        type: boolean
        required: false
        description: Include related entity information
        example: true
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/tasks?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/{edit_id}/preview-files":
    get:
      summary: Get edit previews
      description: Retrieve all preview files related to a specific edit. Returns
        them as a dictionary where keys are related task type IDs and values are arrays
        of previews for that task type.
      responses:
        '200':
          description: Edit previews successfully retrieved
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Preview unique identifier
                        example: b35b7fb5-df86-5776-b181-68564193d36
                      name:
                        type: string
                        description: Preview name
                        example: edit_preview_01
                      original_name:
                        type: string
                        description: Original file name
                        example: edit_sequence.mov
                      file_path:
                        type: string
                        description: File path
                        example: "/previews/edit/edit_preview_01.mov"
                      task_type_id:
                        type: string
                        format: uuid
                        description: Task type identifier
                        example: c46c8gc6-eg97-6887-c292-79675204e47
                      created_at:
                        type: string
                        format: date-time
                        description: Creation timestamp
                        example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/edits/{edit_id}/versions":
    get:
      summary: Get edit versions
      description: Retrieve all data versions of a specific edit. This includes historical
        versions and metadata about changes over time.
      responses:
        '200':
          description: Edit versions successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Version unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    edit_id:
                      type: string
                      format: uuid
                      description: Edit identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    version_number:
                      type: integer
                      description: Version number
                      example: 1
                    data:
                      type: object
                      description: Version data content
                      example:
                        duration: 120
                        fps: 24
                        changes: Added transitions
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    created_by:
                      type: string
                      format: uuid
                      description: Creator person identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
      parameters:
      - in: path
        name: edit_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the edit
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/versions" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/versions"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/edits":
    get:
      summary: Get episode edits
      description: Retrieve all edits that are related to a specific episode.
      responses:
        '200':
          description: List of episode edits successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Edit unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Edit name
                      example: Episode Edit
                    description:
                      type: string
                      description: Edit description
                      example: Main episode edit
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the episode
      - in: query
        name: relations
        type: boolean
        required: false
        description: Include related entity information
        example: true
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/edits?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/edits"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/episodes/{episode_id}/edit-tasks":
    get:
      summary: Get episode edit tasks
      description: Retrieve all tasks that are related to a specific episode.
      responses:
        '200':
          description: List of episode edit tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Episode Edit Task
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assigned_to:
                      type: string
                      format: uuid
                      description: Assigned person identifier
                      example: f79f1jf9-hj20-9010-f625-02998537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: episode_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the episode
      - in: query
        name: relations
        type: boolean
        required: false
        description: Include related entity information
        example: true
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/edit-tasks?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/episodes/a24a6ea4-ce75-4665-a070-57453082c25/edit-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/edits":
    get:
      summary: Get project edits
      description: Retrieve all edits that are related to a specific project.
      responses:
        '200':
          description: List of project edits successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Edit unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Edit name
                      example: Opening Sequence
                    description:
                      type: string
                      description: Edit description
                      example: Main opening sequence edit
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    episode_id:
                      type: string
                      format: uuid
                      description: Episode identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create edit
      description: Create a new edit for a specific project with name, description,
        and optional episode association.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Edit name
                  example: Opening Sequence
                description:
                  type: string
                  description: Edit description
                  example: Main opening sequence edit
                data:
                  type: object
                  description: Additional edit data
                  example:
                    duration: 120
                    fps: 24
                episode_id:
                  type: string
                  format: uuid
                  description: Episode identifier (optional)
                  example: b35b7fb5-df86-5776-b181-68564193d36
      responses:
        '201':
          description: Edit successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Edit unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Edit name
                    example: Opening Sequence
                  description:
                    type: string
                    description: Edit description
                    example: Main opening sequence edit
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  episode_id:
                    type: string
                    format: uuid
                    description: Episode identifier
                    example: c46c8gc6-eg97-6887-c292-79675204e47
                  data:
                    type: object
                    description: Additional edit data
                    example:
                      duration: 120
                      fps: 24
                  created_by:
                    type: string
                    format: uuid
                    description: Creator person identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Edits
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Opening Sequence",
            "description": "Main opening sequence edit",
            "data": {
              "duration": 120,
              "fps": 24
            },
            "episode_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/edits"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Opening Sequence",
              "description": "Main opening sequence edit",
              "data": {
                  "duration": 120,
                  "fps": 24
              },
              "episode_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/search":
    post:
      summary: Search entities
      description: Search across indexes for persons, assets and shots. Use optional
        filters to limit results to a project and specific indexes. Results are paginated
        with limit and offset.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - query
              properties:
                query:
                  type: string
                  description: Search query string (minimum 3 characters)
                  example: kitsu
                project_id:
                  type: string
                  format: uuid
                  description: Filter search results by project ID
                  example: a24a6ea4-ce75-4665-a070-57453082c25
                limit:
                  type: integer
                  default: 3
                  description: Maximum number of results per index
                  example: 3
                offset:
                  type: integer
                  default: 0
                  description: Number of results to skip
                  example: 0
                index_names:
                  type: array
                  items:
                    type: string
                    enum:
                    - assets
                    - shots
                    - persons
                  default:
                  - assets
                  - shots
                  - persons
                  description: List of index names to search in
                  example:
                  - assets
      responses:
        '200':
          description: List of entities that contain the query
          content:
            application/json:
              schema:
                type: object
                properties:
                  persons:
                    type: array
                    description: List of matching persons
                    example:
                    - id: a24a6ea4-ce75-4665-a070-57453082c25
                      name: John Doe
                      "...":
                  assets:
                    type: array
                    description: List of matching assets
                    example: []
                  shots:
                    type: array
                    description: List of matching shots
                    example:
                    - id: a24a6ea4-ce75-4665-a070-57453082c25
                      name: Shot 001
                      "...":
        '400':
          description: Bad request
      tags:
      - Search
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/search" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "query": "kitsu",
            "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
            "limit": 3,
            "offset": 0,
            "index_names": [
              "assets"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/search"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "query": "kitsu",
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "limit": 3,
              "offset": 0,
              "index_names": [
                  "assets"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts":
    get:
      summary: Get all concepts
      description: Retrieve all concept entries with filtering support. Filters can
        be specified in the query string to narrow down results by project or parent
        concept.
      responses:
        '200':
          description: List of concepts successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Concept unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Concept name
                      example: Character Design
                    description:
                      type: string
                      description: Concept description
                      example: Main character concept art
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    parent_id:
                      type: string
                      format: uuid
                      description: Parent concept identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter concepts by specific project
      - in: query
        name: parent_id
        required: false
        type: string
        format: uuid
        example: b35b7fb5-df86-5776-b181-68564193d36
        description: Filter concepts by parent concept
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts?project_id=a24a6ea4-ce75-4665-a070-57453082c25&parent_id=b35b7fb5-df86-5776-b181-68564193d36" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25",
              "parent_id": "b35b7fb5-df86-5776-b181-68564193d36"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts/with-tasks":
    get:
      summary: Get concepts and tasks
      description: Retrieve all concepts and all related tasks included in the response.
      responses:
        '200':
          description: Concepts with tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Concept unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Concept name
                      example: Character Design
                    description:
                      type: string
                      description: Concept description
                      example: Main character concept art
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    project_name:
                      type: string
                      description: Project name
                      example: My Animation Project
                    asset_type_name:
                      type: string
                      description: Asset type name
                      example: Character
                    tasks:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: Task unique identifier
                            example: c46c8gc6-eg97-6887-c292-79675204e47
                          name:
                            type: string
                            description: Task name
                            example: Character Design Task
                          task_type_id:
                            type: string
                            format: uuid
                            description: Task type identifier
                            example: d57d9hd7-fh08-7998-d403-80786315f58
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: query
        name: project_id
        required: false
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Filter concepts by specific project
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts/with-tasks?project_id=a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/with-tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "project_id": "a24a6ea4-ce75-4665-a070-57453082c25"
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts/{concept_id}":
    get:
      summary: Get concept
      description: Retrieve detailed information about a specific concept including
        metadata, project context, and related data.
      responses:
        '200':
          description: Concept information successfully retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Concept unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Concept name
                    example: Character Design
                  description:
                    type: string
                    description: Concept description
                    example: Main character concept art
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: concept_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the concept
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    delete:
      summary: Delete concept
      description: Permanently remove a concept from the system. Only concept creators
        or project managers can delete concepts.
      responses:
        '204':
          description: Concept successfully deleted
      parameters:
      - in: path
        name: concept_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the concept to delete
      - in: query
        name: force
        type: boolean
        required: false
        description: Force deletion bypassing validation checks
        example: false
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X DELETE "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25?force=false" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "force": false
          }
          payload = None

          response = requests.delete(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts/{concept_id}/task-types":
    get:
      summary: Get concept task types
      description: Retrieve all task types that are related to a specific concept.
      responses:
        '200':
          description: List of concept task types successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task type unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task type name
                      example: Concept Art
                    short_name:
                      type: string
                      description: Task type short name
                      example: CON
                    color:
                      type: string
                      description: Task type color code
                      example: "#FF5733"
                    for_entity:
                      type: string
                      description: Entity type this task type is for
                      example: Concept
      parameters:
      - in: path
        name: concept_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the concept
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/task-types" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/task-types"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts/{concept_id}/tasks":
    get:
      summary: Get concept tasks
      description: Retrieve all tasks that are related to a specific concept.
      responses:
        '200':
          description: List of concept tasks successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Task unique identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    name:
                      type: string
                      description: Task name
                      example: Character Design Task
                    task_type_id:
                      type: string
                      format: uuid
                      description: Task type identifier
                      example: c46c8gc6-eg97-6887-c292-79675204e47
                    task_status_id:
                      type: string
                      format: uuid
                      description: Task status identifier
                      example: d57d9hd7-fh08-7998-d403-80786315f58
                    entity_id:
                      type: string
                      format: uuid
                      description: Entity identifier
                      example: e68e0ie8-gi19-8009-e514-91897426g69
                    assigned_to:
                      type: string
                      format: uuid
                      description: Assigned person identifier
                      example: f79f1jf9-hj20-9010-f625-02998537h80
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: concept_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the concept
      - in: query
        name: relations
        type: boolean
        required: false
        description: Include related entity information
        example: true
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/tasks?relations=true" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {
              "relations": true
          }
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/concepts/{concept_id}/preview-files":
    get:
      summary: Get concept previews
      description: Retrieve all preview files related to a specific concept. Returns
        them as a dictionary where keys are related task type IDs and values are arrays
        of previews for that task type.
      responses:
        '200':
          description: Concept previews successfully retrieved
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Preview unique identifier
                        example: b35b7fb5-df86-5776-b181-68564193d36
                      name:
                        type: string
                        description: Preview name
                        example: concept_preview_01
                      original_name:
                        type: string
                        description: Original file name
                        example: character_concept.jpg
                      file_path:
                        type: string
                        description: File path
                        example: "/previews/concept/concept_preview_01.jpg"
                      task_type_id:
                        type: string
                        format: uuid
                        description: Task type identifier
                        example: c46c8gc6-eg97-6887-c292-79675204e47
                      created_at:
                        type: string
                        format: date-time
                        description: Creation timestamp
                        example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: concept_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the concept
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/preview-files" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/concepts/a24a6ea4-ce75-4665-a070-57453082c25/preview-files"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
  "/data/projects/{project_id}/concepts":
    get:
      summary: Get project concepts
      description: Retrieve all concepts that are related to a specific project.
      responses:
        '200':
          description: List of project concepts successfully retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Concept unique identifier
                      example: a24a6ea4-ce75-4665-a070-57453082c25
                    name:
                      type: string
                      description: Concept name
                      example: Character Design
                    description:
                      type: string
                      description: Concept description
                      example: Main character concept art
                    project_id:
                      type: string
                      format: uuid
                      description: Project identifier
                      example: b35b7fb5-df86-5776-b181-68564193d36
                    created_at:
                      type: string
                      format: date-time
                      description: Creation timestamp
                      example: '2023-01-01T12:00:00Z'
                    updated_at:
                      type: string
                      format: date-time
                      description: Last update timestamp
                      example: '2023-01-01T12:30:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/concepts" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json"
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/concepts"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json"
          }
          params = {}
          payload = None

          response = requests.get(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
    post:
      summary: Create concept
      description: Create a new concept for a specific project with name, description,
        and optional entity concept links.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Concept name
                  example: Character Design
                description:
                  type: string
                  description: Concept description
                  example: Main character concept art
                data:
                  type: object
                  description: Additional concept data
                  example:
                    style: realistic
                    mood: heroic
                entity_concept_links:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: List of entity concept link identifiers
                  example:
                  - b35b7fb5-df86-5776-b181-68564193d36
                  - c46c8gc6-eg97-6887-c292-79675204e47
      responses:
        '201':
          description: Concept successfully created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Concept unique identifier
                    example: a24a6ea4-ce75-4665-a070-57453082c25
                  name:
                    type: string
                    description: Concept name
                    example: Character Design
                  description:
                    type: string
                    description: Concept description
                    example: Main character concept art
                  project_id:
                    type: string
                    format: uuid
                    description: Project identifier
                    example: b35b7fb5-df86-5776-b181-68564193d36
                  data:
                    type: object
                    description: Additional concept data
                    example:
                      style: realistic
                      mood: heroic
                  created_by:
                    type: string
                    format: uuid
                    description: Creator person identifier
                    example: d57d9hd7-fh08-7998-d403-80786315f58
                  created_at:
                    type: string
                    format: date-time
                    description: Creation timestamp
                    example: '2023-01-01T12:00:00Z'
                  updated_at:
                    type: string
                    format: date-time
                    description: Last update timestamp
                    example: '2023-01-01T12:00:00Z'
      parameters:
      - in: path
        name: project_id
        required: true
        type: string
        format: uuid
        example: a24a6ea4-ce75-4665-a070-57453082c25
        description: Unique identifier of the project
      tags:
      - Concepts
      x-codeSamples:
      - lang: bash
        label: curl
        source: |-
          curl -X POST "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/concepts" \
            -H "Authorization: Bearer YOUR_API_TOKEN" \
            -H "Accept: application/json" \
            -H "Content-Type: application/json" \
            -d '{
            "name": "Character Design",
            "description": "Main character concept art",
            "data": {
              "style": "realistic",
              "mood": "heroic"
            },
            "entity_concept_links": [
              "b35b7fb5-df86-5776-b181-68564193d36",
              "c46c8gc6-eg97-6887-c292-79675204e47"
            ]
          }'
      - lang: python
        label: Python
        source: |-
          import requests

          url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/concepts"
          headers = {
              "Authorization": "Bearer YOUR_API_TOKEN",
              "Accept": "application/json",
              "Content-Type": "application/json"
          }
          params = {}
          payload = {
              "name": "Character Design",
              "description": "Main character concept art",
              "data": {
                  "style": "realistic",
                  "mood": "heroic"
              },
              "entity_concept_links": [
                  "b35b7fb5-df86-5776-b181-68564193d36",
                  "c46c8gc6-eg97-6887-c292-79675204e47"
              ]
          }

          response = requests.post(
              url,
              headers=headers,
              params=params,
              json=payload
          )

          response.raise_for_status()

          if response.content:
              print(response.json())
components:
  securitySchemes:
    JWT Authorization:
      name: Authorization
      in: header
      type: apiKey
      description: "Format in header: **Authorization: Bearer {token}**. \n\n Value
        example: Bearer xxxxx.yyyyy.zzzzz"
  schemas:
    Asset:
      type: object
      properties:
        name:
          type: string
          description: Name of asset
        code:
          type: string
          description: Utility field for the pipeline to identify the asset
        description:
          type: string
          description: Asset brief
        canceled:
          type: boolean
          default: 'False'
          description: True if the asset has been delete one time, False otherwise
        project_id:
          type: string
          format: UUID
          description: Project ID
        entity_type_id:
          type: string
          format: UUID
          description: Asset type ID
        source_id:
          type: string
          format: UUID
          description: Field used to set the episode_id
        preview_file_id:
          type: string
          format: UUID
          description: ID of preview file used as thumbnail
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
    AssetInstance:
      type: object
      properties:
        asset_id:
          type: string
          format: UUID
          description: Instantiated asset
        name:
          type: string
        number:
          type: integer
        description:
          type: string
        active:
          type: boolean
          default: 'True'
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        scene_id:
          type: string
          format: UUID
          description: Target scene
        target_asset_id:
          type: string
          format: UUID
          description: Use when instantiating an asset in an asset is required
    AssetType:
      type: object
      properties:
        name:
          type: string
    AttachmentFile:
      type: object
      properties:
        name:
          type: string
          description: Name of attachment file
        size:
          type: integer
          description: Size of attachment file
        extension:
          type: string
          description: Extension of attachment file
        mimetype:
          type: string
        comment_id:
          type: string
          format: UUID
          description: Comment to which the file is attached
    BuildJob:
      type: object
      properties:
        status:
          type: string
          description: Status of build job (running, failed, succeeded)
        job_type:
          type: string
          description: Type of build job (archive, movie)
        ended_at:
          type: string
          format: date-time
        playlist_id:
          type: string
          format: UUID
          description: Playlist ID
    Comment:
      type: object
      properties:
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        object_id:
          type: string
          format: UUID
          description: Unique ID of the commented model instance
        object_type:
          type: string
          description: Model type of the comment model instance
        text:
          type: string
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        replies:
          type: string
          format: json
          default: "[]"
        checklist:
          type: string
          format: json
        pinned:
          type: boolean
        task_status_id:
          type: string
          format: UUID
          description: Task status attached to comment
        person_id:
          type: string
          format: UUID
          description: The person who publishes the comment
        preview_file_id:
          type: string
          format: UUID
          description: ID of preview file used as thumbnail
    CustomAction:
      type: object
      properties:
        name:
          type: string
          description: Name of custom action
        url:
          type: string
        entity_type:
          type: string
          default: all
        is_ajax:
          type: boolean
          default: 'False'
          description: True if the custom action is ajax, False otherwise
    DataImportError:
      type: object
      properties:
        event_data:
          type: string
          format: json
          description: JSON field to add event data
        source:
          type: array
          items:
            type: string
            enum:
            - csv
            - shotgun
    DayOff:
      type: object
      properties:
        date:
          type: string
          format: date
        person_id:
          type: string
          format: UUID
          description: The person who will take the day off
    Department:
      type: object
      properties:
        name:
          type: string
          description: Name of department
        color:
          type: string
          description: Color of department
        archived:
          type: boolean
          description: True if the department is archived else False
    DesktopLoginLog:
      type: object
      properties:
        date:
          type: string
          format: date
        person_id:
          type: string
          format: UUID
          description: Person ID
    Episode:
      type: object
      properties:
        name:
          type: string
          description: Name of episode
        code:
          type: string
          description: Utility field for the pipeline to identify the episode
        description:
          type: string
          description: Episode brief
        canceled:
          type: boolean
          default: 'False'
          description: True if the episode has been delete one time, False otherwise
        project_id:
          type: string
          format: UUID
          description: Project ID
        source_id:
          type: string
          format: UUID
          description: Field used to set the episode_id
        preview_file_id:
          type: string
          format: UUID
          description: ID of preview file used as thumbnail
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
    Event:
      type: object
      properties:
        name:
          type: string
          description: Name of event
        user_id:
          type: string
          format: UUID
          description: The user who made the action that emitted the event
        project_id:
          type: string
          format: UUID
          description: Project ID
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
    FileStatus:
      type: object
      properties:
        name:
          type: string
        color:
          type: string
    LoginLog:
      type: object
      properties:
        origin:
          type: string
          description: web, script
        ip_address:
          type: string
          description: IP address of device used to login
        person_id:
          type: string
          format: UUID
          description: Person ID
    Metadata:
      type: object
      properties:
        project_id:
          type: string
          format: UUID
          description: ID of project for which metadata are added
        entity_type:
          type: string
          description: Asset or Shot
        name:
          type: string
          description: Field name for GUI
        field_name:
          type: string
          description: Technical field name
        choices:
          type: string
          format: json
          description: Array of string that represents the available values for this
            metadata (this metadata is considered as a free field if this array is
            empty)
        for_client:
          type: boolean
    Milestone:
      type: object
      properties:
        data:
          type: string
          format: date
          description: Milestone date of production schedule
        name:
          type: string
          description: Name of milestone
        task_type_id:
          type: string
          format: UUID
          description: Task type ID
        project_id:
          type: string
          format: UUID
          description: Project ID
    News:
      type: object
      properties:
        change:
          type: boolean
          default: 'False'
        author_id:
          type: string
          format: UUID
          description: Person who wrote the comment
        comment_id:
          type: string
          format: UUID
          description: Posted comment ID
        task_id:
          type: string
          format: UUID
          description: Task ID
        preview_file_id:
          type: string
          format: UUID
          description: Preview file ID
    Notification:
      type: object
      properties:
        read:
          type: boolean
          description: True if user read it, False otherwise
        change:
          type: boolean
          description: True if there is status change related to this status, False
            otherwise
        person_id:
          type: string
          format: UUID
          description: The user to who the notification is aimed at
        author_id:
          type: string
          format: UUID
          description: Author of the event to notify
        comment_id:
          type: string
          format: UUID
          description: Comment related to the notification, if there is any
        task_id:
          type: string
          format: UUID
          description: Task related to the notification, if there is any
        reply_id:
          type: string
          format: UUID
          description: Reply related to notification
        type:
          type: string
          description: Type of notification
    Organisation:
      type: object
      properties:
        name:
          type: string
          description: Name of organisation
        hours_by_day:
          type: float
        has_avatar:
          type: boolean
          default: 'False'
          description: True if the organisation has an avatar, False otherwise
        use_original_file_name:
          type: boolean
          default: 'False'
          description: True if the organisation uses original file names, False otherwise
        timesheets_locked:
          type: boolean
          default: 'False'
          description: True if the organisation's timesheets are locked, False otherwise
        hd_by_default:
          type: boolean
          default: 'False'
        chat_token_slack:
          type: string
        chat_webhook_mattermost:
          type: string
        chat_token_discord:
          type: string
    OutputFile:
      type: object
      properties:
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        name:
          type: string
          description: Name of output file
        extension:
          type: string
          description: Extension of output file
        description:
          type: string
          description: Output file brief
        comment:
          type: string
          description: Comment on output file
        revision:
          type: integer
          description: Revision number of output file
        size:
          type: integer
          description: Size of output file
        checksum:
          type: string
          description: Checksum of output file
        source:
          type: string
          description: Created by a script, a webgui or a desktop gui
        path:
          type: string
          description: File path on the production hard drive
        representation:
          type: string
          description: Precise what kind of output it is (abc, jpgs, pngs, etc.)
        nb_elements:
          type: integer
          default: '1'
          description: For image sequence
        canceled:
          type: boolean
        file_status_id:
          type: string
          format: UUID
          description: File status ID
        entity_id:
          type: string
          format: UUID
          description: Asset or Shot concerned by the output file
        asset_instance_id:
          type: string
          format: UUID
          description: Asset instance ID
        output_type_id:
          type: string
          format: UUID
          description: Type of output (geometry, cache, etc.)
        task_type_id:
          type: string
          format: UUID
          description: Task type related to this output file (modeling, animation,
            etc.)
        person_id:
          type: string
          format: UUID
          description: Author of the file
        source_file_id:
          type: string
          format: UUID
          description: Working file that led to create this output file
        temporal_entity_id:
          type: string
          format: UUID
          description: Shot, scene or sequence needed for output files related to
            an asset instance
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
    OutputType:
      type: object
      properties:
        name:
          type: string
        short_name:
          type: string
    Person:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          description: Serve as login
        phone:
          type: string
        active:
          type: boolean
          description: True if the person is still in the studio, False otherwise
        last_presence:
          type: string
          format: date
          description: Last time the person worked for the studio
        password:
          type: string
          format: byte
        desktop_login:
          type: string
          description: Login used on desktop
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        timezone:
          type: string
        locale:
          type: string
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        role:
          type: string
          default: user
        has_avatar:
          type: boolean
          default: 'False'
          description: True if user has an avatar, False otherwise
        notifications_enabled:
          type: boolean
        notifications_slack_enabled:
          type: boolean
        notifications_slack_userid:
          type: string
        notifications_mattermost_enabled:
          type: boolean
        notifications_mattermost_userid:
          type: string
        notifications_discord_enabled:
          type: boolean
        notifications_discord_userid:
          type: string
    Playlist:
      type: object
      properties:
        name:
          type: string
          description: Name of playlist
        shots:
          type: string
          format: json
          description: JSON field describing shot and preview listed in
        project_id:
          type: string
          format: UUID
          description: Project ID
        episode_id:
          type: string
          format: UUID
          description: Episode ID
        for_client:
          type: boolean
          default: 'False'
        for_entity:
          type: string
          default: shot
        is_for_all:
          type: boolean
          default: 'False'
        task_type_id:
          type: string
          format: UUID
          description: Task type ID
    PreviewFile:
      type: object
      properties:
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        name:
          type: string
          description: Name of preview file
        original_name:
          type: string
          description: Original name of preview file
        revision:
          type: integer
          default: '1'
          description: Revision number of preview file
        position:
          type: integer
          default: '1'
          description: Position of preview file
        extension:
          type: string
          description: Extension of preview file
        description:
          type: string
          description: Preview file brief
        path:
          type: string
          description: File path on the production hard drive
        source:
          type: string
          description: Created by a script, a webgui or a desktop gui
        file_size:
          type: integer
          default: '0'
          description: Size of output file
        comment:
          type: string
          description: Comment on output file
        checksum:
          type: string
          description: Checksum of output file
        representation:
          type: string
          description: Precise what kind of output it is (abc, jpgs, pngs, etc.)
        nb_elements:
          type: integer
          default: '1'
          description: For image sequence
        canceled:
          type: boolean
        file_status_id:
          type: string
          format: UUID
          description: File status ID
        entity_id:
          type: string
          format: UUID
          description: Asset or Shot concerned by the output file
        asset_instance_id:
          type: string
          format: UUID
          description: Asset instance ID
        output_type_id:
          type: string
          format: UUID
          description: Type of output (geometry, cache, etc.)
        task_type_id:
          type: string
          format: UUID
          description: Task type related to this output file (modeling, animation,
            etc.)
        person_id:
          type: string
          format: UUID
          description: Author of the file
        source_file_id:
          type: string
          format: UUID
          description: Working file that led to create this output file
        temporal_entity_id:
          type: string
          format: UUID
          description: Shot, scene or sequence needed for output files related to
            an asset instance
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
    Project:
      type: object
      properties:
        name:
          type: string
          description: Name of project
        code:
          type: string
          description: Utility field for the pipeline to identify the project
        description:
          type: string
          description: Project brief
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        file_tree:
          type: string
          format: json
          description: Templates to use to build file paths
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        project_status_id:
          type: string
          format: UUID
          description: Project status ID
        has_avatar:
          type: boolean
          default: 'False'
          description: True if the project has an avatar, False otherwise
        fps:
          type: string
          description: Frames per second
        ratio:
          type: string
        resolution:
          type: string
        production_type:
          type: string
          description: short, featurefilm or tvshow
          default: short
        end_date:
          type: string
          format: date
        start_date:
          type: string
          format: date
        man_days:
          type: integer
          description: Estimated number of working days to complete the project
        nb_episodes:
          type: integer
          default: '0'
        episode_span:
          type: integer
          default: '0'
        max_retakes:
          type: integer
          default: '0'
        is_clients_isolated:
          type: boolean
          default: 'False'
          description: True if the clients are isolated from the project, False otherwise
    ProjectStatus:
      type: object
      properties:
        name:
          type: string
        color:
          type: string
    ScheduleItem:
      type: object
      properties:
        start_date:
          type: string
          format: date
        end_date:
          type: string
          format: date
        man_days:
          type: integer
        project_id:
          type: string
          format: UUID
          description: Project ID
        task_type_id:
          type: string
          format: UUID
          description: Task type ID
        object_id:
          type: string
          format: UUID
          description: Object ID
    SearchFilter:
      type: object
      properties:
        list_type:
          type: string
          description: Type of list
        entity_type:
          type: string
          description: Type of entity
        name:
          type: string
          description: Name of search filter
        search_query:
          type: string
        person_id:
          type: string
          format: UUID
          description: Person ID
        project_id:
          type: string
          format: UUID
          description: Project ID
    Sequence:
      type: object
      properties:
        name:
          type: string
          description: Name of sequence
        code:
          type: string
          description: Utility field for the pipeline to identify the sequence
        description:
          type: string
          description: Sequence brief
        canceled:
          type: boolean
          default: 'False'
          description: True if the sequence has been delete one time, False otherwise
        project_id:
          type: string
          format: UUID
          description: Project ID
        parent_id:
          type: string
          format: UUID
          description: Episode ID
        source_id:
          type: string
          format: UUID
          description: Field used to set the episode_id
        preview_file_id:
          type: string
          format: UUID
          description: ID of preview file used as thumbnail
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
    Shot:
      type: object
      properties:
        name:
          type: string
          description: Name of shot
        code:
          type: string
          description: Utility field for the pipeline to identify the shot
        description:
          type: string
          description: Shot brief
        canceled:
          type: boolean
          default: 'False'
          description: True if the shot has been delete one time, False otherwise
        project_id:
          type: string
          format: UUID
          description: Project ID
        parent_id:
          type: string
          format: UUID
          description: Episode ID
        entity_type_id:
          type: string
          format: UUID
          description: Shot type ID
        source_id:
          type: string
          format: UUID
          description: Field used to set the episode_id
        preview_file_id:
          type: string
          format: UUID
          description: ID of preview file used as thumbnail
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
    Software:
      type: object
      properties:
        name:
          type: string
          description: Name of software
        short_name:
          type: string
          description: Short name of software
        file_extension:
          type: string
          description: Main extension used for this software's files
        secondary_extensions:
          type: string
          format: json
          description: Other extensions used for this software's files
    StatusAutomation:
      type: object
      properties:
        entity_type:
          type: string
          default: asset
        in_task_type_id:
          type: string
          format: UUID
          description: Task type ID
        in_task_status_id:
          type: string
          format: UUID
          description: Task status ID
        out_field_type:
          type: string
          description: Field type (status, ready_for)
        out_task_type_id:
          type: string
          format: UUID
          description: Task type ID
        out_task_status_id:
          type: string
          format: UUID
          description: Task status ID
    SubscriptionToNotifications:
      type: object
      properties:
        person_id:
          type: string
          format: UUID
          description: Person ID
        task_id:
          type: string
          format: UUID
          description: Task ID
        entity_id:
          type: string
          format: UUID
          description: Entity ID
        task_type_id:
          type: string
          format: UUID
          description: Task type ID
    Studio:
      type: object
      properties:
        name:
          type: string
          description: Name of studio
        color:
          type: string
          description: Color of studio
        archived:
          type: boolean
          description: True if the studio is archived else False
    Task:
      type: object
      properties:
        name:
          type: string
          description: Name of task
        description:
          type: string
          description: Task brief
        priority:
          type: integer
          default: '0'
          description: Priority of task
        duration:
          type: float
          default: '0'
          description: Duration of task
        estimation:
          type: float
          default: '0'
          description: Estimation of duration of task
        completion_rate:
          type: integer
          default: '0'
          description: Completion rate of task
        retake_count:
          type: integer
          default: '0'
          description: Retake count of task
        sort_order:
          type: integer
          default: '0'
          description: Sort order of task
        start_date:
          type: string
          format: date-time
        due_date:
          type: string
          format: date-time
        real_start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        last_comment_date:
          type: string
          format: date-time
        nb_assets_ready:
          type: integer
          default: '0'
          description: Number of assets ready
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        project_id:
          type: string
          format: UUID
          description: Project ID
        task_type_id:
          type: string
          format: UUID
          description: Task type ID
        task_status_id:
          type: string
          format: UUID
          description: Task status ID
        entity_id:
          type: string
          format: UUID
          description: Entity ID
        assigner_id:
          type: string
          format: UUID
          description: Person ID
    TaskStatus:
      type: object
      properties:
        name:
          type: string
          description: Name of task status
        short_name:
          type: string
          description: Short name of task status
        color:
          type: string
        is_done:
          type: boolean
          default: 'False'
          description: True if the task is done, False otherwise
        is_artist_allowed:
          type: boolean
          default: 'True'
          description: True if the artist is allowed, False otherwise
        is_client_allowed:
          type: boolean
          default: 'True'
          description: True if the client is allowed, False otherwise
        is_retake:
          type: boolean
          default: 'False'
          description: True if the task was retaken, False otherwise
        is_feedback_request:
          type: boolean
          default: 'False'
          description: True if feedback was requested, False otherwise
        is_default:
          type: boolean
          default: 'False'
          description: True if the task is default, False otherwise
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
    TaskType:
      type: object
      properties:
        name:
          type: string
          description: Name of task type
        short_name:
          type: string
          description: Short name of task type
        color:
          type: string
          default: "#FFFFFF"
        priority:
          type: integer
          default: '1'
          description: Priority of task type
        for_entity:
          type: string
          default: Asset
        allow_timelog:
          type: boolean
          default: 'True'
          description: True if timelog is allowed, False otherwise
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        department_id:
          type: string
          format: UUID
          description: Department ID
    TimeSpent:
      type: object
      properties:
        duration:
          type: float
        date:
          type: string
          format: date
        task_id:
          type: string
          format: UUID
          description: Related task ID
        person_id:
          type: string
          format: UUID
          description: The person who performed the working time
    WorkingFile:
      type: object
      properties:
        shotgun_id:
          type: integer
          description: Used for synchronization with a Shotgun instance
        name:
          type: string
          description: Name of working file
        description:
          type: string
          description: working file brief
        comment:
          type: string
          description: Comment on working file
        revision:
          type: integer
          description: Revision number of working file
        size:
          type: integer
          description: Size of working file
        checksum:
          type: string
          description: Checksum of working file
        path:
          type: string
          description: File path on the production hard drive
        data:
          type: string
          format: json
          description: Free JSON field to add metadata
        task_id:
          type: string
          format: UUID
          description: Task for which the working file is made
        entity_id:
          type: string
          format: UUID
          description: Entity for which the working is made
        person_id:
          type: string
          format: UUID
          description: Author of the file
        software_id:
          type: string
          format: UUID
          description: Software used to build this working file
openapi: 3.0.2
externalDocs:
  description: Read the installation documentation
  url: https://zou.cg-wire.com
host: localhost:8080
basePath: "/api"
schemes:
- http
- https
security:
- JWT Authorization: []
tags:
- name: Authentication
  description: User authentication, login, logout, and session management
- name: Assets
  description: |-
    Production asset management including 3D models, textures, and media files.

    ```json
    Asset {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of asset"
        },
        "code": {
          "type": "string",
          "description": "Utility field for the pipeline to identify the asset"
        },
        "description": {
          "type": "string",
          "description": "Asset brief"
        },
        "canceled": {
          "type": "boolean",
          "default": "False",
          "description": "True if the asset has been delete one time, False otherwise"
        },
        "project_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project ID"
        },
        "entity_type_id": {
          "type": "string",
          "format": "UUID",
          "description": "Asset type ID"
        },
        "source_id": {
          "type": "string",
          "format": "UUID",
          "description": "Field used to set the episode_id"
        },
        "preview_file_id": {
          "type": "string",
          "format": "UUID",
          "description": "ID of preview file used as thumbnail"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        }
      }
    }
    ```
- name: Breakdown
  description: Shot breakdown management and asset-to-shot relationships
- name: Chat
  description: Real-time messaging and communication features
- name: Comments
  description: |-
    Task comments, feedback, and collaboration tools.

    ```json
    Comment {
      "type": "object",
      "properties": {
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        },
        "object_id": {
          "type": "string",
          "format": "UUID",
          "description": "Unique ID of the commented model instance"
        },
        "object_type": {
          "type": "string",
          "description": "Model type of the comment model instance"
        },
        "text": {
          "type": "string"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "replies": {
          "type": "string",
          "format": "json",
          "default": "[]"
        },
        "checklist": {
          "type": "string",
          "format": "json"
        },
        "pinned": {
          "type": "boolean"
        },
        "task_status_id": {
          "type": "string",
          "format": "UUID",
          "description": "Task status attached to comment"
        },
        "person_id": {
          "type": "string",
          "format": "UUID",
          "description": "The person who publishes the comment"
        },
        "preview_file_id": {
          "type": "string",
          "format": "UUID",
          "description": "ID of preview file used as thumbnail"
        }
      }
    }
    ```
- name: Concepts
  description: Concept art and design asset management
- name: Crud
  description: Generic CRUD operations for various data models
- name: Departments
  description: |-
    Department management and organizational structure.

    ```json
    Department {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of department"
        },
        "color": {
          "type": "string",
          "description": "Color of department"
        },
        "archived": {
          "type": "boolean",
          "description": "True if the department is archived else False"
        }
      }
    }
    ```
- name: Edits
  description: Edit management for post-production workflows
- name: Entities
  description: Generic entity management and relationships
- name: Events
  description: |-
    Event streaming and real-time notifications.

    ```json
    Event {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of event"
        },
        "user_id": {
          "type": "string",
          "format": "UUID",
          "description": "The user who made the action that emitted the event"
        },
        "project_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project ID"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        }
      }
    }
    ```
- name: Export
  description: Data export functionality for reports and integrations
- name: Files
  description: File management, uploads, and storage operations
- name: Import
  description: Data import from external sources and file formats
- name: Index
  description: System status, health checks, and configuration
- name: News
  description: Production news feed and activity tracking
- name: Persons
  description: |-
    User and team member management.

    ```json
    Person {
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "description": "Serve as login"
        },
        "phone": {
          "type": "string"
        },
        "active": {
          "type": "boolean",
          "description": "True if the person is still in the studio, False otherwise"
        },
        "last_presence": {
          "type": "string",
          "format": "date",
          "description": "Last time the person worked for the studio"
        },
        "password": {
          "type": "string",
          "format": "byte"
        },
        "desktop_login": {
          "type": "string",
          "description": "Login used on desktop"
        },
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        },
        "timezone": {
          "type": "string"
        },
        "locale": {
          "type": "string"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "role": {
          "type": "string",
          "default": "user"
        },
        "has_avatar": {
          "type": "boolean",
          "default": "False",
          "description": "True if user has an avatar, False otherwise"
        },
        "notifications_enabled": {
          "type": "boolean"
        },
        "notifications_slack_enabled": {
          "type": "boolean"
        },
        "notifications_slack_userid": {
          "type": "string"
        },
        "notifications_mattermost_enabled": {
          "type": "boolean"
        },
        "notifications_mattermost_userid": {
          "type": "string"
        },
        "notifications_discord_enabled": {
          "type": "boolean"
        },
        "notifications_discord_userid": {
          "type": "string"
        }
      }
    }
    ```
- name: Playlists
  description: "Media playlists and review sessions. \n\n```json\nPlaylist {\n  \"type\":
    \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\",\n
    \     \"description\": \"Name of playlist\"\n    },\n    \"shots\": {\n      \"type\":
    \"string\",\n      \"format\": \"json\",\n      \"description\": \"JSON field
    describing shot and preview listed in\"\n    },\n    \"project_id\": {\n      \"type\":
    \"string\",\n      \"format\": \"UUID\",\n      \"description\": \"Project ID\"\n
    \   },\n    \"episode_id\": {\n      \"type\": \"string\",\n      \"format\":
    \"UUID\",\n      \"description\": \"Episode ID\"\n    },\n    \"for_client\":
    {\n      \"type\": \"boolean\",\n      \"default\": \"False\"\n    },\n    \"for_entity\":
    {\n      \"type\": \"string\",\n      \"default\": \"shot\"\n    },\n    \"is_for_all\":
    {\n      \"type\": \"boolean\",\n      \"default\": \"False\"\n    },\n    \"task_type_id\":
    {\n      \"type\": \"string\",\n      \"format\": \"UUID\",\n      \"description\":
    \"Task type ID\"\n    }\n  }\n}\n```"
- name: Previews
  description: "Preview generation and thumbnail management. \n\n```json\nPreviewFile
    {\n  \"type\": \"object\",\n  \"properties\": {\n    \"shotgun_id\": {\n      \"type\":
    \"integer\",\n      \"description\": \"Used for synchronization with a Shotgun
    instance\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"description\":
    \"Name of preview file\"\n    },\n    \"original_name\": {\n      \"type\": \"string\",\n
    \     \"description\": \"Original name of preview file\"\n    },\n    \"revision\":
    {\n      \"type\": \"integer\",\n      \"default\": \"1\",\n      \"description\":
    \"Revision number of preview file\"\n    },\n    \"position\": {\n      \"type\":
    \"integer\",\n      \"default\": \"1\",\n      \"description\": \"Position of
    preview file\"\n    },\n    \"extension\": {\n      \"type\": \"string\",\n      \"description\":
    \"Extension of preview file\"\n    },\n    \"description\": {\n      \"type\":
    \"string\",\n      \"description\": \"Preview file brief\"\n    },\n    \"path\":
    {\n      \"type\": \"string\",\n      \"description\": \"File path on the production
    hard drive\"\n    },\n    \"source\": {\n      \"type\": \"string\",\n      \"description\":
    \"Created by a script, a webgui or a desktop gui\"\n    },\n    \"file_size\":
    {\n      \"type\": \"integer\",\n      \"default\": \"0\",\n      \"description\":
    \"Size of output file\"\n    },\n    \"comment\": {\n      \"type\": \"string\",\n
    \     \"description\": \"Comment on output file\"\n    },\n    \"checksum\": {\n
    \     \"type\": \"string\",\n      \"description\": \"Checksum of output file\"\n
    \   },\n    \"representation\": {\n      \"type\": \"string\",\n      \"description\":
    \"Precise what kind of output it is (abc, jpgs, pngs, etc.)\"\n    },\n    \"nb_elements\":
    {\n      \"type\": \"integer\",\n      \"default\": \"1\",\n      \"description\":
    \"For image sequence\"\n    },\n    \"canceled\": {\n      \"type\": \"boolean\"\n
    \   },\n    \"file_status_id\": {\n      \"type\": \"string\",\n      \"format\":
    \"UUID\",\n      \"description\": \"File status ID\"\n    },\n    \"entity_id\":
    {\n      \"type\": \"string\",\n      \"format\": \"UUID\",\n      \"description\":
    \"Asset or Shot concerned by the output file\"\n    },\n    \"asset_instance_id\":
    {\n      \"type\": \"string\",\n      \"format\": \"UUID\",\n      \"description\":
    \"Asset instance ID\"\n    },\n    \"output_type_id\": {\n      \"type\": \"string\",\n
    \     \"format\": \"UUID\",\n      \"description\": \"Type of output (geometry,
    cache, etc.)\"\n    },\n    \"task_type_id\": {\n      \"type\": \"string\",\n
    \     \"format\": \"UUID\",\n      \"description\": \"Task type related to this
    output file (modeling, animation, etc.)\"\n    },\n    \"person_id\": {\n      \"type\":
    \"string\",\n      \"format\": \"UUID\",\n      \"description\": \"Author of the
    file\"\n    },\n    \"source_file_id\": {\n      \"type\": \"string\",\n      \"format\":
    \"UUID\",\n      \"description\": \"Working file that led to create this output
    file\"\n    },\n    \"temporal_entity_id\": {\n      \"type\": \"string\",\n      \"format\":
    \"UUID\",\n      \"description\": \"Shot, scene or sequence needed for output
    files related to an asset instance\"\n    },\n    \"data\": {\n      \"type\":
    \"string\",\n      \"format\": \"json\",\n      \"description\": \"Free JSON field
    to add metadata\"\n    }\n  }\n}\n```"
- name: Projects
  description: |-
    Project management and production organization.

    ```json
    Project {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of project"
        },
        "code": {
          "type": "string",
          "description": "Utility field for the pipeline to identify the project"
        },
        "description": {
          "type": "string",
          "description": "Project brief"
        },
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        },
        "file_tree": {
          "type": "string",
          "format": "json",
          "description": "Templates to use to build file paths"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "project_status_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project status ID"
        },
        "has_avatar": {
          "type": "boolean",
          "default": "False",
          "description": "True if the project has an avatar, False otherwise"
        },
        "fps": {
          "type": "string",
          "description": "Frames per second"
        },
        "ratio": {
          "type": "string"
        },
        "resolution": {
          "type": "string"
        },
        "production_type": {
          "type": "string",
          "description": "short, featurefilm or tvshow",
          "default": "short"
        },
        "end_date": {
          "type": "string",
          "format": "date"
        },
        "start_date": {
          "type": "string",
          "format": "date"
        },
        "man_days": {
          "type": "integer",
          "description": "Estimated number of working days to complete the project"
        },
        "nb_episodes": {
          "type": "integer",
          "default": "0"
        },
        "episode_span": {
          "type": "integer",
          "default": "0"
        },
        "max_retakes": {
          "type": "integer",
          "default": "0"
        },
        "is_clients_isolated": {
          "type": "boolean",
          "default": "False",
          "description": "True if the clients are isolated from the project, False otherwise"
        }
      }
    }
    ```
- name: Search
  description: |-
    Search functionality across all production data.

    ```json
    SearchFilter {
      "type": "object",
      "properties": {
        "list_type": {
          "type": "string",
          "description": "Type of list"
        },
        "entity_type": {
          "type": "string",
          "description": "Type of entity"
        },
        "name": {
          "type": "string",
          "description": "Name of search filter"
        },
        "search_query": {
          "type": "string"
        },
        "person_id": {
          "type": "string",
          "format": "UUID",
          "description": "Person ID"
        },
        "project_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project ID"
        }
      }
    }
    ```
- name: Shots
  description: |-
    Shot management, sequences, and episodes.

    ```json
    Shot {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of shot"
        },
        "code": {
          "type": "string",
          "description": "Utility field for the pipeline to identify the shot"
        },
        "description": {
          "type": "string",
          "description": "Shot brief"
        },
        "canceled": {
          "type": "boolean",
          "default": "False",
          "description": "True if the shot has been delete one time, False otherwise"
        },
        "project_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project ID"
        },
        "parent_id": {
          "type": "string",
          "format": "UUID",
          "description": "Episode ID"
        },
        "entity_type_id": {
          "type": "string",
          "format": "UUID",
          "description": "Shot type ID"
        },
        "source_id": {
          "type": "string",
          "format": "UUID",
          "description": "Field used to set the episode_id"
        },
        "preview_file_id": {
          "type": "string",
          "format": "UUID",
          "description": "ID of preview file used as thumbnail"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        }
      }
    }
    ```
- name: Tasks
  description: |-
    Task management, assignments, and progress tracking.

    ```json
    Task {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of task"
        },
        "description": {
          "type": "string",
          "description": "Task brief"
        },
        "priority": {
          "type": "integer",
          "default": "0",
          "description": "Priority of task"
        },
        "duration": {
          "type": "float",
          "default": "0",
          "description": "Duration of task"
        },
        "estimation": {
          "type": "float",
          "default": "0",
          "description": "Estimation of duration of task"
        },
        "completion_rate": {
          "type": "integer",
          "default": "0",
          "description": "Completion rate of task"
        },
        "retake_count": {
          "type": "integer",
          "default": "0",
          "description": "Retake count of task"
        },
        "sort_order": {
          "type": "integer",
          "default": "0",
          "description": "Sort order of task"
        },
        "start_date": {
          "type": "string",
          "format": "date-time"
        },
        "due_date": {
          "type": "string",
          "format": "date-time"
        },
        "real_start_date": {
          "type": "string",
          "format": "date-time"
        },
        "end_date": {
          "type": "string",
          "format": "date-time"
        },
        "last_comment_date": {
          "type": "string",
          "format": "date-time"
        },
        "nb_assets_ready": {
          "type": "integer",
          "default": "0",
          "description": "Number of assets ready"
        },
        "data": {
          "type": "string",
          "format": "json",
          "description": "Free JSON field to add metadata"
        },
        "shotgun_id": {
          "type": "integer",
          "description": "Used for synchronization with a Shotgun instance"
        },
        "project_id": {
          "type": "string",
          "format": "UUID",
          "description": "Project ID"
        },
        "task_type_id": {
          "type": "string",
          "format": "UUID",
          "description": "Task type ID"
        },
        "task_status_id": {
          "type": "string",
          "format": "UUID",
          "description": "Task status ID"
        },
        "entity_id": {
          "type": "string",
          "format": "UUID",
          "description": "Entity ID"
        },
        "assigner_id": {
          "type": "string",
          "format": "UUID",
          "description": "Person ID"
        }
      }
    }
    ```
- name: User
  description: User-specific data and personal workspace management
