openapi: 3.1.0
info:
  title: Karla API
  description: >
    The Karla API (version 1) provides programmatic access to the Karla
    platform. The API is organized around RESTful HTTP endpoints.


    # Getting started


    To get started with the Karla API, you'll need to:


    1. **Register an organization and shop** - [Sign up for a Karla
    account](https://portal.gokarla.io), create or join an organization and set
    up your first shop. Remember your `shop slug`, it will be required in all
    API URIs.

    2. **Obtain API credentials** - Generate an API key in the Settings section.

    3. **Set up authentication** - Use HTTP Basic Auth with your API
    credentials.

    4. **Make your first request** - Test the connection with a simple API call.

    5. **Explore the endpoints** - Use this documentation to understand
    available operations.


    ## Quick Start Example


    Here's a simple example to verify your API access:


    ```bash

    curl https://api.gokarla.io/v1/shops/your-shop-slug \
      -u your-username:your-private-api-key
    ```


    ## Base URL


    All API requests should be made to:


    ```text

    https://api.gokarla.io/v1/

    ```


    ## Request Format


    - **Content-Type**: `application/json`

    - **Accept**: `application/json`

    - **Encoding**: UTF-8


    ## Response Format


    All responses are returned in JSON format. Successful responses will have
    HTTP status codes in the 2xx range.


    ```json

    {
      "data": "...",
      "metadata": "..."
    }

    ```


    # Authentication


    The Karla API uses HTTP Basic Authentication to secure endpoints. Your
    username is the one you assigned to the API key (if not given, it defaults
    to the shop slug), and your password is the generated API key.


    ## How It Works


    HTTP Basic Authentication requires you to send credentials in the
    `Authorization` header with each request:


    ```text

    Authorization: Basic <base64-encoded-credentials>

    ```


    ## Creating the Authorization Header


    1. **Combine your credentials**: Join your username and API key with a colon

       ```text
       username:api-key
       ```

    2. **Base64 encode**: Convert the combined string to Base64

       ```javascript
       // JavaScript example
       const credentials = btoa("your-username:your-api-key");
       const authHeader = `Basic ${credentials}`;
       ```

       ```python
       # Python example
       import base64
       credentials = base64.b64encode(b'your-username:your-api-key').decode('utf-8')
       auth_header = f'Basic {credentials}'
       ```

    3. **Include in requests**: Add the header to your API calls

       ```javascript
       // JavaScript/Fetch example
       fetch("https://api.gokarla.io/v1/shops/your-shop-slug", {
         headers: {
           Authorization: `Basic ${credentials}`,
           "Content-Type": "application/json",
         },
       });
       ```

       ```python
       # Python/Requests example
       import requests
       response = requests.get(
         'https://api.gokarla.io/v1/shops/your-shop-slug',
         auth=('your-username', 'your-api-key')
       )
       ```

    ## Using cURL


    With cURL, you can use the `-u` flag which automatically handles the Base64
    encoding:


    ```bash

    curl https://api.gokarla.io/v1/shops/your-shop-slug \
      -u your-username:your-api-key
    ```


    ## API Key Permissions


    API keys can have different permission levels that control access to
    resources:


    | Role     | Description                             | Access
    Level                           |

    | -------- | --------------------------------------- |
    -------------------------------------- |

    | `viewer` | Read-only access to resources           | Can view orders,
    shipments, and data   |

    | `editor` | Read and write access to most resources | Can create/update
    orders and shipments |

    | `admin`  | Full access to all shop resources       | Can manage all shop
    settings and data  |


    ## Obtaining API Keys


    1. Log in to your [Karla Dashboard](https://portal.gokarla.io)

    2. Navigate to **Settings** → **API Keys**

    3. Select the appropriate permission level for your use case

    4. Click **Create API Key**

    5. Copy and securely store your credentials:
       - **Username**: Your merchant identifier
       - **API Key**: Your secret key (shown only once!)

    ## Error Responses


    Authentication errors return specific error codes:


    | Status Code | Error Key                 |
    Description                                     |

    | ----------- | ------------------------- |
    ----------------------------------------------- |

    | `400`       | `invalid_merchant_or_key` | Missing or malformed
    authentication credentials |

    | `401`       | `invalid_merchant_or_key` | Invalid username or API
    key                     |

    | `403`       | `insufficient_rights`     | Valid credentials but
    insufficient permissions  |


    ## Security Best Practices


    1. **Store credentials securely**

       - Use environment variables or secure key management systems
       - Never hardcode credentials in your source code
       - Never expose credentials in client-side applications

    2. **Implement proper error handling**

       - Handle authentication failures gracefully
       - Don't expose credential details in error messages
       - Implement retry logic with exponential backoff

    3. **Maintain credential hygiene**
       - Use HTTPS for all API requests (HTTP redirects automatically)
       - Rotate API keys regularly
       - Revoke unused or compromised keys immediately
       - Use the minimum required permission level

    # Errors


    The Karla API uses conventional HTTP response codes to indicate the success
    or failure of an API request. In general:


    - Codes in the `2xx` range indicate success

    - Codes in the `4xx` range indicate an error that failed given the
    information provided (e.g., a required parameter was omitted, an order
    doesn't exist, etc.)

    - Codes in the `5xx` range indicate an error with Karla's servers


    ## Error Response Format


    All error responses follow a consistent structure:


    ```json

    {
      "key": "shop_not_found",
      "message": "Unable to find shop",
      "type": "invalid_request_error",
      "errors": []
    }

    ```


    ## Error Object Properties


    | Property  | Type   |
    Description                                                                           
    |

    | --------- | ------ |
    --------------------------------------------------------------------------------------
    |

    | `key`     | string | A unique error code identifying the specific error.
    See below for all possible values. |

    | `message` | string | A human-readable message providing more details about
    the error.                       |

    | `type`    | string | The type of error returned. Either `api_error` or
    `invalid_request_error`.             |

    | `errors`  | array  | For validation errors (422), contains detailed
    field-level error information.          |


    ## Possible Error Keys


    The API returns specific error keys that help identify the exact issue:


    ### Client Errors (4xx)


    | Error Key                         |
    Description                                                      | HTTP
    Status |

    | --------------------------------- |
    ---------------------------------------------------------------- |
    ----------- |

    | `a_b_test_not_found`              | The requested A/B test was not
    found                             | 404         |

    | `a_b_test_overlap`                | An A/B test with the same segment and
    time period already exists | 409         |

    | `announcement_exists`             | An announcement with that ID already
    exists                      | 409         |

    | `announcement_not_found`          | The requested announcement was not
    found                         | 404         |

    | `campaign_active_segment_exists`  | An active campaign for the same
    segment already exists           | 409         |

    | `campaign_exists`                 | A campaign with that ID already
    exists                           | 409         |

    | `campaign_not_found`              | The requested campaign was not
    found                             | 404         |

    | `campaign_product_not_found`      | The requested campaign product was not
    found                     | 404         |

    | `campaign_type_invalid`           | Invalid campaign type
    provided                                   | 422         |

    | `carrier_reference_invalid`       | Invalid carrier reference
    provided                               | 422         |

    | `deal_not_found`                  | The requested deal was not
    found                                 | 404         |

    | `discount_exists`                 | A discount with that ID already
    exists                           | 409         |

    | `discount_not_found`              | The requested discount was not
    found                             | 404         |

    | `image_media_unsupported`         | Uploaded image format is not
    supported                           | 415         |

    | `invalid_payload`                 | Request validation error (check
    `errors` array for details)      | 422         |

    | `klaviyo_key_missing_permissions` | Klaviyo API key lacks required
    permissions                       | 400         |

    | `klaviyo_key_not_found`           | Klaviyo key not configured for this
    shop                         | 404         |

    | `order_exists`                    | An order with that ID already
    exists                             | 409         |

    | `order_not_found`                 | The requested order was not
    found                                | 404         |

    | `org_exists`                      | An organization with that ID already
    exists                      | 409         |

    | `org_not_found`                   | The requested organization was not
    found                         | 404         |

    | `permission_denied`               | User doesn't have permission for this
    operation                  | 403         |

    | `shipment_exists`                 | A shipment with that ID already
    exists                           | 409         |

    | `shipment_not_found`              | The requested shipment was not
    found                             | 404         |

    | `shop_exists`                     | A shop with that ID already
    exists                               | 409         |

    | `shop_fixtures_not_found`         | Shop fixtures need to be created
    first                           | 404         |

    | `shop_not_found`                  | The requested shop was not
    found                                 | 404         |

    | `shop_settings_not_found`         | Shop settings were not
    found                                     | 404         |

    | `user_exists`                     | A user with that email already
    exists                            | 409         |

    | `user_not_found`                  | The requested user was not
    found                                 | 404         |

    | `webhook_exists`                  | A webhook with that configuration
    already exists                 | 409         |

    | `webhook_not_found`               | The requested webhook was not
    found                              | 404         |

    | `zip_code_invalid`                | Invalid zip code
    provided                                        | 422         |


    #### Server Errors (5xx)


    | Error Key                 |
    Description                                        | HTTP Status |

    | ------------------------- |
    -------------------------------------------------- | ----------- |

    | `bad_gateway`             | Third-party service returned an unexpected
    error   | 502         |

    | `service_not_implemented` | The requested functionality is not yet
    implemented | 501         |

    | `unexpected`              | An unexpected error occurred on Karla's
    servers    | 500         |


    ## Validation Errors (422)


    When a request fails validation, the API returns a 422 status code with
    additional details in the `errors` array:


    ```json

    {
      "key": "invalid_payload",
      "message": "Validation error",
      "type": "invalid_request_error",
      "errors": [
        {
          "loc": ["body", "email"],
          "msg": "field required",
          "type": "missing"
        }
      ]
    }

    ```


    Each validation error includes:


    - `loc`: The location of the error (e.g., `["body", "email"]` for a missing
    email field in the request body)

    - `msg`: A human-readable error message

    - `type`: The type of validation error (e.g., `missing`, `value_error`,
    `type_error`)


    # Localization


    The API supports multiple languages and delivers localized content based on
    the Accept-Language header provided in HTTP requests. This ensures that
    responses are tailored to the individual language preferences of each user.


    ## Examples


    ### Single Language


    ```http

    Accept-Language: es

    ```


    ### With Locale


    ```http

    Accept-Language: en-GB

    ```


    ### Multiple Languages with Preferences


    ```http

    Accept-Language: fr-CA, fr;q=0.8, en;q=0.5

    ```


    # Pagination


    The Karla API uses page-based pagination for endpoints that return
    collections of resources. This provides a simple and intuitive way to
    navigate through large datasets.


    ## Query Parameters


    Paginated endpoints accept the following query parameters:


    | Parameter  | Type    | Default | Description                        |
    Constraints |

    | ---------- | ------- | ------- | ---------------------------------- |
    ----------- |

    | `page`     | integer | 1       | The page number to retrieve        | Must
    be > 0 |

    | `per_page` | integer | 30      | Number of items to return per page |
    1-100 items |


    ## Example Request


    ```bash

    curl https://api.gokarla.io/v1/shops/your-shop/orders?page=2&per_page=50 \
      -u your-username:your-private-api-key
    ```


    ## Response Format


    Paginated responses return an array of items:


    ```json

    [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "order_number": "ORD-2024-001",
        "created_at": "2024-01-15T10:30:00Z"
      },
      {
        "id": "123e4567-e89b-12d3-a456-426614174001",
        "order_number": "ORD-2024-002",
        "created_at": "2024-01-15T11:00:00Z"
      }
    ]

    ```


    ## Best Practices


    1. **Choose appropriate page sizes** - Larger pages reduce requests but
    increase response time

    2. **Handle empty results** - The last page may contain fewer items than
    `per_page`

    3. **Respect rate limits** - Pagination doesn't exempt you from rate
    limiting

    4. **Cache when possible** - Results from earlier pages are unlikely to
    change frequently


    # Versioning


    When backwards-incompatible changes are made to the API, we release a new,
    dated version. GoKarla uses a date-based versioning scheme to ensure a
    predictable and stable API experience for developers.


    ## Version Format


    API versions are named for the date of their release. For example, the API
    version `2024-01-05` was released on `Fri, 5 Jan 2024`.


    ## How to Specify a Version


    You can configure your API version with the `Karla-Version` header. As a
    precaution, use API versioning to test a new API version before committing
    to an upgrade.


    ```jsx title="Request with Version Header"

    curl https://api.gokarla.io/v1/shops/your-shop/campaigns \
      -u your-username:your-private-api-key \
      -H "Karla-Version: 2024-01-05"
    ```


    ## Default Behavior


    Requests without the `Karla-Version` header, or with an invalid version,
    will default to use the latest stable version. This ensures backward
    compatibility while allowing developers to opt into specific versions when
    needed.


    ## Major Version Changes


    For significant architectural changes, the base URL path will be updated:


    - Current: `/v1/`

    - Future: `/v2/`


    Major version changes are rare and will be communicated well in advance with
    comprehensive migration guides and at least 1 year of deprecation notice.
  version: 1.0.0
paths:
  /v1/shops/{slug}/ab-tests:
    post:
      tags:
        - ABTest
      summary: Create A/B Test
      description: |-
        Create a new A/B test for campaign optimization.

            This endpoint allows to create A/B tests to experiment with different
            campaign variants and measure their performance.
      operationId: v1.ab_tests.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The shop's unique identifier
            title: Slug
          description: The shop's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ABTestCreationDTO'
              description: AB test creation payload.
      responses:
        '200':
          description: Successfully created an AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find a campaign related to the given AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The resource already exists or has conflicting information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - ABTest
      summary: List Ab Tests
      description: List all AB tests for a shop.
      operationId: v1.ab_tests.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The shop's unique identifier
            title: Slug
          description: The shop's unique identifier
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
      responses:
        '200':
          description: Successfully listed AB tests
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ABTestResponseDTO-Input'
                title: Response 200 V1.Ab Tests.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/ab-tests/{uuid}:
    get:
      tags:
        - ABTest
      summary: Get A/B Test Details
      description: |-
        Retrieve detailed information about a specific A/B test.

            **Required permissions**: SuperAdmin role
      operationId: v1.ab_tests.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The shop's unique identifier
            title: Slug
          description: The shop's unique identifier
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The AB test's unique identifier
            title: Uuid
          description: The AB test's unique identifier
      responses:
        '200':
          description: Successfully retrieved AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponseDTO-Input'
                nullable: true
                title: Response V1.Ab Tests.Get
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/ab-tests/{uuid}/end-test:
    post:
      tags:
        - ABTest
      summary: End A/B Test
      description: |-
        End an active A/B test and finalize the results.

            This action will stop assigning new users to test variants and mark
            the test as completed.
      operationId: v1.ab_tests.end-test
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The shop's unique identifier
            title: Slug
          description: The shop's unique identifier
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The AB test's unique identifier
            title: Uuid
          description: The AB test's unique identifier
      responses:
        '200':
          description: Successfully ended AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponseDTO-Input'
                nullable: true
                title: Response V1.Ab Tests.End-Test
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the AB test
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/announcements:
    post:
      tags:
        - Announcement
      summary: Create Announcement
      description: Create an announcement if it does not exist.
      operationId: v1.announcements.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnouncementCreationDTO'
              description: Announcement creation payload.
      responses:
        '200':
          description: Successfully created an announcement
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the announcement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Announcement
      summary: Search Announcements
      description: Search all announcements or based on some values to filter.
      operationId: v1.announcements.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: uuid
          in: query
          required: true
          schema:
            type: string
            format: uuid
            title: Uuid
        - name: text
          in: query
          required: true
          schema:
            type: string
            title: Text
        - name: language
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/LanguageEnum'
            nullable: true
            title: Language
      responses:
        '200':
          description: Successfully retrieved announcements
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnnouncementDetailDTO'
                title: Response 200 V1.Announcements.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the announcement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/announcements/{uuid}:
    delete:
      tags:
        - Announcement
      summary: Delete Announcement
      description: Delete an announcement that already exists.
      operationId: v1.announcements.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The announcement's unique identifier
            title: Uuid
          description: The announcement's unique identifier
      responses:
        '200':
          description: Successfully deleted an announcement
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Announcement
      summary: Update Announcement
      description: Update an announcement partially or completely.
      operationId: v1.announcements.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The announcement's unique identifier
            title: Uuid
          description: The announcement's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnouncementUpdateDTO'
              description: Announcement update payload.
      responses:
        '200':
          description: Successfully updated an announcement
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/campaigns:
    post:
      tags:
        - Campaign
      summary: Create Campaign
      description: Create a campaign if it does not exist.
      operationId: v1.campaigns.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignRequestDTO'
              description: Campaign creation payload.
      responses:
        '200':
          description: Successfully created a campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The resource already exists or has conflicting information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Campaign
      summary: Search Campaigns
      description: Search all campaigns or based on some values to filter.
      operationId: v1.campaigns.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: uuid
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Uuid
        - name: name
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Name
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
            nullable: true
            title: Start Date
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
            nullable: true
            title: End Date
        - name: segment
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Segment
        - name: promotion_type
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PromotionType'
            nullable: true
            title: Promotion Type
        - name: enabled
          in: query
          required: false
          schema:
            type: boolean
            nullable: true
            title: Enabled
      responses:
        '200':
          description: Successfully retrieved campaigns
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CampaignResponseDTO-Input'
                title: Response 200 V1.Campaigns.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/campaigns/{uuid}:
    delete:
      tags:
        - Campaign
      summary: Delete Campaign
      description: Delete a campaign that already exists.
      operationId: v1.campaigns.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The campaign's unique identifier
            title: Uuid
          description: The campaign's unique identifier
      responses:
        '200':
          description: Successfully deleted a campaign
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response V1.Campaigns.Delete
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Campaign
      summary: Update Campaign
      description: Update a campaign completely.
      operationId: v1.campaigns.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The campaign's unique identifier
            title: Uuid
          description: The campaign's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignRequestDTO'
              description: Campaign update payload.
      responses:
        '200':
          description: Successfully updated a campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/campaigns/order/{order_number}:
    get:
      tags:
        - Campaign
      summary: Get Campaign By Order Number
      description: Get campaigns for an order by order number.
      operationId: v1.campaigns.order.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: order_number
          in: path
          required: true
          schema:
            type: string
            description: The order's unique identifier
            title: Order Number
          description: The order's unique identifier
      responses:
        '200':
          description: Successfully retrieved campaigns for order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderCampaignsDTO-Input'
                nullable: true
                title: Response V1.Campaigns.Order.Get
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find campaigns related to the given order
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/claims:
    post:
      tags:
        - Claim
      summary: Create Claim
      description: Create a claim if it does not exist.
      operationId: v1.claims.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimCreationDTO'
              description: Claim creation payload.
      responses:
        '200':
          description: Successfully created a claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The resource already exists or has conflicting information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Claim
      summary: Search Claims
      description: Search all claims or based on some values to filter.
      operationId: v1.claims.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: order_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Order Id
        - name: shipment_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Shipment Id
        - name: resolution_preference
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ClaimResolutionPreference'
            nullable: true
            title: Resolution Preference
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ClaimStatus'
            nullable: true
            title: Status
        - name: reason
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ClaimReason'
            nullable: true
            title: Reason
        - name: created_from
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Created From
        - name: created_to
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Created To
        - name: updated_from
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Updated From
        - name: updated_to
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Updated To
        - name: sort
          in: query
          required: false
          schema:
            type: string
            default: '-created_at'
            title: Sort
      responses:
        '200':
          description: Paginated list of claims matching the search criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimsPaginatedResponse-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/claims/{uuid}:
    get:
      tags:
        - Claim
      summary: Get Claim
      description: Get a single claim by its unique identifier.
      operationId: v1.claims.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The claim's unique identifier
            title: Uuid
          description: The claim's unique identifier
      responses:
        '200':
          description: Successfully retrieved a claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Claim
      summary: Delete Claim
      description: Delete a claim that already exists.
      operationId: v1.claims.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The claim's unique identifier
            title: Uuid
          description: The claim's unique identifier
      responses:
        '200':
          description: Successfully deleted a claim
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response V1.Claims.Delete
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Claim
      summary: Update Claim
      description: Modify an existing claim.
      operationId: v1.claims.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The claim's unique identifier
            title: Uuid
          description: The claim's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimUpdateDTO'
              description: Claim update payload.
      responses:
        '200':
          description: Successfully updated a claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find the claim
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/deals:
    get:
      tags:
        - Deal
      summary: List Deals
      description: List all deals.
      operationId: v1.deals.list
      security:
        - HTTPBasic: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
      responses:
        '200':
          description: Successfully retrieved deals
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DealDTO-Input'
                title: Response 200 V1.Deals.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/deals:
    get:
      tags:
        - Deal
      summary: List Shop Deals
      description: List all deals for a shop.
      operationId: v1.deals.shop.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
      responses:
        '200':
          description: Successfully retrieved deals
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DealDetailDTO-Input'
                title: Response 200 V1.Deals.Shop.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Shop not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Deal
      summary: Create Deal
      description: Create a deal for a shop.
      operationId: v1.deals.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDealDTO'
      responses:
        '200':
          description: Successfully created deal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealDetailDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Shop not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/deals/{deal_id}:
    patch:
      tags:
        - Deal
      summary: Update Deal
      description: Update a deal for a shop.
      operationId: v1.deals.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: deal_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the deal
            title: Deal Id
          description: The ID of the deal
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDealDTO'
      responses:
        '200':
          description: Successfully updated deal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealDetailDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Deal not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Deal
      summary: Delete Deal
      description: Delete a deal for a shop.
      operationId: v1.deals.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: deal_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the deal
            title: Deal Id
          description: The ID of the deal
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted deal
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Deal not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/discounts:
    post:
      tags:
        - Discount
      summary: Create Discount
      description: Create a discount if it does not exist.
      operationId: v1.discounts.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscountCreationDTO'
              description: Discount creation payload.
      responses:
        '200':
          description: Successfully created a discount
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the discount
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The resource already exists or has conflicting information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Discount
      summary: Search Discounts
      description: Search all discounts or based on some values to filter.
      operationId: v1.discounts.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: code
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Code
        - name: target_selection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/DiscountTargetSelectionEnum'
            nullable: true
            title: Target Selection
        - name: target_type
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/DiscountTargetTypeEnum'
            nullable: true
            title: Target Type
        - name: title
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Title
        - name: value_type
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/DiscountValueTypeEnum'
            nullable: true
            title: Value Type
        - name: value
          in: query
          required: false
          schema:
            type: number
            nullable: true
            title: Value
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: uuid
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Uuid
        - name: type
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/DiscountTypeEnum'
            nullable: true
            title: Type
      responses:
        '200':
          description: Successfully retrieved discounts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscountResponseDTO'
                title: Response 200 V1.Discounts.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the discount
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/discounts/{uuid}:
    delete:
      tags:
        - Discount
      summary: Delete Discount
      description: Delete a discount that already exists.
      operationId: v1.discounts.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The discount's unique identifier
            title: Uuid
          description: The discount's unique identifier
      responses:
        '200':
          description: Successfully deleted a discount
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Discount
      summary: Update Discount
      description: Update a discount partially or completely.
      operationId: v1.discounts.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The discount's unique identifier
            title: Uuid
          description: The discount's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscountUpdateDTO'
              description: Discount update payload.
      responses:
        '200':
          description: Successfully updated a discount
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders:
    get:
      tags:
        - Order
      summary: Search Orders
      description: |-
        Search and filter orders for a specific shop.

            This endpoint supports various filters including order status, date ranges,
            customer information, and more. Results are paginated.
      operationId: v1.orders.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: email_id
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Email Id
        - name: external_id
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: External Id
        - name: order_name
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Order Name
        - name: order_number
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Order Number
        - name: uuid
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Uuid
        - name: zip_code
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Zip Code
        - name: order_placed_from
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Order Placed From
        - name: order_placed_to
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Order Placed To
        - name: shipment_updated_since
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Shipment Updated Since
      responses:
        '200':
          description: List of orders that match the search criteria
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderDetailDTO-Input'
                title: Response 200 V1.Orders.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Order
      summary: Place Order
      description: |-
        Create a new order for the shop.

            This endpoint handles order placement from your e-commerce platform.
            The order will be validated, processed, and appropriate shipments will be created.
      operationId: v1.orders.placement
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderPlacementDTO'
              description: Order placement information.
      responses:
        '200':
          description: Successfully placed an order
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: Order with unique id already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Order
      summary: Upsert Order
      description: Process a shop order upsert.
      operationId: v1.orders.upsert
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderFulfillmentDTO'
              description: Order creation/update and tracking fulfillment information.
      responses:
        '200':
          description: Successfully created or updated a single order
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Order not found when trying to update (no order provided)
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders/{order_id}:
    patch:
      tags:
        - Order
      summary: Update Order
      description: Process a shop order update.
      operationId: v1.orders.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: order_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The id given by Karla identifying the order
            title: Order Id
          description: The id given by Karla identifying the order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdateDTO'
              description: Order update information.
      responses:
        '200':
          description: Successfully updated an order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetailDTO-Output'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders/{order_id}/shipments/{shipment_id}:
    patch:
      tags:
        - Order
      summary: Update Order Shipment
      description: Process a shop order shipment update.
      operationId: v1.orders.shipments.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: order_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The id given by Karla identifying the order
            title: Order Id
          description: The id given by Karla identifying the order
        - name: shipment_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The id given by Karla identifying the tracking from the order
            title: Shipment Id
          description: The id given by Karla identifying the tracking from the order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderTrackingUpdateDTO'
              description: Shipment update information.
      responses:
        '200':
          description: Successfully updated an order shipment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingDTO-Output'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders/analytics:
    put:
      tags:
        - Order
      summary: Upsert Order Analytics
      description: |-
        Upsert Karla tracking analytics data for an order.

            Uses PUT semantics: all Karla tracking fields (source, campaign, medium,
            landing_url, landing_path, referrer, captured_at, reference_order_id) are
            **fully overwritten** on every call, including with null values.
            Non-Karla fields (e.g. landing_site, note_attributes from Shopify)
            are preserved.

            This means values previously set via Shopify note_attributes or the
            PUT orders endpoint will be overwritten if not included in the payload.

            The order can be identified by UUID, order number, or external ID
            using the id and id_type fields in the request body.
      operationId: v1.orders.analytics.upsert
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderAnalyticsDTO'
              description: Karla tracking analytics data to upsert.
      responses:
        '200':
          description: Successfully upserted order analytics
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Shop or order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders/bulk:
    put:
      tags:
        - Order
      summary: Fulfill Orders
      description: Process a shop order fulfillment in bulk (via shop slug).
      operationId: v1.orders.fulfillment.bulk
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/OrderFulfillmentDTO'
              description: Order fulfillment information to process in bulk.
              title: Order Fulfillments
      responses:
        '200':
          description: Successfully processed order fulfillments operation
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/orders/{order_identifier}/shipments/{tracking_number}:
    delete:
      tags:
        - Order
      summary: Delete Shipment from Order
      description: |-
        Delete a shipment from an order by tracking number.

            The order can be identified by UUID, order number, or external ID.
      operationId: v1.orders.shipments.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: order_identifier
          in: path
          required: true
          schema:
            type: string
            description: The order identifier (UUID, order number, or external ID)
            title: Order Identifier
          description: The order identifier (UUID, order number, or external ID)
        - name: tracking_number
          in: path
          required: true
          schema:
            type: string
            description: The tracking number of the shipment to delete
            title: Tracking Number
          description: The tracking number of the shipment to delete
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted shipment
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find order or shipment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/orgs/{slug}:
    get:
      tags:
        - Organization
      summary: Get Org
      description: Search for shop orders (and its trackings if any) based on filters.
      operationId: v1.orgs.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the org
            title: Slug
          description: The slug identifying the org
      responses:
        '200':
          description: Get your current organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgDTO-Output'
                type: array
                items:
                  $ref: '#/components/schemas/UserDTO-Input'
                title: Response 200 V1.Orgs.Get
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/orgs/{slug}/members:
    get:
      tags:
        - Organization
      summary: Search Org Members
      description: Search for shop orders (and its trackings if any) based on filters.
      operationId: v1.orgs.members.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the org
            title: Slug
          description: The slug identifying the org
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
      responses:
        '200':
          description: List of org members that matches the search criteria
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDTO-Input'
                title: Response 200 V1.Orgs.Members.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/orgs/{slug}/invite:
    post:
      tags:
        - Organization
      summary: Invite User To Org
      description: Invite a user to an organization.
      operationId: v1.orgs.invite
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgUserInviteCreationDTO'
              description: The user to invite
      responses:
        '200':
          description: Successfully invited user to organization
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/products:
    get:
      tags:
        - Product
      summary: List Shop Products
      description: |-
        List all product variants for a shop with pagination.

            Returns a simple list of products.
      operationId: v1.shops.products.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: title
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Title
        - name: product_id
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Product Id
        - name: sku
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Sku
      responses:
        '200':
          description: Products retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ShopProductDTO-Input'
                title: Response 200 V1.Shops.Products.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Product
      summary: Bulk Upsert Product Variants
      description: |-
        Create or update multiple product variants in bulk.

            This endpoint accepts a list of product variants and upserts them.
            If a variant already exists (matched by product_id + variant_id),
            it will be updated. Otherwise, a new variant will be created.
      operationId: v1.products.bulk_upsert
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ShopProductUpsertRequestDTO'
              minItems: 1
              description: Product variants to upsert
              title: Variants
      responses:
        '200':
          description: Product variants upserted successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ShopProductDTO-Input'
                title: Response 200 V1.Products.Bulk Upsert
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/products/{product_id}/variants/{variant_id}:
    get:
      tags:
        - Product
      summary: Get Product Variant
      description: |-
        Get a single product variant by its product ID and variant ID.

            Both IDs come from your shop provider (Shopify, Shopware, etc.).
      operationId: v1.products.get_variant
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: product_id
          in: path
          required: true
          schema:
            type: string
            description: Product ID from the shop provider
            title: Product Id
          description: Product ID from the shop provider
        - name: variant_id
          in: path
          required: true
          schema:
            type: string
            description: Variant ID from the shop provider
            title: Variant Id
          description: Variant ID from the shop provider
      responses:
        '200':
          description: Product variant retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopProductDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop or variant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Product
      summary: Upsert Product Variant
      description: |-
        Create or update a single product variant.

            This endpoint uses PUT semantics: it will create the variant if it doesn't exist,
            or replace it entirely if it does. This operation is idempotent.

            The product_id and variant_id are provided in the URL path,
            not in the request body, following RESTful design principles.
      operationId: v1.products.upsert_variant
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: product_id
          in: path
          required: true
          schema:
            type: string
            description: Product ID from the shop provider
            title: Product Id
          description: Product ID from the shop provider
        - name: variant_id
          in: path
          required: true
          schema:
            type: string
            description: Variant ID from the shop provider
            title: Variant Id
          description: Variant ID from the shop provider
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopProductVariantUpdateDTO'
              description: Product variant data (IDs come from URL path)
      responses:
        '200':
          description: Product variant upserted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopProductDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Product
      summary: Delete Product Variant
      description: |-
        Delete a single product variant.

            This deletes only the specific variant, not the entire product or other variants.
      operationId: v1.products.delete_variant
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: product_id
          in: path
          required: true
          schema:
            type: string
            description: Product ID from the shop provider
            title: Product Id
          description: Product ID from the shop provider
        - name: variant_id
          in: path
          required: true
          schema:
            type: string
            description: Variant ID from the shop provider
            title: Variant Id
          description: Variant ID from the shop provider
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Product variant deleted successfully
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/products/{product_id}:
    delete:
      tags:
        - Product
      summary: Delete Product and All Variants
      description: |-
        Delete a product and all its variants by product ID.

            This is a cascade delete operation that removes the parent product
            and all associated variants.
      operationId: v1.products.delete_product
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: product_id
          in: path
          required: true
          schema:
            type: string
            description: Product ID from the shop provider
            title: Product Id
          description: Product ID from the shop provider
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Product deleted successfully
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/products/{product_id}/recommendations:
    get:
      tags:
        - Product
      summary: Get Product Recommendations
      description: |-
        Get product recommendations for a specific product.

            This endpoint returns recommended products based on the given product ID.
            The recommendations are retrieved from the shop provider (e.g., Shopify).
      operationId: v1.shops.products.recommendations
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: product_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the product to get recommendations for
            title: Product Id
          description: The ID of the product to get recommendations for
      responses:
        '200':
          description: Product recommendations retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyRecommendationsResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shipments:
    get:
      tags:
        - Shipment
      summary: Search Shipments
      description: |-
        Search and filter shipments for a specific shop.

            This endpoint supports filtering by tracking number, date ranges,
            and sorting. Results are paginated with a default 30-day lookback window.

            **Important**: The `updated_from` filter has a maximum lookback of 90 days.
            If not specified, it defaults to 30 days ago.
      operationId: v1.shipments.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: tracking_number
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Tracking Number
        - name: updated_from
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Updated From
        - name: updated_to
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Updated To
        - name: created_from
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Created From
        - name: created_to
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Created To
        - name: sort
          in: query
          required: false
          schema:
            type: string
            default: '-updated_at'
            title: Sort
        - name: include_drafts
          in: query
          required: false
          schema:
            type: boolean
            default: true
            title: Include Drafts
      responses:
        '200':
          description: Paginated list of shipments matching the search criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsPaginatedResponse'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Shipment
      summary: Create Shipment
      description: |-
        Create a new shipment for an existing order.

            This endpoint supports two modes:

            **Fulfilled Shipment** (with `tracking_number`):
            Creates a shipment with tracking information that will be submitted to
            aggregators for tracking updates. Triggers an `ORDER_PROCESSED` event.

            **Draft Shipment** (without `tracking_number`):
            Creates a placeholder shipment without tracking. Use this when you know
            an order will be split into multiple shipments but don't have tracking yet.
            Triggers an `ORDER_CREATED` event. Call this endpoint multiple times to
            create multiple draft shipments.

            **Order Identification**: Use `order_id` with `order_id_type` to specify
            which order the shipment belongs to:
            - `uuid`: Karla's internal order UUID
            - `external_id`: External platform order ID (e.g., Shopify order ID)
            - `order_number`: Merchant-visible order number
            - `order_name`: Platform-specific order name (e.g., Shopify's F-2025-31066)

            **Carrier Detection**: If `carrier_reference` is not provided, the carrier
            will be automatically detected from the tracking number pattern.
      operationId: v1.shipments.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateShipmentRequestDTO'
              description: Shipment creation data
      responses:
        '200':
          description: Successfully processed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentResponseDTO-Output'
        '201':
          description: Successfully created shipment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentResponseDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shipments/events:
    post:
      tags:
        - Shipment
      summary: Create Shipment Event
      description: |-
        Create a new event for a shipment, identified by a reference field.

            The shipment is resolved using the `id` and `id_type` fields in the
            request body. Supported reference types: `tracking_number` (default),
            `shipment_uuid`, `external_shipment_id`, `order_number`,
            `external_order_id`, `order_uuid`.

            **Order-based lookups** (`order_number`, `external_order_id`, `order_uuid`)
            require a single shipment per order. If multiple shipments exist for the
            order, the request will return a 404 error — use `shipment_uuid` or
            `tracking_number` instead.

            **Duplicate detection**: If an identical event already exists on the
            shipment (same event key and time), the request returns a 409 Conflict.

            **Notifications**: Set `notify=true` to trigger a shipment update
            notification after the event is created.

            See [Shipment Events](https://docs.gokarla.io/platform/features/events)
            for the full list of supported event names.
      operationId: v1.shipment.events.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: notify
          in: query
          required: false
          schema:
            type: boolean
            description: Trigger notification after event creation
            default: false
            title: Notify
          description: Trigger notification after event creation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentAddEventRequestDTO'
              description: Event data
      responses:
        '200':
          description: Successfully created shipment event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingSchema-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shipments/{shipment_id}/events:
    post:
      tags:
        - Shipment
      summary: Create Shipment Event by UUID
      description: |-
        Create a new event for a shipment, identified by its UUID in the path.

            This is a convenience alternative to the reference-based endpoint.
            The shipment UUID is passed directly in the URL path instead of the
            request body.

            **Duplicate detection**: If an identical event already exists on the
            shipment (same event key and time), the request returns a 409 Conflict.

            **Notifications**: Set `notify=true` to trigger a shipment update
            notification after the event is created.

            See [Shipment Events](https://docs.gokarla.io/platform/features/events)
            for the full list of supported event names.
      operationId: v1.shipment.events.create_by_id
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: shipment_id
          in: path
          required: true
          schema:
            type: string
            description: Shipment UUID
            title: Shipment Id
          description: Shipment UUID
        - name: notify
          in: query
          required: false
          schema:
            type: boolean
            description: Trigger notification after event creation
            default: false
            title: Notify
          description: Trigger notification after event creation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentEventBaseDTO'
              description: Event data
      responses:
        '200':
          description: Successfully created shipment event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingSchema-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shopify/webhooks:
    post:
      tags:
        - Shopify
      summary: Create Shopify Webhook
      description: Create a webhook if it does not exist.
      operationId: v1.shopify.webhooks.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopifyWebhookCreationDTO'
              description: The Webhook data
      responses:
        '200':
          description: Successfully created a shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyWebhookDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Shopify
      summary: Search Shopify Webhooks
      description: Get a shopify webhooks based on its uuid.
      operationId: v1.shopify.webhooks.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
      responses:
        '200':
          description: Successfully retrieved shopify webhooks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebhookDTO'
                title: Response 200 V1.Shopify.Webhooks.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shopify/webhooks/{uuid}:
    get:
      tags:
        - Shopify
      summary: Get Shopify Webhook By Uuid
      description: Get a shopify webhooks based on its uuid.
      operationId: v1.shopify.webhooks.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The Webhook's UUID
            title: Uuid
          description: The Webhook's UUID
      responses:
        '200':
          description: Successfully retrieved a shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyWebhookDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Shopify
      summary: Delete Shopify Webhook By Uuid
      description: Delete a webhook that already exists.
      operationId: v1.shopify.webhooks.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The webhook's unique identifier
            title: Uuid
          description: The webhook's unique identifier
      responses:
        '200':
          description: Successfully processed operation
          content:
            application/json:
              schema: {}
        '204':
          description: Successfully deleted a shopify webhook
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/shopify/webhooks/webhook-type/{webhook_type}:
    get:
      tags:
        - Shopify
      summary: Get Shopify Webhook By Type
      description: Get a shopify webhooks based on its type.
      operationId: v1.shopify.webhooks.webhook-type.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: webhook_type
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ShopifyWebhookType'
            description: The shopify webhook topic path
          description: The shopify webhook topic path
      responses:
        '200':
          description: Successfully retrieved a shopify webhook by type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyWebhookDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Shopify
      summary: Delete Shopify Webhook By Type
      description: Delete a webhook that already exists.
      operationId: v1.shopify.webhooks.webhook-type.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: webhook_type
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ShopifyWebhookType'
            description: The shopify webhook topic path
          description: The shopify webhook topic path
      responses:
        '200':
          description: Successfully processed operation
          content:
            application/json:
              schema: {}
        '204':
          description: Successfully deleted a shopify webhook by type
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shopify webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops:
    post:
      tags:
        - Shop
      summary: Create Shop
      description: Create a shop if it does not exist.
      operationId: v1.shops.create
      security:
        - HTTPBasic: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopCreationDTO'
              description: Merchant creation payload.
      responses:
        '200':
          description: Successfully created a shop
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The resource already exists or has conflicting information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Shop
      summary: Search Shops
      description: Search shops based on some values to filter.
      operationId: v1.shops.search
      security:
        - HTTPBasic: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: uuid
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Uuid
        - name: name
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Name
        - name: slug
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Slug
        - name: shop_provider
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ShopProvider'
            nullable: true
            title: Shop Provider
        - name: language
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/LanguageEnum'
            nullable: true
            title: Language
        - name: organization
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Organization
      responses:
        '200':
          description: Successfully retrieved shops
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ShopDetailDTO'
                title: Response 200 V1.Shops.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}:
    delete:
      tags:
        - Shop
      summary: Delete Shop
      description: Delete a shop that already exists.
      operationId: v1.shops.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully deleted a shop
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop
      summary: Update Shop
      description: Update a shop partially or completely.
      operationId: v1.shops.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopUpdateDTO'
              description: Merchant update payload.
      responses:
        '200':
          description: Successfully updated a shop
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Shop
      summary: Get Shop Detail
      description: Get details about a specific shop.
      operationId: v1.shops.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopDetailDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/billing:
    get:
      tags:
        - Shop
      summary: Get Shop Billing
      description: Get billing information for a specific shop.
      operationId: v1.shops.billing.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved shop billing information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopBillingDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/klaviyo:
    put:
      tags:
        - Shop
      summary: Set Klaviyo Key
      description: Set a klaviyo api key for the shop.
      operationId: v1.shops.keys.klaviyo.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyDTO'
              description: API key update payload.
      responses:
        '200':
          description: Successfully set Klaviyo key
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/shopify:
    put:
      tags:
        - Shop
      summary: Set Shopify Access Token
      description: Set a shopify access token for the shop.
      operationId: v1.shops.keys.shopify.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyDTO'
              description: API key update payload.
      responses:
        '200':
          description: Successfully set a Shopify access token
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Shop
      summary: Delete Shopify Access Token
      description: Delete the shopify access token for the shop.
      operationId: v1.shops.keys.shopify.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successful Response
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/shopware:
    put:
      tags:
        - Shop
      summary: Set Shopware Api Credentials
      description: Set shopware api credentials for the shop.
      operationId: v1.shops.keys.shopware.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientIDAndSecretDTO'
              description: Client ID and secret update payload.
      responses:
        '200':
          description: Successfully set Shopware API credentials
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Shopware.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/emarsys:
    put:
      tags:
        - Shop
      summary: Set Emarsys Api Credentials
      description: Set emarsys api credentials for the shop.
      operationId: v1.shops.keys.emarsys.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientIDAndSecretDTO'
              description: Client ID and secret update payload.
      responses:
        '200':
          description: Successfully set Emarsys API credentials
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Emarsys.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/brevo:
    put:
      tags:
        - Shop
      summary: Set Brevo Api Key
      description: Set a Brevo API key for the shop.
      operationId: v1.shops.keys.brevo.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyDTO'
              description: API key update payload.
      responses:
        '200':
          description: Successfully set Brevo API key
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Brevo.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/braze:
    put:
      tags:
        - Shop
      summary: Set Braze Api Key
      description: Set a Braze API key for the shop.
      operationId: v1.shops.keys.braze.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyDTO'
              description: API key update payload.
      responses:
        '200':
          description: Successfully set Braze API key
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Braze.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/inxmail:
    put:
      tags:
        - Shop
      summary: Set Inxmail Basic Auth
      description: Set Inxmail basic auth credentials for the shop.
      operationId: v1.shops.keys.inxmail.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicAuthDTO'
              description: Username and password for basic auth.
      responses:
        '200':
          description: Successfully set Inxmail basic auth credentials
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Inxmail.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys/hubspot:
    put:
      tags:
        - Shop
      summary: Set Hubspot Api Key
      description: Set a HubSpot Private App access token for the shop.
      operationId: v1.shops.keys.hubspot.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyDTO'
              description: API key update payload.
      responses:
        '200':
          description: Successfully set HubSpot API key
          content:
            application/json:
              schema:
                title: Response V1.Shops.Keys.Hubspot.Set
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/keys:
    get:
      tags:
        - Shop
      summary: List Keys
      description: List all integration keys for a shop.
      operationId: v1.shops.keys.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopKeysDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/api-keys:
    get:
      tags:
        - Shop
      summary: List Api Keys
      description: List all API keys for a shop.
      operationId: v1.shops.api_keys.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved API keys
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopApiKeysDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Shop
      summary: Create Api Key
      description: Create a new API key scoped to the shop.
      operationId: v1.shops.api_keys.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopApiKeyCreationDTO'
              description: API key creation payload.
      responses:
        '200':
          description: Successfully processed operation
        '201':
          description: Successfully created an API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopApiKeyCreatedDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '429':
          description: Rate limit or resource limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Shop
      summary: Delete Api Key
      description: Delete an API key identified by its token ID.
      operationId: v1.shops.api_keys.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopApiKeyDeletionDTO'
              description: API key deletion payload.
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successful Response
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/images/{image_type}:
    post:
      tags:
        - Shop
      summary: Upload Shop Image
      description: Upload an image for a shop.
      operationId: v1.shops.images.upload
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: image_type
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ImageType'
            description: The type of image to upload
          description: The type of image to upload
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/upload'
      responses:
        '200':
          description: Successfully uploaded a shop image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageResponseDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings:
    get:
      tags:
        - Shop Settings
      summary: Get Shop Settings
      description: Get settings for a specific shop.
      operationId: v1.shops.settings.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved shop settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/carriers:
    patch:
      tags:
        - Shop Settings
      summary: Update Shop Carrier Settings
      description: Update carrier settings for a specific shop.
      operationId: v1.shops.settings.carriers.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarrierSettingsUpdateDTO'
              description: The carrier settings to update
      responses:
        '200':
          description: Successfully updated carrier settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarrierSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers:
    patch:
      tags:
        - Shop Settings
      summary: Update Shop Trigger Settings
      description: Update trigger settings for a specific shop.
      operationId: v1.shops.settings.triggers.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerSettingsUpdateDTO'
              description: The trigger settings to update
      responses:
        '200':
          description: Successfully updated trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TriggerSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/campaigns:
    patch:
      tags:
        - Shop Settings
      summary: Update Shop Campaigns Settings
      description: Update campaign settings for a specific shop.
      operationId: v1.shops.settings.campaigns.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignSettingsUpdateDTO'
              description: The campaign settings to update
      responses:
        '200':
          description: Successfully updated campaigns settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/segments:
    patch:
      tags:
        - Shop Settings
      summary: Update Shop Segment Settings
      description: Update segment settings for a specific shop.
      operationId: v1.shops.settings.segments.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentSettingsUpdateDTO'
              description: The segment settings to update
      responses:
        '200':
          description: Successfully updated segment settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SegmentSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/klaviyo:
    get:
      tags:
        - Shop Settings
      summary: Get Klaviyo Trigger Settings
      description: Get Klaviyo-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.klaviyo.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Klaviyo trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlaviyoTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Klaviyo Trigger Settings
      description: Update Klaviyo-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.klaviyo.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KlaviyoTriggerSettingsUpdateDTO'
              description: The Klaviyo trigger settings to update
      responses:
        '200':
          description: Successfully updated Klaviyo trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlaviyoTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/emarsys:
    get:
      tags:
        - Shop Settings
      summary: Get Emarsys Trigger Settings
      description: Get Emarsys-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.emarsys.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Emarsys trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmarsysTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Emarsys Trigger Settings
      description: Update Emarsys-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.emarsys.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmarsysTriggerSettingsUpdateDTO'
              description: The Emarsys trigger settings to update
      responses:
        '200':
          description: Successfully updated Emarsys trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmarsysTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/brevo:
    get:
      tags:
        - Shop Settings
      summary: Get Brevo Trigger Settings
      description: Get Brevo-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.brevo.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Brevo trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrevoTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Brevo Trigger Settings
      description: Update Brevo-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.brevo.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrevoTriggerSettingsUpdateDTO'
              description: The Brevo trigger settings to update
      responses:
        '200':
          description: Successfully updated Brevo trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrevoTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/inxmail:
    get:
      tags:
        - Shop Settings
      summary: Get Inxmail Trigger Settings
      description: Get Inxmail-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.inxmail.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Inxmail trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InxmailTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Inxmail Trigger Settings
      description: Update Inxmail-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.inxmail.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InxmailTriggerSettingsUpdateDTO'
              description: The Inxmail trigger settings to update
      responses:
        '200':
          description: Successfully updated Inxmail trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InxmailTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/braze:
    get:
      tags:
        - Shop Settings
      summary: Get Braze Trigger Settings
      description: Get Braze-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.braze.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Braze trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrazeTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Braze Trigger Settings
      description: Update Braze-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.braze.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrazeTriggerSettingsUpdateDTO'
              description: The Braze trigger settings to update
      responses:
        '200':
          description: Successfully updated Braze trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrazeTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/hubspot:
    get:
      tags:
        - Shop Settings
      summary: Get Hubspot Trigger Settings
      description: Get HubSpot-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.hubspot.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved HubSpot trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubSpotTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Hubspot Trigger Settings
      description: Update HubSpot-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.hubspot.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HubSpotTriggerSettingsUpdateDTO'
              description: The HubSpot trigger settings to update
      responses:
        '200':
          description: Successfully updated HubSpot trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubSpotTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/webhook:
    get:
      tags:
        - Shop Settings
      summary: Get Webhook Trigger Settings
      description: Get webhook-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.webhook.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved webhook trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Webhook Trigger Settings
      description: Update webhook-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.webhook.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookTriggerSettingsUpdateDTO'
              description: The webhook trigger settings to update
      responses:
        '200':
          description: Successfully updated webhook trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookTriggerSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/shopify:
    get:
      tags:
        - Shop Settings
      summary: Get Shopify Trigger Settings
      description: Get Shopify-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.shopify.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved Shopify trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyTriggerSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Shopify Trigger Settings
      description: Update Shopify-specific trigger settings for a shop.
      operationId: v1.shops.settings.triggers.shopify.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopifyTriggerSettingsUpdateDTO'
              description: The Shopify trigger settings to update
      responses:
        '200':
          description: Successfully updated Shopify trigger settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopifyTriggerSettingsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/{integration}/internal-triggers:
    get:
      tags:
        - Shop Settings
      summary: List Internal Triggers
      description: List all internal triggers for a specific integration.
      operationId: v1.shops.settings.triggers.internal_triggers.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: integration
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationThirdParty'
            description: The integration name (klaviyo, emarsys, brevo, etc.)
          description: The integration name (klaviyo, emarsys, brevo, etc.)
      responses:
        '200':
          description: Successfully retrieved internal triggers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InternalTrigger-Input'
                title: Response 200 V1.Shops.Settings.Triggers.Internal Triggers.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
        - Shop Settings
      summary: Create Internal Trigger
      description: Create a new internal trigger for a specific integration.
      operationId: v1.shops.settings.triggers.internal_triggers.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: integration
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationThirdParty'
            description: The integration name (klaviyo, emarsys, brevo, etc.)
          description: The integration name (klaviyo, emarsys, brevo, etc.)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternalTriggerCreationDTO'
              description: The internal trigger to create
      responses:
        '200':
          description: Successfully processed operation
        '201':
          description: Successfully created internal trigger
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalTrigger-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/triggers/{integration}/internal-triggers/{trigger_id}:
    get:
      tags:
        - Shop Settings
      summary: Get Internal Trigger
      description: Get a specific internal trigger for a specific integration.
      operationId: v1.shops.settings.triggers.internal_triggers.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: integration
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationThirdParty'
            description: The integration name (klaviyo, emarsys, brevo, etc.)
          description: The integration name (klaviyo, emarsys, brevo, etc.)
        - name: trigger_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the internal trigger
            title: Trigger Id
          description: The ID of the internal trigger
      responses:
        '200':
          description: Successfully retrieved internal trigger
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalTrigger-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Shop Settings
      summary: Update Internal Trigger
      description: Update a specific internal trigger for a specific integration.
      operationId: v1.shops.settings.triggers.internal_triggers.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: integration
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationThirdParty'
            description: The integration name (klaviyo, emarsys, brevo, etc.)
          description: The integration name (klaviyo, emarsys, brevo, etc.)
        - name: trigger_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the internal trigger
            title: Trigger Id
          description: The ID of the internal trigger
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternalTriggerCreationDTO'
              description: The internal trigger updates
      responses:
        '200':
          description: Successfully updated internal trigger
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalTrigger-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Shop Settings
      summary: Delete Internal Trigger
      description: Delete a specific internal trigger for a specific integration.
      operationId: v1.shops.settings.triggers.internal_triggers.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: integration
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationThirdParty'
            description: The integration name (klaviyo, emarsys, brevo, etc.)
          description: The integration name (klaviyo, emarsys, brevo, etc.)
        - name: trigger_id
          in: path
          required: true
          schema:
            type: string
            description: The ID of the internal trigger
            title: Trigger Id
          description: The ID of the internal trigger
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted internal trigger
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/brand-palette/colors:
    get:
      tags:
        - Shop Settings
      summary: Get Brand Palette Colors
      description: Get brand palette colors for a shop.
      operationId: v1.shops.settings.brand_palette.colors.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved brand palette colors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandPaletteColorsDTO'
                nullable: true
                title: Response V1.Shops.Settings.Brand Palette.Colors.Get
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Shop Settings
      summary: Update Brand Palette Colors
      description: |-
        Update brand palette colors for a shop.

        Allows partial updates - only provided color fields will be updated.
        Example: { "primary_dark": "#FF0000" } updates only primary_dark.
      operationId: v1.shops.settings.brand_palette.colors.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandPaletteColorsUpdateDTO'
              description: The brand palette colors to update
      responses:
        '200':
          description: Successfully updated brand palette colors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandPaletteColorsDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/mappings:
    get:
      tags:
        - Shop Settings
      summary: Get Shop Mappings
      description: Get mappings settings for a shop.
      operationId: v1.shops.settings.mappings.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved mappings settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseMappingsSettings-Input'
                nullable: true
                title: Response V1.Shops.Settings.Mappings.Get
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Shop Settings
      summary: Set Shop Mappings
      description: Set mappings settings for a shop.
      operationId: v1.shops.settings.mappings.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseMappingsSettings-Input'
              description: Mappings settings payload.
      responses:
        '200':
          description: Successfully updated mappings settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalShopSettingsDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/theme:
    get:
      tags:
        - Trackpages Settings
      summary: Get Trackpages Theme
      description: Get the current trackpages theme for a shop.
      operationId: v1.shops.settings.trackpages.theme.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved trackpages theme
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesThemeDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Settings
      summary: Set Trackpages Theme
      description: Set the trackpages theme for a shop.
      operationId: v1.shops.settings.trackpages.theme.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackpagesThemeDTO'
              description: The theme to apply
      responses:
        '200':
          description: Successfully set trackpages theme
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesThemeDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/border-radius:
    get:
      tags:
        - Trackpages Settings
      summary: Get Trackpages Border Radius
      description: Get the current trackpages border radius settings for a shop.
      operationId: v1.shops.settings.trackpages.border_radius.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved border radius settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesBorderRadiusDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Trackpages Settings
      summary: Update Trackpages Border Radius
      description: >-
        Update trackpages border radius settings for a shop.


        - widget_corner_px: Border radius for widgets in pixels

        - button_corner_px: Border radius for buttons in pixels (Tailwind
        conversion)
      operationId: v1.shops.settings.trackpages.border_radius.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackpagesBorderRadiusDTO'
              description: The border radius settings to update
      responses:
        '200':
          description: Successfully updated border radius settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesBorderRadiusDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/metadata:
    get:
      tags:
        - Trackpages Settings
      summary: Get Trackpages Metadata
      description: Get the current trackpages page metadata for a shop.
      operationId: v1.shops.settings.trackpages.metadata.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved page metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesMetadataDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Trackpages Settings
      summary: Update Trackpages Metadata
      description: |-
        Update trackpages page metadata for a shop.

        Allows partial updates - only provided fields will be updated.
      operationId: v1.shops.settings.trackpages.metadata.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackpagesMetadataDTO'
              description: The page metadata to update
      responses:
        '200':
          description: Successfully updated page metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesMetadataDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/font:
    get:
      tags:
        - Trackpages Settings
      summary: Get Trackpages Font
      description: Get the current trackpages font for a shop.
      operationId: v1.shops.settings.trackpages.font.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved font setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesFontDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Settings
      summary: Set Trackpages Font
      description: |-
        Set the trackpages font for a shop.

        The font is a string with no validation - the system will fallback
        to the system font if the specified font is not available.
      operationId: v1.shops.settings.trackpages.font.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackpagesFontDTO'
              description: The font to set
      responses:
        '200':
          description: Successfully set font
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackpagesFontDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/tracking-events:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Tracking Events Widget
      description: Get the tracking-events widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.tracking_events.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved tracking events widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingEventsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Tracking Events Widget
      description: Set the tracking-events widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.tracking_events.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackingEventsWidgetDTO'
      responses:
        '200':
          description: Successfully set tracking events widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingEventsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Tracking Events Widget
      description: Delete the tracking-events widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.tracking_events.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/order-summary:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Order Summary Widget
      description: Get the order-summary widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_summary.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved order summary widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderSummaryWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Order Summary Widget
      description: Set the order-summary widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_summary.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderSummaryWidgetDTO'
      responses:
        '200':
          description: Successfully set order summary widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderSummaryWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Order Summary Widget
      description: Delete the order-summary widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_summary.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/basic-promotion:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Basic Promotion Widget
      description: Get the basic-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.basic_promotion.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved basic promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Basic Promotion Widget
      description: Set the basic-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.basic_promotion.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicPromotionWidgetDTO'
      responses:
        '200':
          description: Successfully set basic promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Basic Promotion Widget
      description: Delete the basic-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.basic_promotion.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/product-promotion:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Product Promotion Widget
      description: Get the product-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.product_promotion.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved product promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Product Promotion Widget
      description: Set the product-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.product_promotion.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductPromotionWidgetDTO'
      responses:
        '200':
          description: Successfully set product promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Product Promotion Widget
      description: Delete the product-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.product_promotion.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/order-finder:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Order Finder Widget
      description: Get the order-finder widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_finder.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved order finder widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderFinderWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Order Finder Widget
      description: Set the order-finder widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_finder.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderFinderWidgetDTO'
      responses:
        '200':
          description: Successfully set order finder widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderFinderWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Order Finder Widget
      description: Delete the order-finder widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.order_finder.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/banner-promotion:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Banner Promotion Widget
      description: Get the banner-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.banner_promotion.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved banner promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BannerPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Banner Promotion Widget
      description: Set the banner-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.banner_promotion.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BannerPromotionWidgetDTO'
      responses:
        '200':
          description: Successfully set banner promotion widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BannerPromotionWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Banner Promotion Widget
      description: Delete the banner-promotion widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.banner_promotion.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/notification-banner:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Notification Banner Widget
      description: Get the notification-banner widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.notification_banner.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved notification banner widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationBannerWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Notification Banner Widget
      description: Set the notification-banner widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.notification_banner.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationBannerWidgetDTO'
      responses:
        '200':
          description: Successfully set notification banner widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationBannerWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Notification Banner Widget
      description: Delete the notification-banner widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.notification_banner.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/survey:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Survey Widget
      description: Get the survey widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.survey.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved survey widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SurveyWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Survey Widget
      description: Set the survey widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.survey.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SurveyWidgetDTO'
      responses:
        '200':
          description: Successfully set survey widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SurveyWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Survey Widget
      description: Delete the survey widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.survey.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/deals:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Deals Widget
      description: Get the deals widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.deals.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved deals widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Deals Widget
      description: Set the deals widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.deals.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DealsWidgetDTO'
      responses:
        '200':
          description: Successfully set deals widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Deals Widget
      description: Delete the deals widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.deals.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/settings/trackpages/widgets/reviews:
    get:
      tags:
        - Trackpages Widgets
      summary: Get Reviews Widget
      description: Get the reviews widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.reviews.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved reviews widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
        - Trackpages Widgets
      summary: Set Reviews Widget
      description: Set the reviews widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.reviews.set
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReviewsWidgetDTO'
      responses:
        '200':
          description: Successfully set reviews widget config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsWidgetDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
        - Trackpages Widgets
      summary: Delete Reviews Widget
      description: Delete the reviews widget configuration.
      operationId: v1.shops.settings.trackpages.widgets.reviews.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully processed operation
        '204':
          description: Successfully deleted widget configuration
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find widget configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/users:
    post:
      tags:
        - User
      summary: Add User To Shop
      description: Add a user to a shop with the specified role.
      operationId: v1.users.shop.add
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShopUserInviteDTO'
              description: User invitation payload.
      responses:
        '200':
          description: Successfully added user to shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDTO-Input'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - User
      summary: List Shop Users
      description: List all users assigned to a specific shop.
      operationId: v1.users.shop.list
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: Page number
            default: 1
            title: Page
          description: Page number
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Number of items per page
            default: 25
            title: Per Page
          description: Number of items per page
      responses:
        '200':
          description: Successfully retrieved users for shop
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDTO-Input'
                title: Response 200 V1.Users.Shop.List
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/users/{user_id}:
    delete:
      tags:
        - User
      summary: Remove User From Shop
      description: Remove a user from a shop.
      operationId: v1.users.shop.remove
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: user_id
          in: path
          required: true
          schema:
            type: string
            description: The UUID of the user to remove
            title: User Id
          description: The UUID of the user to remove
      responses:
        '200':
          description: Successfully removed user from shop
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/webhooks:
    post:
      tags:
        - Webhook
      summary: Create Webhook
      description: Create a webhook if it does not exist.
      operationId: v1.webhooks.create
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreationDTO'
              description: Webhook creation payload.
      responses:
        '200':
          description: Successfully created a webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: The requested resource already exists!
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    get:
      tags:
        - Webhook
      summary: Search Webhooks
      description: Search all webhooks or based on some values to filter.
      operationId: v1.webhooks.search
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 30
            title: Per Page
        - name: uuid
          in: query
          required: false
          schema:
            type: string
            format: uuid
            nullable: true
            title: Uuid
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/WebhookStatus'
            nullable: true
            title: Status
        - name: url
          in: query
          required: false
          schema:
            type: string
            format: uri
            minLength: 1
            nullable: true
            title: Url
      responses:
        '200':
          description: Successfully retrieved webhooks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebhookDTO'
                title: Response 200 V1.Webhooks.Search
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop related to the webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/webhooks/{uuid}:
    delete:
      tags:
        - Webhook
      summary: Delete Webhook
      description: Delete a webhook that already exists.
      operationId: v1.webhooks.delete
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The webhook's unique identifier
            title: Uuid
          description: The webhook's unique identifier
      responses:
        '200':
          description: Successfully deleted a webhook
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
        - Webhook
      summary: Update Webhook
      description: Update a webhook partially or completely.
      operationId: v1.webhooks.update
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The webhook's unique identifier
            title: Uuid
          description: The webhook's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdateDTO'
              description: Webhook update payload.
      responses:
        '200':
          description: Successfully updated a webhook
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /v1/shops/{slug}/woocommerce/webhook-config:
    get:
      tags:
        - WooCommerce
      summary: Get Webhook Config
      description: |-
        Get WooCommerce webhook configuration for a shop.

        Returns the delivery URL and webhook secret that should be used when
        configuring a WooCommerce Order Created webhook.
      operationId: v1.woocommerce.webhook-config.get
      security:
        - HTTPBasic: []
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
            description: The slug identifying the shop
            title: Slug
          description: The slug identifying the shop
      responses:
        '200':
          description: Successfully retrieved WooCommerce webhook configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WooCommerceWebhookConfigDTO'
        '400':
          description: Invalid request authentication, body or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Insufficient rights to the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Could not find shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Something went wrong on Karla's end
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
components:
  schemas:
    ABTestCampaignCreateDTO:
      properties:
        campaign_id:
          type: string
          format: uuid
          title: Campaign Id
          description: UUID of the campaign to include in the AB test
          examples:
            - 550e8400-e29b-41d4-a716-446655440001
        allocation:
          type: integer
          maximum: 100
          minimum: 0
          title: Allocation
          description: Percentage split for this campaign (0-100)
          examples:
            - 50
            - 25
            - 100
      type: object
      required:
        - campaign_id
        - allocation
      title: ABTestCampaignCreateDTO
      description: Data required to create an AB test campaign.
    ABTestCampaignResponseDTO-Input:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Campaign visibility toggle. Only one campaign can be enabled per
            segment at a time.
          default: false
        name:
          type: string
          title: Name
          description: Campaign name to be used internally
          examples:
            - Q3 Campaign
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Time in which the campaign will start (defaults to now)
          examples:
            - '2024-10-01T00:00:00Z'
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time in which the campaign will end
          examples:
            - '2024-10-11T00:00:00Z'
        segment:
          type: string
          title: Segment
          description: Segment to which the campaign is targeted
          examples:
            - b2b
        promotion_type:
          $ref: '#/components/schemas/PromotionType'
          description: Type of promotion
        promotion_properties:
          anyOf:
            - $ref: '#/components/schemas/BasicPromotionPropertiesDTO-Input'
            - $ref: '#/components/schemas/ProductPromotionPropertiesResponseDTO-Input'
            - $ref: '#/components/schemas/BannerPromotionPropertiesDTO-Input'
          title: Promotion Properties
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Campaign UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop Slug
          examples:
            - gokarla
        status:
          $ref: '#/components/schemas/CampaignStatus'
          description: The status of the campaign
          examples:
            - active
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: The discount attached to the campaign
          examples:
            - code: MYCODE10
              type: order
              uuid: def3b49c-9268-4aaa-959c-ea2bb8c66f55
              value: 10
              value_type: percentage
        allocation:
          type: integer
          maximum: 100
          minimum: 0
          title: Allocation
          description: Percentage split for this campaign (0-100)
      type: object
      required:
        - name
        - start_date
        - segment
        - promotion_type
        - promotion_properties
        - uuid
        - shop_slug
        - status
        - allocation
      title: ABTestCampaignResponseDTO
      description: Response data for an AB test campaign.
    ABTestCampaignResponseDTO-Output:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Campaign visibility toggle. Only one campaign can be enabled per
            segment at a time.
          default: false
        name:
          type: string
          title: Name
          description: Campaign name to be used internally
          examples:
            - Q3 Campaign
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Time in which the campaign will start (defaults to now)
          examples:
            - '2024-10-01T00:00:00Z'
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time in which the campaign will end
          examples:
            - '2024-10-11T00:00:00Z'
        segment:
          type: string
          title: Segment
          description: Segment to which the campaign is targeted
          examples:
            - b2b
        promotion_type:
          $ref: '#/components/schemas/PromotionType'
          description: Type of promotion
        promotion_properties:
          anyOf:
            - $ref: '#/components/schemas/BasicPromotionPropertiesDTO-Output'
            - $ref: >-
                #/components/schemas/ProductPromotionPropertiesResponseDTO-Output
            - $ref: '#/components/schemas/BannerPromotionPropertiesDTO-Output'
          title: Promotion Properties
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Campaign UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop Slug
          examples:
            - gokarla
        status:
          $ref: '#/components/schemas/CampaignStatus'
          description: The status of the campaign
          examples:
            - active
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: The discount attached to the campaign
          examples:
            - code: MYCODE10
              type: order
              uuid: def3b49c-9268-4aaa-959c-ea2bb8c66f55
              value: 10
              value_type: percentage
        allocation:
          type: integer
          maximum: 100
          minimum: 0
          title: Allocation
          description: Percentage split for this campaign (0-100)
      type: object
      required:
        - name
        - start_date
        - segment
        - promotion_type
        - promotion_properties
        - uuid
        - shop_slug
        - status
        - allocation
      title: ABTestCampaignResponseDTO
      description: Response data for an AB test campaign.
    ABTestCreationDTO:
      properties:
        name:
          type: string
          title: Name
          description: Name of the AB test
          examples:
            - Holiday Promotion Test
        segment:
          type: string
          title: Segment
          description: Segment to which the AB test is targeted
          examples:
            - b2b
        campaign_type:
          type: string
          title: Campaign Type
          description: Type of campaign being tested
          examples:
            - product
        campaigns:
          items:
            $ref: '#/components/schemas/ABTestCampaignCreateDTO'
          type: array
          title: Campaigns
          description: List of campaigns and their allocations
          examples:
            - - allocation: 50
                campaign_id: 550e8400-e29b-41d4-a716-446655440001
              - allocation: 50
                campaign_id: 660e8400-e29b-41d4-a716-446655440002
        has_holdout:
          type: boolean
          title: Has Holdout
          description: Whether to include a holdout group
          default: false
          examples:
            - false
            - true
        holdout_percentage:
          type: integer
          maximum: 100
          minimum: 0
          nullable: true
          title: Holdout Percentage
          description: Percentage for the holdout group (0-100)
          examples:
            - 10
            - 20
            - null
        start_date:
          type: string
          format: date-time
          nullable: true
          title: Start Date
          description: Time when the AB test will start
          examples:
            - '2024-02-01T00:00:00Z'
            - '2024-03-15T10:30:00Z'
            - null
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time when the AB test will end
          examples:
            - '2024-02-29T23:59:59Z'
            - '2024-04-15T23:59:59Z'
            - null
      type: object
      required:
        - name
        - segment
        - campaign_type
        - campaigns
      title: ABTestCreationDTO
      description: Data required to create a new AB test.
    ABTestResponseDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: AB test UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        name:
          type: string
          title: Name
          description: Name of the AB test
          examples:
            - Holiday Promotion Test
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
          examples:
            - shopify-store-1
        segment:
          type: string
          title: Segment
          description: Segment to which the AB test is targeted
          examples:
            - b2b
        campaign_type:
          type: string
          title: Campaign Type
          description: Type of campaign being tested
          examples:
            - product
        campaigns:
          items:
            $ref: '#/components/schemas/ABTestCampaignResponseDTO-Input'
          type: array
          title: Campaigns
          description: List of campaigns and their allocations
          examples:
            - - allocation: 60
                enabled: true
                end_date: '2024-02-28T23:59:59Z'
                name: Holiday Promotion Campaign A
                promotion_properties:
                  cta_label: Shop Now
                  cta_url: https://shop.example.com/sale?ref=karla
                  image_url: >-
                    https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
                  title: Holiday Sale Campaign A
                promotion_type: product
                segment: b2b
                shop_slug: test-shop
                start_date: '2024-02-01T00:00:00Z'
                status: active
                uuid: 550e8400-e29b-41d4-a716-446655440001
              - allocation: 40
                enabled: true
                end_date: '2024-02-28T23:59:59Z'
                name: Holiday Promotion Campaign B
                promotion_properties:
                  cta_label: Discover New
                  cta_url: https://shop.example.com/new?ref=karla
                  image_url: >-
                    https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
                  title: Holiday Sale Campaign B
                promotion_type: product
                segment: b2b
                shop_slug: test-shop
                start_date: '2024-02-01T00:00:00Z'
                status: active
                uuid: 550e8400-e29b-41d4-a716-446655440002
        has_holdout:
          type: boolean
          title: Has Holdout
          description: Whether the AB test includes a holdout group
          default: false
          examples:
            - false
            - true
        holdout_percentage:
          type: integer
          nullable: true
          title: Holdout Percentage
          description: Percentage for the holdout group (0-100)
          examples:
            - 10
            - 20
            - null
        start_date:
          type: string
          format: date-time
          nullable: true
          title: Start Date
          description: Time when the AB test started/will start
          examples:
            - '2024-01-15T10:00:00Z'
            - '2024-02-01T00:00:00Z'
            - null
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time when the AB test ended/will end
          examples:
            - '2024-02-15T10:00:00Z'
            - '2024-03-31T23:59:59Z'
            - null
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Time when the AB test was created
          examples:
            - '2024-01-15T10:00:00Z'
            - '2024-01-01T08:30:00Z'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Time when the AB test was last updated
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-20T16:45:00Z'
      type: object
      required:
        - uuid
        - name
        - shop_slug
        - segment
        - campaign_type
        - campaigns
        - created_at
        - updated_at
      title: ABTestResponseDTO
      description: Response data for an AB test.
    ABTestResponseDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: AB test UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        name:
          type: string
          title: Name
          description: Name of the AB test
          examples:
            - Holiday Promotion Test
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
          examples:
            - shopify-store-1
        segment:
          type: string
          title: Segment
          description: Segment to which the AB test is targeted
          examples:
            - b2b
        campaign_type:
          type: string
          title: Campaign Type
          description: Type of campaign being tested
          examples:
            - product
        campaigns:
          items:
            $ref: '#/components/schemas/ABTestCampaignResponseDTO-Output'
          type: array
          title: Campaigns
          description: List of campaigns and their allocations
          examples:
            - - allocation: 60
                enabled: true
                end_date: '2024-02-28T23:59:59Z'
                name: Holiday Promotion Campaign A
                promotion_properties:
                  cta_label: Shop Now
                  cta_url: https://shop.example.com/sale?ref=karla
                  image_url: >-
                    https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
                  title: Holiday Sale Campaign A
                promotion_type: product
                segment: b2b
                shop_slug: test-shop
                start_date: '2024-02-01T00:00:00Z'
                status: active
                uuid: 550e8400-e29b-41d4-a716-446655440001
              - allocation: 40
                enabled: true
                end_date: '2024-02-28T23:59:59Z'
                name: Holiday Promotion Campaign B
                promotion_properties:
                  cta_label: Discover New
                  cta_url: https://shop.example.com/new?ref=karla
                  image_url: >-
                    https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
                  title: Holiday Sale Campaign B
                promotion_type: product
                segment: b2b
                shop_slug: test-shop
                start_date: '2024-02-01T00:00:00Z'
                status: active
                uuid: 550e8400-e29b-41d4-a716-446655440002
        has_holdout:
          type: boolean
          title: Has Holdout
          description: Whether the AB test includes a holdout group
          default: false
          examples:
            - false
            - true
        holdout_percentage:
          type: integer
          nullable: true
          title: Holdout Percentage
          description: Percentage for the holdout group (0-100)
          examples:
            - 10
            - 20
            - null
        start_date:
          type: string
          format: date-time
          nullable: true
          title: Start Date
          description: Time when the AB test started/will start
          examples:
            - '2024-01-15T10:00:00Z'
            - '2024-02-01T00:00:00Z'
            - null
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time when the AB test ended/will end
          examples:
            - '2024-02-15T10:00:00Z'
            - '2024-03-31T23:59:59Z'
            - null
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Time when the AB test was created
          examples:
            - '2024-01-15T10:00:00Z'
            - '2024-01-01T08:30:00Z'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Time when the AB test was last updated
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-20T16:45:00Z'
      type: object
      required:
        - uuid
        - name
        - shop_slug
        - segment
        - campaign_type
        - campaigns
        - created_at
        - updated_at
      title: ABTestResponseDTO
      description: Response data for an AB test.
    APIKeyDTO:
      properties:
        api_key:
          type: string
          maxLength: 128
          minLength: 16
          title: Api Key
          description: The api key
      type: object
      required:
        - api_key
      title: APIKeyDTO
      description: An api key secret.
    AdditionalInfo:
      properties:
        pickup_point:
          type: string
          nullable: true
          title: Pickup Point
        pickup_point_url:
          type: string
          nullable: true
          title: Pickup Point Url
        pickup_time:
          type: string
          format: date-time
          nullable: true
          title: Pickup Time
        pickup_opening_hours:
          additionalProperties:
            type: string
          type: object
          nullable: true
          title: Pickup Opening Hours
        mail_message:
          type: string
          nullable: true
          title: Mail Message
        merchant_name:
          type: string
          nullable: true
          title: Merchant Name
        preferred_delivery_date:
          type: string
          format: date-time
          nullable: true
          title: Preferred Delivery Date
        tracking_link:
          type: string
          nullable: true
          title: Tracking Link
        carrier_name:
          type: string
          nullable: true
          title: Carrier Name
        tracking_company:
          type: string
          nullable: true
          title: Tracking Company
      type: object
      title: AdditionalInfo
      description: >-
        Schema for a additional info sub-partial for a `Shipment.Event` object.


        Based on frontend representation of AdditionalInfo at

        https://github.com/gokarla-io/happy-app/blob/develop/lib/models/additional_info.dart#L6.
    Address:
      properties:
        city:
          type: string
          nullable: true
          title: City
          description: City of the collection point.
        full:
          type: string
          nullable: true
          title: Full
          description: Full address of the collection point.
        country:
          type: string
          nullable: true
          title: Country
          description: Country of the collection point.
        location_type:
          type: string
          nullable: true
          title: Location Type
          description: Type of location.
        postal_code:
          type: string
          nullable: true
          title: Postal Code
          description: Collection point address' postal code.
        state_or_province:
          type: string
          nullable: true
          title: State Or Province
          description: Collection point address' state or province.
      type: object
      title: Address
      description: Address object schema.
    AddressDTO-Input:
      properties:
        address_line_1:
          type: string
          nullable: true
          title: Address Line 1
          description: The resident's mailing address
          examples:
            - Teststr. 1
        address_line_2:
          type: string
          nullable: true
          title: Address Line 2
          description: An additional field for the customer's mailing address
          examples:
            - 2nd floor
        city:
          type: string
          nullable: true
          title: City
          description: The resident's city
          examples:
            - Berlin
        country:
          type: string
          nullable: true
          title: Country
          description: The resident's country
          examples:
            - Germany
        country_code:
          type: string
          nullable: true
          title: Country Code
          description: The two letter digit resident's country code
          examples:
            - DE
        name:
          type: string
          nullable: true
          title: Name
          description: The first and last names of the resident
          examples:
            - Jane Doe
        phone:
          type: string
          nullable: true
          title: Phone
          description: The resident's phone number
          examples:
            - +49 123 4567890
        province:
          type: string
          nullable: true
          title: Province
          description: The resident's province or state name
          examples:
            - Berlin
        province_code:
          type: string
          nullable: true
          title: Province Code
          description: The resident's province or state name
          examples:
            - BE
        street:
          type: string
          nullable: true
          title: Street
          description: A combination of the first and second lines of the address
          examples:
            - Teststr. 1, 2nd floor
        zip_code:
          type: string
          nullable: true
          title: Zip Code
          description: The address zip or postal code
          examples:
            - '10119'
        company:
          type: string
          nullable: true
          title: Company
          description: The company recipient
          examples:
            - Example GmbH
      type: object
      title: AddressDTO
      description: DTO for standardized address objects.
    AddressDTO-Output:
      properties:
        address_line_1:
          title: Address Line 1
          description: The resident's mailing address
          examples:
            - Teststr. 1
        address_line_2:
          title: Address Line 2
          description: An additional field for the customer's mailing address
          examples:
            - 2nd floor
        city:
          title: City
          description: The resident's city
          examples:
            - Berlin
        country:
          title: Country
          description: The resident's country
          examples:
            - Germany
        country_code:
          title: Country Code
          description: The two letter digit resident's country code
          examples:
            - DE
        name:
          title: Name
          description: The first and last names of the resident
          examples:
            - Jane Doe
        phone:
          title: Phone
          description: The resident's phone number
          examples:
            - +49 123 4567890
        province:
          title: Province
          description: The resident's province or state name
          examples:
            - Berlin
        province_code:
          title: Province Code
          description: The resident's province or state name
          examples:
            - BE
        street:
          title: Street
          description: A combination of the first and second lines of the address
          examples:
            - Teststr. 1, 2nd floor
        zip_code:
          title: Zip Code
          description: The address zip or postal code
          examples:
            - '10119'
        company:
          title: Company
          description: The company recipient
          examples:
            - Example GmbH
      type: object
      title: AddressDTO
      description: DTO for standardized address objects.
    AddressSchema:
      properties:
        address_line_1:
          type: string
          nullable: true
          title: Address Line 1
          description: The resident's mailing address
          examples:
            - Teststr. 1
        address_line_2:
          type: string
          nullable: true
          title: Address Line 2
          description: An additional field for the customer's mailing address
          examples:
            - 2nd floor
        city:
          type: string
          nullable: true
          title: City
          description: The resident's city
          examples:
            - Berlin
        country:
          type: string
          nullable: true
          title: Country
          description: The resident's country
          examples:
            - Germany
        country_code:
          type: string
          nullable: true
          title: Country Code
          description: The two letter digit resident's country code
          examples:
            - DE
        name:
          type: string
          nullable: true
          title: Name
          description: The first and last names of the resident
          examples:
            - Jane Doe
        phone:
          type: string
          nullable: true
          title: Phone
          description: The resident's phone number
          examples:
            - +49 123 4567890
        province:
          type: string
          nullable: true
          title: Province
          description: The resident's province or state name
          examples:
            - Berlin
        province_code:
          type: string
          nullable: true
          title: Province Code
          description: The resident's province or state name
          examples:
            - BE
        street:
          type: string
          nullable: true
          title: Street
          description: A combination of the first and second lines of the address
          examples:
            - Teststr. 1, 2nd floor
        zip_code:
          type: string
          nullable: true
          title: Zip Code
          description: The address zip or postal code
          examples:
            - '10119'
      type: object
      title: AddressSchema
      description: Schema for standardized address objects.
    AddressWithZipCodeDTO:
      properties:
        address_line_1:
          type: string
          nullable: true
          title: Address Line 1
          description: The resident's mailing address
          examples:
            - Teststr. 1
        address_line_2:
          type: string
          nullable: true
          title: Address Line 2
          description: An additional field for the customer's mailing address
          examples:
            - 2nd floor
        city:
          type: string
          nullable: true
          title: City
          description: The resident's city
          examples:
            - Berlin
        country:
          type: string
          nullable: true
          title: Country
          description: The resident's country
          examples:
            - Germany
        country_code:
          type: string
          nullable: true
          title: Country Code
          description: The two letter digit resident's country code
          examples:
            - DE
        name:
          type: string
          nullable: true
          title: Name
          description: The first and last names of the resident
          examples:
            - Jane Doe
        phone:
          type: string
          nullable: true
          title: Phone
          description: The resident's phone number
          examples:
            - +49 123 4567890
        province:
          type: string
          nullable: true
          title: Province
          description: The resident's province or state name
          examples:
            - Berlin
        province_code:
          type: string
          nullable: true
          title: Province Code
          description: The resident's province or state name
          examples:
            - BE
        street:
          type: string
          nullable: true
          title: Street
          description: A combination of the first and second lines of the address
          examples:
            - Teststr. 1, 2nd floor
        zip_code:
          type: string
          title: Zip Code
          description: The address zip or postal code
          examples:
            - '10119'
        company:
          type: string
          nullable: true
          title: Company
          description: The company recipient
          examples:
            - Example GmbH
      type: object
      required:
        - zip_code
      title: AddressWithZipCodeDTO
      description: >-
        DTO for standardized address objects enforcing that a zip code always
        exists.
    AfterShipEventMappingDTO:
      properties:
        id:
          type: integer
          nullable: true
          title: Id
          description: Mapping ID
        tag:
          type: string
          title: Tag
          description: AfterShip event tag
        subtag:
          type: string
          title: Subtag
          description: AfterShip event subtag
        subtag_message:
          type: string
          title: Subtag Message
          description: AfterShip event subtag message
        message:
          type: string
          nullable: true
          title: Message
          description: NULL for partial, exact text for full, regex pattern for regex
        event_key:
          type: string
          nullable: true
          title: Event Key
          description: Mapped Karla event key
        match_type:
          $ref: '#/components/schemas/MatchType'
          description: Match type (full/partial/regex)
        carrier:
          type: string
          nullable: true
          title: Carrier
          description: Carrier name
        status:
          $ref: '#/components/schemas/MappingStatus'
          description: Approval status
          default: pending
        approved_by:
          type: string
          nullable: true
          title: Approved By
          description: Username/email of approver
        approved_at:
          type: string
          format: date-time
          nullable: true
          title: Approved At
          description: Approval timestamp
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Creation timestamp
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Last update timestamp
        matched_groups:
          additionalProperties:
            type: string
          type: object
          nullable: true
          title: Matched Groups
          description: >-
            Regex named groups captured from original message (for preview).
            Example: {'location': 'New York', 'date': '2024-01-15'}
        examples_with_groups:
          items:
            $ref: '#/components/schemas/ExampleWithGroups'
          type: array
          title: Examples With Groups
          description: >-
            Example messages with extracted regex groups. Only populated for
            regex mappings. Shows what the regex pattern captures from each
            example.
      type: object
      required:
        - tag
        - subtag
        - subtag_message
        - match_type
      title: AfterShipEventMappingDTO
      description: DTO for AfterShip event mapping (API response).
    AllEvent:
      properties:
        time:
          type: string
          nullable: true
          title: Time
          description: Date & time of event occurrence.
        event:
          type: string
          nullable: true
          title: Event
          description: >-
            Event's description in English or original event description,
            depending on how the event was processed.
        location:
          additionalProperties: true
          type: object
          nullable: true
          title: Location
          description: Object containing the location details of the event.
        timezone:
          type: string
          nullable: true
          title: Timezone
          description: Timezone description for event's date & time.
        event_key:
          type: string
          nullable: true
          title: Event Key
          description: 'Internal event key that references to a unique event type. '
        phase:
          type: string
          nullable: true
          title: Phase
          description: Phase that the shipment's current event belongs to.
        phase_key:
          type: string
          nullable: true
          title: Phase Key
          description: Internal key referencing a unique phase
        carrier_name:
          type: string
          nullable: true
          title: Carrier Name
          description: Carrier that the event is associated to.
        additional_info:
          additionalProperties: true
          type: object
          nullable: true
          title: Additional Info
          description: Any additional information or custom fields related to the event.
      type: object
      title: AllEvent
      description: All event object schema.
    AnnouncementCreationDTO:
      properties:
        text:
          type: string
          title: Text
          description: Announcement text
          examples:
            - >-
              We are expecting significant delays in today's deliveries due to
              the storm
        language:
          $ref: '#/components/schemas/LanguageEnum'
          description: Language for the text strings related to the merchant
      type: object
      required:
        - text
        - language
      title: AnnouncementCreationDTO
      description: The Announcement object to be created.
    AnnouncementDetailDTO:
      properties:
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Time in which the resource was created
          examples:
            - '2024-01-15T10:30:00Z'
            - '2023-12-01T08:00:00Z'
            - null
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Time in which the resource was last updated after creation
          examples:
            - '2024-01-16T14:45:00Z'
            - '2024-01-15T16:00:00Z'
            - null
        text:
          type: string
          title: Text
          description: Announcement text
          examples:
            - >-
              We are expecting significant delays in today's deliveries due to
              the storm
        language:
          $ref: '#/components/schemas/LanguageEnum'
          description: Language for the text strings related to the merchant
      type: object
      required:
        - text
        - language
      title: AnnouncementDetailDTO
      description: The Announcement data that should not be exposed without authentication.
    AnnouncementUpdateDTO:
      properties:
        text:
          type: string
          nullable: true
          title: Text
          description: Announcement text
          examples:
            - >-
              We are expecting significant delays in today's deliveries due to
              the storm
        language:
          $ref: '#/components/schemas/LanguageEnum'
          nullable: true
          description: Language for the text strings related to the merchant
      type: object
      title: AnnouncementUpdateDTO
      description: The Announcement object to be updated.
    BannerPromotionPropertiesDTO-Input:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Super discount
        subtitle:
          type: string
          nullable: true
          title: Subtitle
          description: Promotion Subtitle
          examples:
            - Get 15% off your next order
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label
          examples:
            - New Reward
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink
          examples:
            - https://shop.gokarla.io
        discount:
          $ref: '#/components/schemas/ProductSaleDiscountDTO'
          nullable: true
          description: Product Discount
        translations:
          items:
            $ref: '#/components/schemas/BasicPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the promotion strings
      type: object
      title: BannerPromotionPropertiesDTO
      description: The properties of the banner promotion that belongs to a campaign.
    BannerPromotionPropertiesDTO-Output:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Super discount
        subtitle:
          type: string
          nullable: true
          title: Subtitle
          description: Promotion Subtitle
          examples:
            - Get 15% off your next order
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label
          examples:
            - New Reward
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink
          examples:
            - https://shop.gokarla.io
        discount:
          $ref: '#/components/schemas/ProductSaleDiscountDTO'
          nullable: true
          description: Product Discount
        translations:
          items:
            $ref: '#/components/schemas/BasicPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the promotion strings
      type: object
      title: BannerPromotionPropertiesDTO
      description: The properties of the banner promotion that belongs to a campaign.
    BannerPromotionWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        enable_arrows:
          type: boolean
          nullable: true
          title: Enable Arrows
          description: Whether to show navigation arrows
        enable_animation:
          type: boolean
          nullable: true
          title: Enable Animation
          description: Whether to enable animations
      type: object
      title: BannerPromotionWidgetDTO
      description: Configuration for the banner-promotion widget.
    BaseBrandPaletteSettings-Input:
      properties:
        colors:
          $ref: '#/components/schemas/BrandPaletteColors-Input'
          description: Brand color palette
      type: object
      required:
        - colors
      title: BaseBrandPaletteSettings
      description: Base Brand Palette Settings Schema.
    BaseBrandPaletteSettings-Output:
      properties:
        colors:
          description: Brand color palette
      type: object
      required:
        - colors
      title: BaseBrandPaletteSettings
      description: Base Brand Palette Settings Schema.
    BaseCampaignSettings-Input:
      properties:
        version:
          type: integer
          const: 1
          title: Version
          description: Version of the schema
          default: 1
        data:
          $ref: '#/components/schemas/CampaignSettingsV1-Input'
          description: Campaign Settings Data
      type: object
      required:
        - data
      title: BaseCampaignSettings
      description: Base Campaign Settings Schema.
    BaseCampaignSettings-Output:
      properties:
        version:
          title: Version
          description: Version of the schema
        data:
          description: Campaign Settings Data
      type: object
      required:
        - data
      title: BaseCampaignSettings
      description: Base Campaign Settings Schema.
    BaseCarrierSettings-Input:
      properties:
        version:
          type: integer
          const: 1
          title: Version
          description: Version of the schema
          default: 1
        data:
          $ref: '#/components/schemas/CarrierSettingsV1-Input'
          description: Carrier Settings Data
      type: object
      required:
        - data
      title: BaseCarrierSettings
      description: Base Carrier Settings Schema.
    BaseCarrierSettings-Output:
      properties:
        version:
          title: Version
          description: Version of the schema
        data:
          description: Carrier Settings Data
      type: object
      required:
        - data
      title: BaseCarrierSettings
      description: Base Carrier Settings Schema.
    BaseMappingsSettings-Input:
      properties:
        version:
          type: integer
          const: 1
          title: Version
          description: Version of the mappings schema
          default: 1
        data:
          $ref: '#/components/schemas/MappingsV1'
          description: Mappings data
      type: object
      title: BaseMappingsSettings
      description: Base Mappings Settings Schema.
    BaseMappingsSettings-Output:
      properties:
        version:
          title: Version
          description: Version of the mappings schema
        data:
          description: Mappings data
      type: object
      title: BaseMappingsSettings
      description: Base Mappings Settings Schema.
    BaseProductSchema:
      properties:
        product_id:
          type: string
          nullable: true
          title: Product Id
          description: Product ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        variant_id:
          type: string
          nullable: true
          title: Variant Id
          description: Variant ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
          examples:
            - Organic Coffee Beans
            - Wireless Mouse
            - T-Shirt
            - null
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
          examples:
            - 1kg / Dark Roast
            - Black / USB-C
            - Size L / Blue
            - null
        quantity:
          type: integer
          nullable: true
          title: Quantity
          description: Quantity of products
          examples:
            - 1
            - 2
            - 10
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Price of the product
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        discount_price:
          type: number
          nullable: true
          title: Discount Price
          description: Discounted price of the product
          examples:
            - 25.99
            - 10
            - 79
            - null
        currency:
          type: string
          nullable: true
          title: Currency
          description: Currency of the product (ISO 4217)
          examples:
            - EUR
            - USD
            - GBP
            - null
        size:
          type: string
          nullable: true
          title: Size
          description: Size of the product
          examples:
            - L
            - XL
            - 40x30x20cm
            - null
        images:
          items:
            $ref: '#/components/schemas/ProductImageSchema'
          type: array
          title: Images
          description: List of product images
          default: []
          examples:
            - - alt: Organic coffee beans package front view
                src: https://cdn.shop.com/products/coffee-beans-main.jpg
              - alt: Organic coffee beans package side view
                src: https://cdn.shop.com/products/coffee-beans-side.jpg
            - []
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - ABC-123-XL
            - SKU-789456
            - null
        weight:
          type: number
          nullable: true
          title: Weight
          description: Weight of the product in grams
          examples:
            - 500
            - 1000
            - 250.5
            - null
        tax_lines:
          items:
            $ref: '#/components/schemas/TaxLineSchema'
          type: array
          title: Tax Lines
          description: List of tax lines
          default: []
          examples:
            - - currency: EUR
                price: 5.7
                rate: 0.19
                title: VAT 19%
              - currency: EUR
                price: 2.1
                rate: 0.07
                title: Reduced VAT 7%
            - []
        estimated_ship_date_start:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date Start
          description: Estimated ship date start from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        estimated_ship_date_end:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date End
          description: Estimated ship date end from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        requires_shipping:
          type: boolean
          title: Requires Shipping
          description: >-
            Whether this product requires physical shipping. False for digital
            products, gift cards, services, etc.
          default: true
          examples:
            - true
            - false
      type: object
      title: BaseProductSchema
      description: Schema representing a product to be used also when it is bundled.
    BaseTrackpagesSettings-Input:
      properties:
        version:
          type: integer
          enum:
            - 1
            - 2
          title: Version
          description: Version of the schema
          default: 1
        data:
          additionalProperties: true
          type: object
          title: Data
          description: Trackpages Settings Data
          default: {}
      type: object
      title: BaseTrackpagesSettings
      description: Base Trackpages Settings Schema.
    BaseTrackpagesSettings-Output:
      properties:
        version:
          title: Version
          description: Version of the schema
        data:
          title: Data
          description: Trackpages Settings Data
      type: object
      title: BaseTrackpagesSettings
      description: Base Trackpages Settings Schema.
    BaseTriggerSettings-Input:
      properties:
        version:
          type: integer
          const: 1
          title: Version
          description: Version of the schema
          default: 1
        data:
          $ref: '#/components/schemas/TriggerSettingsV1-Input'
          description: Trigger Settings Data
      type: object
      required:
        - data
      title: BaseTriggerSettings
      description: Base Trigger Settings Schema.
    BaseTriggerSettings-Output:
      properties:
        version:
          title: Version
          description: Version of the schema
        data:
          description: Trigger Settings Data
      type: object
      required:
        - data
      title: BaseTriggerSettings
      description: Base Trigger Settings Schema.
    BasicAuthDTO:
      properties:
        username:
          type: string
          title: Username
          description: The username for basic auth
        password:
          type: string
          title: Password
          description: The password for basic auth
      type: object
      required:
        - username
        - password
      title: BasicAuthDTO
      description: Basic authentication credentials with username and password.
    BasicPromotionPropertiesDTO-Input:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        subtitle:
          type: string
          nullable: true
          title: Subtitle
          description: Promotion Subtitle
          examples:
            - The perfect addition to your order
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label
          examples:
            - Check it out!
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink
          examples:
            - https://shop.gokarla.io
        image_url:
          type: string
          title: Image Url
          description: Product Image URL
          default: >-
            https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
        discount_code:
          type: string
          nullable: true
          title: Discount Code
          description: >-
            Discount code that may be applied to the call to action url if the
            shop provider supports it. DEPRECATED: use discount object instead.
          deprecated: true
          examples:
            - DISCOUNT10
        translations:
          items:
            $ref: '#/components/schemas/BasicPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the promotion strings
      type: object
      title: BasicPromotionPropertiesDTO
      description: The properties of the basic promotion that belongs to a campaign.
    BasicPromotionPropertiesDTO-Output:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        subtitle:
          type: string
          nullable: true
          title: Subtitle
          description: Promotion Subtitle
          examples:
            - The perfect addition to your order
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label
          examples:
            - Check it out!
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink
          examples:
            - https://shop.gokarla.io
        image_url:
          type: string
          title: Image Url
          description: Product Image URL
          default: >-
            https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
        discount_code:
          type: string
          nullable: true
          title: Discount Code
          description: >-
            Discount code that may be applied to the call to action url if the
            shop provider supports it. DEPRECATED: use discount object instead.
          deprecated: true
          examples:
            - DISCOUNT10
        translations:
          items:
            $ref: '#/components/schemas/BasicPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the promotion strings
      type: object
      title: BasicPromotionPropertiesDTO
      description: The properties of the basic promotion that belongs to a campaign.
    BasicPromotionPropertiesI18n:
      properties:
        language:
          type: string
          title: Language
          description: Language of the translation
          examples:
            - en
        values:
          $ref: '#/components/schemas/BasicPromotionPropertiesText'
          description: Promotion values to translate
      type: object
      required:
        - language
        - values
      title: BasicPromotionPropertiesI18n
      description: The properties of the basic promotion that are localized.
    BasicPromotionPropertiesText:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        subtitle:
          type: string
          nullable: true
          title: Subtitle
          description: Promotion Subtitle
          examples:
            - The perfect addition to your order
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label
          examples:
            - Check it out!
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink
          examples:
            - https://shop.gokarla.io
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Product Image URL
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
      type: object
      title: BasicPromotionPropertiesText
      description: >-
        Text of the basic promotion that belongs to a campaign and can be
        translated.
    BasicPromotionWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        button_variant:
          type: string
          enum:
            - primary
            - secondary
            - outline
          nullable: true
          title: Button Variant
          description: Button style variant
        hide_logo:
          type: boolean
          nullable: true
          title: Hide Logo
          description: Whether to hide the logo
        hide_title:
          type: boolean
          nullable: true
          title: Hide Title
          description: Whether to hide the title
        hide_subtitle:
          type: boolean
          nullable: true
          title: Hide Subtitle
          description: Whether to hide the subtitle
        promotion_type:
          type: string
          enum:
            - default
            - new
          nullable: true
          title: Promotion Type
          description: Type of promotion display
      type: object
      title: BasicPromotionWidgetDTO
      description: Configuration for the basic-promotion widget.
    BrandPaletteColors-Input:
      properties:
        primary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Primary Dark
          description: Primary dark color
          examples:
            - '#1A1A1A'
        primary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Primary Light
          description: Primary light color
          examples:
            - '#FEF9F6'
        secondary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Secondary Dark
          description: Secondary dark color
          examples:
            - '#000000'
        secondary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Secondary Light
          description: Secondary light color
          examples:
            - '#FFFFFF'
        background:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Background
          description: Background color
          examples:
            - '#F0F3F4'
        surface:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Surface
          description: Surface color
          examples:
            - '#FFFFFF'
      type: object
      required:
        - primary_dark
        - primary_light
        - secondary_dark
        - secondary_light
        - background
        - surface
      title: BrandPaletteColors
      description: Brand palette colors.
    BrandPaletteColors-Output:
      properties:
        primary_dark:
          title: Primary Dark
          description: Primary dark color
          examples:
            - '#1A1A1A'
        primary_light:
          title: Primary Light
          description: Primary light color
          examples:
            - '#FEF9F6'
        secondary_dark:
          title: Secondary Dark
          description: Secondary dark color
          examples:
            - '#000000'
        secondary_light:
          title: Secondary Light
          description: Secondary light color
          examples:
            - '#FFFFFF'
        background:
          title: Background
          description: Background color
          examples:
            - '#F0F3F4'
        surface:
          title: Surface
          description: Surface color
          examples:
            - '#FFFFFF'
      type: object
      required:
        - primary_dark
        - primary_light
        - secondary_dark
        - secondary_light
        - background
        - surface
      title: BrandPaletteColors
      description: Brand palette colors.
    BrandPaletteColorsDTO:
      properties:
        primary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Primary Dark
          description: Primary dark color
          examples:
            - '#1A1A1A'
        primary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Primary Light
          description: Primary light color
          examples:
            - '#FEF9F6'
        secondary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Secondary Dark
          description: Secondary dark color
          examples:
            - '#000000'
        secondary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Secondary Light
          description: Secondary light color
          examples:
            - '#FFFFFF'
        background:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Background
          description: Background color
          examples:
            - '#F0F3F4'
        surface:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          title: Surface
          description: Surface color
          examples:
            - '#FFFFFF'
      type: object
      required:
        - primary_dark
        - primary_light
        - secondary_dark
        - secondary_light
        - background
        - surface
      title: BrandPaletteColorsDTO
      description: Brand palette colors schema.
    BrandPaletteColorsUpdateDTO:
      properties:
        primary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Primary dark color
          nullable: true
          title: Primary Dark
          examples:
            - '#1A1A1A'
        primary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Primary light color
          nullable: true
          title: Primary Light
          examples:
            - '#FEF9F6'
        secondary_dark:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Secondary dark color
          nullable: true
          title: Secondary Dark
          examples:
            - '#000000'
        secondary_light:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Secondary light color
          nullable: true
          title: Secondary Light
          examples:
            - '#FFFFFF'
        background:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Background color
          nullable: true
          title: Background
          examples:
            - '#F0F3F4'
        surface:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: Surface color
          nullable: true
          title: Surface
          examples:
            - '#FFFFFF'
      type: object
      title: BrandPaletteColorsUpdateDTO
      description: Brand palette colors update schema with optional fields.
    BrazeSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        rest_endpoint:
          type: string
          title: Rest Endpoint
          description: Braze REST endpoint URL (e.g., 'https://rest.iad-03.braze.com')
          default: https://rest.iad-03.braze.com
      type: object
      title: BrazeSettingsV1
      description: Schema for a Shop.BrazeSetting object.
    BrazeTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        rest_endpoint:
          type: string
          title: Rest Endpoint
          description: Braze REST endpoint URL
          default: https://rest.iad-03.braze.com
      type: object
      required:
        - status
      title: BrazeTriggerSettingsDTO
      description: Braze-specific trigger settings for public API.
    BrazeTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        rest_endpoint:
          type: string
          title: Rest Endpoint
          description: Braze REST endpoint URL
          default: https://rest.iad-03.braze.com
      type: object
      required:
        - status
      title: BrazeTriggerSettingsDTO
      description: Braze-specific trigger settings for public API.
    BrazeTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
        rest_endpoint:
          type: string
          nullable: true
          title: Rest Endpoint
          description: Braze REST endpoint URL
      type: object
      title: BrazeTriggerSettingsUpdateDTO
      description: Braze-specific trigger settings update for public API.
    BrevoSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        use_proxy:
          type: boolean
          title: Use Proxy
          description: Whether to use HTTP proxy for Brevo API calls
          default: false
      type: object
      title: BrevoSettingsV1
      description: Schema for a Shop.BrevoSetting object.
    BrevoTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: BrevoTriggerSettingsDTO
      description: Brevo-specific trigger settings for public API.
    BrevoTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: BrevoTriggerSettingsDTO
      description: Brevo-specific trigger settings for public API.
    BrevoTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
      type: object
      title: BrevoTriggerSettingsUpdateDTO
      description: Brevo-specific trigger settings update for public API.
    BulkCarrierSettingsResponseDTO:
      properties:
        total_shops:
          type: integer
          title: Total Shops
          description: Total number of shops processed
        successful_updates:
          type: integer
          title: Successful Updates
          description: Number of successful updates
        failed_updates:
          type: integer
          title: Failed Updates
          description: Number of failed updates
        results:
          items:
            $ref: '#/components/schemas/ShopUpdateResult'
          type: array
          title: Results
          description: Detailed results for each shop
      type: object
      required:
        - total_shops
        - successful_updates
        - failed_updates
        - results
      title: BulkCarrierSettingsResponseDTO
      description: Response for bulk carrier settings update.
    BulkCarrierSettingsUpdateDTO:
      properties:
        shop_slugs:
          items:
            type: string
          type: array
          minItems: 1
          title: Shop Slugs
          description: List of shop slugs to update. Use ['*'] for all shops
          examples:
            - - xbyx
              - vetsak
            - - '*'
        aggregator:
          type: string
          title: Aggregator
          description: The aggregator to configure.
          examples:
            - HC
        action:
          $ref: '#/components/schemas/CarrierAction'
          description: Action to perform (ENABLE, DISABLE)
          examples:
            - DISABLE
        carriers:
          items:
            type: string
          type: array
          minItems: 1
          title: Carriers
          description: List of carrier references. Use ['*'] for all carriers
          examples:
            - - dhl
              - dpd
              - ups
            - - '*'
      type: object
      required:
        - shop_slugs
        - aggregator
        - action
        - carriers
      title: BulkCarrierSettingsUpdateDTO
      description: DTO for bulk updating carrier settings across multiple shops.
    CampaignProductDTO-Input:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product Title
          examples:
            - Delivery Socks
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Product Image URL
          default: >-
            https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product hyperlink
          examples:
            - https://shop.gokarla.io/products/delivery-s-cks
        shop_product_id:
          type: string
          format: uuid
          nullable: true
          title: Shop Product Id
          description: Product ID if available
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Product Price
          examples:
            - 2.99
        currency:
          type: string
          title: Currency
          description: The currency of the price
          examples:
            - EUR
        cart_url:
          type: string
          nullable: true
          title: Cart Url
          description: Shopify add-to-cart URL
          examples:
            - https://shop.gokarla.io/cart/12345:1
        category:
          $ref: '#/components/schemas/ProductRecommendationCategory'
          nullable: true
          description: Promotion category for the product
          examples:
            - sale
        discount:
          $ref: '#/components/schemas/ProductSaleDiscountDTO'
          nullable: true
          description: Product Discount
        translations:
          items:
            $ref: '#/components/schemas/ProductRecommendationI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the product recommendation strings
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - SOCKS-BLK-L
            - COFFEE-1KG
            - null
      type: object
      required:
        - currency
      title: CampaignProductDTO
      description: >-
        The properties of the product recommendation that belongs to a
        promotion.
    CampaignProductDTO-Output:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product Title
          examples:
            - Delivery Socks
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Product Image URL
          default: >-
            https://imagedelivery.net/dXeULRC3hlKS2IJjZmVx9Q/c5a76e52-e2d0-4c27-fc04-fcde1b725200/public
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product hyperlink
          examples:
            - https://shop.gokarla.io/products/delivery-s-cks
        shop_product_id:
          type: string
          format: uuid
          nullable: true
          title: Shop Product Id
          description: Product ID if available
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Product Price
          examples:
            - 2.99
        currency:
          type: string
          title: Currency
          description: The currency of the price
          examples:
            - EUR
        cart_url:
          type: string
          nullable: true
          title: Cart Url
          description: Shopify add-to-cart URL
          examples:
            - https://shop.gokarla.io/cart/12345:1
        category:
          $ref: '#/components/schemas/ProductRecommendationCategory'
          nullable: true
          description: Promotion category for the product
          examples:
            - sale
        discount:
          $ref: '#/components/schemas/ProductSaleDiscountDTO'
          nullable: true
          description: Product Discount
        translations:
          items:
            $ref: '#/components/schemas/ProductRecommendationI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the product recommendation strings
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - SOCKS-BLK-L
            - COFFEE-1KG
            - null
      type: object
      required:
        - currency
      title: CampaignProductDTO
      description: >-
        The properties of the product recommendation that belongs to a
        promotion.
    CampaignProductDetailsDTO:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Product ID
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
        category:
          $ref: '#/components/schemas/ProductRecommendationCategory'
          nullable: true
          description: Promotion category for the product
          examples:
            - sale
        discount:
          $ref: '#/components/schemas/ProductSaleDiscountDTO'
          nullable: true
          description: Product Discount
      type: object
      required:
        - id
      title: CampaignProductDetailsDTO
      description: >-
        The properties of the product recommendation that belongs to a
        promotion.
    CampaignRequestDTO:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Campaign visibility toggle. Only one campaign can be enabled per
            segment at a time.
          default: false
        name:
          type: string
          title: Name
          description: Campaign name to be used internally
          examples:
            - Q3 Campaign
        start_date:
          type: string
          format: date-time
          nullable: true
          title: Start Date
          description: Time in which the campaign will start (defaults to now)
          examples:
            - '2024-10-01T00:00:00Z'
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time in which the campaign will end
          examples:
            - '2024-10-11T00:00:00Z'
        segment:
          type: string
          title: Segment
          description: Segment to which the campaign is targeted
          examples:
            - b2b
        promotion_type:
          $ref: '#/components/schemas/PromotionType'
          description: Type of promotion
        promotion_properties:
          anyOf:
            - $ref: '#/components/schemas/ProductPromotionPropertiesRequestDTO'
            - $ref: '#/components/schemas/BasicPromotionPropertiesDTO-Input'
            - $ref: '#/components/schemas/BannerPromotionPropertiesDTO-Input'
          title: Promotion Properties
        discount_id:
          type: string
          format: uuid
          nullable: true
          title: Discount Id
          description: Discount UUID
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
            - null
      type: object
      required:
        - name
        - segment
        - promotion_type
        - promotion_properties
      title: CampaignRequestDTO
      description: The Campaign object to be created.
    CampaignResponseDTO-Input:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Campaign visibility toggle. Only one campaign can be enabled per
            segment at a time.
          default: false
        name:
          type: string
          title: Name
          description: Campaign name to be used internally
          examples:
            - Q3 Campaign
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Time in which the campaign will start (defaults to now)
          examples:
            - '2024-10-01T00:00:00Z'
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time in which the campaign will end
          examples:
            - '2024-10-11T00:00:00Z'
        segment:
          type: string
          title: Segment
          description: Segment to which the campaign is targeted
          examples:
            - b2b
        promotion_type:
          $ref: '#/components/schemas/PromotionType'
          description: Type of promotion
        promotion_properties:
          anyOf:
            - $ref: '#/components/schemas/BasicPromotionPropertiesDTO-Input'
            - $ref: '#/components/schemas/ProductPromotionPropertiesResponseDTO-Input'
            - $ref: '#/components/schemas/BannerPromotionPropertiesDTO-Input'
          title: Promotion Properties
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Campaign UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop Slug
          examples:
            - gokarla
        status:
          $ref: '#/components/schemas/CampaignStatus'
          description: The status of the campaign
          examples:
            - active
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: The discount attached to the campaign
          examples:
            - code: MYCODE10
              type: order
              uuid: def3b49c-9268-4aaa-959c-ea2bb8c66f55
              value: 10
              value_type: percentage
      type: object
      required:
        - name
        - start_date
        - segment
        - promotion_type
        - promotion_properties
        - uuid
        - shop_slug
        - status
      title: CampaignResponseDTO
      description: The Campaign object to be exchanged with the HTTP clients.
    CampaignResponseDTO-Output:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Campaign visibility toggle. Only one campaign can be enabled per
            segment at a time.
          default: false
        name:
          type: string
          title: Name
          description: Campaign name to be used internally
          examples:
            - Q3 Campaign
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Time in which the campaign will start (defaults to now)
          examples:
            - '2024-10-01T00:00:00Z'
        end_date:
          type: string
          format: date-time
          nullable: true
          title: End Date
          description: Time in which the campaign will end
          examples:
            - '2024-10-11T00:00:00Z'
        segment:
          type: string
          title: Segment
          description: Segment to which the campaign is targeted
          examples:
            - b2b
        promotion_type:
          $ref: '#/components/schemas/PromotionType'
          description: Type of promotion
        promotion_properties:
          anyOf:
            - $ref: '#/components/schemas/BasicPromotionPropertiesDTO-Output'
            - $ref: >-
                #/components/schemas/ProductPromotionPropertiesResponseDTO-Output
            - $ref: '#/components/schemas/BannerPromotionPropertiesDTO-Output'
          title: Promotion Properties
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Campaign UUID
          examples:
            - d1e99924-df48-4781-b3ad-ff147d3e70a2
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop Slug
          examples:
            - gokarla
        status:
          $ref: '#/components/schemas/CampaignStatus'
          description: The status of the campaign
          examples:
            - active
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: The discount attached to the campaign
          examples:
            - code: MYCODE10
              type: order
              uuid: def3b49c-9268-4aaa-959c-ea2bb8c66f55
              value: 10
              value_type: percentage
      type: object
      required:
        - name
        - start_date
        - segment
        - promotion_type
        - promotion_properties
        - uuid
        - shop_slug
        - status
      title: CampaignResponseDTO
      description: The Campaign object to be exchanged with the HTTP clients.
    CampaignSettingsDTO:
      properties:
        product_recommendations_enabled:
          type: boolean
          title: Product Recommendations Enabled
          description: Dynamic campaigns status
          examples:
            - true
      type: object
      required:
        - product_recommendations_enabled
      title: CampaignSettingsDTO
      description: The campaign settings object to be exchanged with the HTTP clients.
    CampaignSettingsUpdateDTO:
      properties:
        product_recommendations_enabled:
          type: boolean
          nullable: true
          title: Product Recommendations Enabled
          description: Toggle dynamic campaigns
          examples:
            - true
      type: object
      title: CampaignSettingsUpdateDTO
      description: >-
        The campaign settings update object to be exchanged with the HTTP
        clients.
    CampaignSettingsV1-Input:
      properties:
        product_recommendations_enabled:
          type: boolean
          title: Product Recommendations Enabled
          description: Flag to enable/disable dynamic campaigns
          default: false
      type: object
      title: CampaignSettingsV1
      description: Campaign Settings Schema.
    CampaignSettingsV1-Output:
      properties:
        product_recommendations_enabled:
          title: Product Recommendations Enabled
          description: Flag to enable/disable dynamic campaigns
      type: object
      title: CampaignSettingsV1
      description: Campaign Settings Schema.
    CampaignStatus:
      type: string
      enum:
        - active
        - inactive
        - scheduled
        - paused
      title: CampaignStatus
      description: State of the Campaign based on the start and end date.
    CarrierAction:
      type: string
      enum:
        - ENABLE
        - DISABLE
      title: CarrierAction
      description: Carrier configuration actions.
    CarrierDTO:
      properties:
        tracking_number:
          type: string
          title: Tracking Number
          description: Carrier Tracking Number
        carrier_reference:
          type: string
          title: Carrier Reference
          description: Carrier reference
        tracking_url:
          type: string
          nullable: true
          title: Tracking Url
          description: Shipment tracking URL.
      type: object
      required:
        - tracking_number
        - carrier_reference
      title: CarrierDTO
      description: Carrier DTO to be used in the Tracking object.
    CarrierEnum:
      type: string
      enum:
        - dhl
        - dhl_ecommerce_nl
        - dhlexp
        - dhl_old
        - dhl2man
        - deutsche_post_mail
        - amazon
        - brt
        - dpd
        - dpdn
        - dpd-at
        - dpd-ch
        - dpduk
        - dpd-de
        - gls
        - gls_es
        - gls_it
        - gls_express
        - goexp
        - hrs
        - postat
        - rhe
        - royalmail
        - swisspost
        - ups
        - bpost
        - dao
        - anpost
        - bring
        - posti
        - postnl
        - postnl_inter
        - usps
        - fedex
        - fedex_uk
        - fedex_freight
        - postnord
        - parcelone
        - dachser
        - asendia_de
        - colissimo
        - inpost_uk
        - inpost_pl
        - inpost_it
        - mondial_relay
        - evri
        - poste_italiane
        - kuehne-nagel
        - dsv
        - ait_usa
        - ait_uk
        - colis_prive
        - dynalogic
        - correos_es
        - landmark_global
        - ppl_cz
        - karl_juergersen
        - hellmann
      title: CarrierEnum
      description: All Carriers Supported.
    CarrierSettingsDTO:
      properties:
        shipment_updates:
          type: boolean
          title: Shipment Updates
          description: Shipment updates from carriers retrieval status
          examples:
            - true
      type: object
      required:
        - shipment_updates
      title: CarrierSettingsDTO
      description: The trigger settings object to be exchanged with the HTTP clients.
    CarrierSettingsUpdateDTO:
      properties:
        shipment_updates:
          type: boolean
          nullable: true
          title: Shipment Updates
          description: Toggle retrieving shipment updates from carriers
          examples:
            - true
      type: object
      title: CarrierSettingsUpdateDTO
      description: >-
        The trigger settings update object to be exchanged with the HTTP
        clients.
    CarrierSettingsV1-Input:
      properties:
        pp_status:
          $ref: '#/components/schemas/SettingStatus'
          description: Current status of the pp integration
          default: disabled
        pp_enabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Pp Enabled Carriers
          description: List of carrier references to enable for pp
        pp_disabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Pp Disabled Carriers
          description: List of carrier references to disable for pp
        override_pp_tracking_config_for_segments:
          items:
            type: string
          type: array
          nullable: true
          title: Override Pp Tracking Config For Segments
          description: List of segments to submit to pp regardless of tracking config
        aftership_status:
          $ref: '#/components/schemas/SettingStatus'
          description: Current status of the aftership integration
          default: disabled
        aftership_enabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Aftership Enabled Carriers
          description: List of carrier references to enable for aftership.
        aftership_disabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Aftership Disabled Carriers
          description: List of carrier references to disable for aftership.
        override_aftership_tracking_config_for_segments:
          items:
            type: string
          type: array
          nullable: true
          title: Override Aftership Tracking Config For Segments
          description: >-
            List of segments to submit to aftership regardless of tracking
            config
        hc_status:
          $ref: '#/components/schemas/SettingStatus'
          description: Current status of the hc integration
          default: disabled
        hc_enabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Hc Enabled Carriers
          description: List of carrier references to enable for hc
        hc_disabled_carriers:
          items:
            type: string
          type: array
          nullable: true
          title: Hc Disabled Carriers
          description: List of carrier references to disable for hc
        override_hc_tracking_config_for_segments:
          items:
            type: string
          type: array
          nullable: true
          title: Override Hc Tracking Config For Segments
          description: List of segments to submit to hc regardless of tracking config
      type: object
      title: CarrierSettingsV1
      description: Schema for a Shop.CarrierSettings object.
    CarrierSettingsV1-Output:
      properties:
        pp_status:
          description: Current status of the pp integration
        pp_enabled_carriers:
          title: Pp Enabled Carriers
          description: List of carrier references to enable for pp
        pp_disabled_carriers:
          title: Pp Disabled Carriers
          description: List of carrier references to disable for pp
        override_pp_tracking_config_for_segments:
          title: Override Pp Tracking Config For Segments
          description: List of segments to submit to pp regardless of tracking config
        aftership_status:
          description: Current status of the aftership integration
        aftership_enabled_carriers:
          title: Aftership Enabled Carriers
          description: List of carrier references to enable for aftership.
        aftership_disabled_carriers:
          title: Aftership Disabled Carriers
          description: List of carrier references to disable for aftership.
        override_aftership_tracking_config_for_segments:
          title: Override Aftership Tracking Config For Segments
          description: >-
            List of segments to submit to aftership regardless of tracking
            config
        hc_status:
          description: Current status of the hc integration
        hc_enabled_carriers:
          title: Hc Enabled Carriers
          description: List of carrier references to enable for hc
        hc_disabled_carriers:
          title: Hc Disabled Carriers
          description: List of carrier references to disable for hc
        override_hc_tracking_config_for_segments:
          title: Override Hc Tracking Config For Segments
          description: List of segments to submit to hc regardless of tracking config
      type: object
      title: CarrierSettingsV1
      description: Schema for a Shop.CarrierSettings object.
    ClaimCreationDTO:
      properties:
        resolution_preference:
          $ref: '#/components/schemas/ClaimResolutionPreference'
          nullable: true
          description: Claim resolution preference
          examples:
            - refund
        reason:
          $ref: '#/components/schemas/ClaimReason'
          description: Reason to submit the claim
          examples:
            - damage
        status:
          $ref: '#/components/schemas/ClaimStatus'
          nullable: true
          description: Claim status
          examples:
            - pending
        description:
          type: string
          nullable: true
          title: Description
          description: Complimentary description to explain why the claim was submitted
          examples:
            - Package was damaged on the right side
        customer_signature_image_url:
          type: string
          nullable: true
          title: Customer Signature Image Url
          description: The private image url with the client signature
          examples:
            - >-
              https://cdn.gokarla.io/12d6cceb-efa5-4bbc-a557-a6d31ed9f68b/df4f85de-1580-4c33-9178-cee6729e010a.png
        selected_items:
          items:
            $ref: '#/components/schemas/SelectedItemSchema'
          type: array
          title: Selected Items
          description: List of selected product items
          default: []
          examples:
            - - image_urls:
                  - https://cdn.shop.com/products/damaged-mouse-1.jpg
                  - https://cdn.shop.com/products/damaged-mouse-2.jpg
                net_price: 29.99
                quantity: 1
                sku: PROD-001
                title: Wireless Mouse
              - image_urls: []
                net_price: 15.5
                quantity: 2
                sku: COFFEE-1KG
                title: Coffee Beans 1kg
            - []
        image_urls:
          items:
            type: string
          type: array
          title: Image Urls
          description: >-
            List of image URLs that give evidence of the damaged product or
            claim in general
          default: []
        optional_image_urls:
          items:
            type: string
          type: array
          title: Optional Image Urls
          description: >-
            List of image urls classified as optional (not required for the
            claim but that may help to resolve it)
          default: []
        dropoff_permission:
          type: boolean
          nullable: true
          title: Dropoff Permission
          description: >-
            The customer's response about whether they authorized the carrier to
            leave the package at a designated spot without requiring direct
            delivery
        step_user_input:
          items:
            $ref: '#/components/schemas/StepUserInput'
          type: array
          nullable: true
          title: Step User Input
          description: User input for each step in the claim process
        shipment_id:
          type: string
          format: uuid
          nullable: true
          title: Shipment Id
          description: >-
            Unique identifier for the system in Karla. If not provided, a
            tracking number has to be given.
          examples:
            - 7589e324-8cd7-4868-800b-cd0facaf633c
        damaged_product_items:
          items:
            $ref: '#/components/schemas/DamagedProductItemSchema'
          type: array
          title: Damaged Product Items
          description: List of damaged product items (DEPRECATED)
          default: []
          examples:
            - - image_urls:
                  - https://cdn.shop.com/claims/damaged-laptop-screen.jpg
                net_price: 999.99
                quantity: 1
                sku: LAPTOP-001
                title: Laptop Computer
            - []
      type: object
      required:
        - reason
      title: ClaimCreationDTO
      description: The Claim request data to be send in the body for creation.
    ClaimReason:
      type: string
      enum:
        - partial_damage
        - damage
        - investigation
        - support
        - return
        - dissatisfied_with_product
        - wrong_product
        - missing_product
      title: ClaimReason
      description: Type reason for a claim.
    ClaimResolutionPreference:
      type: string
      enum:
        - reorder
        - refund
        - keep_with_reward
      title: ClaimResolutionPreference
      description: Type resolution preference for a claim.
    ClaimResponseDTO-Input:
      properties:
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: When the resource was created
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: When the resource was last updated
        deleted_at:
          nullable: true
          title: Deleted At
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Claim UUID
          examples:
            - 38fdc365-7de9-4313-afbd-0ed23717c5e0
        order_id:
          type: string
          format: uuid
          nullable: true
          title: Order Id
          description: Order UUID
        shipment_id:
          type: string
          format: uuid
          nullable: true
          title: Shipment Id
          description: Shipment UUID
        shop_id:
          type: string
          format: uuid
          title: Shop Id
          description: Shop UUID
          examples:
            - 38fdc365-7de9-4313-afbd-0ed23717c5e0
        order_number:
          type: string
          nullable: true
          title: Order Number
          description: Order number related to the shop
          examples:
            - '12345'
        resolution_preference:
          $ref: '#/components/schemas/ClaimResolutionPreference'
          nullable: true
          description: Claim resolution preference
          examples:
            - refund
        reason:
          $ref: '#/components/schemas/ClaimReason'
          description: Reason to submit the claim
          examples:
            - partial_damage
        status:
          $ref: '#/components/schemas/ClaimStatus'
          description: Progress of the claim
          default: pending
          examples:
            - pending
        description:
          type: string
          nullable: true
          title: Description
          description: Complimentary description to explain why the claim was submitted
          examples:
            - Package was damaged on the right side
        customer_signature_image_url:
          type: string
          nullable: true
          title: Customer Signature Image Url
          description: The private image url with the client signature
          examples:
            - >-
              https://cdn.gokarla.io/12d6cceb-efa5-4bbc-a557-a6d31ed9f68b/df4f85de-1580-4c33-9178-cee6729e010a.png
        damaged_product_items:
          items:
            $ref: '#/components/schemas/DamagedProductItemSchema'
          type: array
          title: Damaged Product Items
          description: List of damaged product items (DEPRECATED)
          default: []
        selected_items:
          items:
            $ref: '#/components/schemas/SelectedItemSchema'
          type: array
          title: Selected Items
          description: List of selected product items
          default: []
        image_urls:
          items:
            type: string
          type: array
          title: Image Urls
          description: List of image urls
          default: []
        optional_image_urls:
          items:
            type: string
          type: array
          title: Optional Image Urls
          description: >-
            List of image urls classified as optional (not required for the
            claim but that may help to resolve it)
          default: []
        address:
          $ref: '#/components/schemas/AddressSchema'
          nullable: true
          description: Delivery address for the original order
        net_invoice_amount:
          type: number
          nullable: true
          title: Net Invoice Amount
          description: >-
            Price of the entire order without discounts, shipping costs and
            taxes applied
        tracking_number:
          type: string
          nullable: true
          title: Tracking Number
          description: Carrier Tracking Number
        carrier_reference:
          $ref: '#/components/schemas/CarrierEnum'
          nullable: true
          description: Carrier reference
        scan_date:
          type: string
          format: date-time
          nullable: true
          title: Scan Date
          description: Date the package was picked by the carrier
          examples:
            - '2024-03-14T07:14:23+00:00'
        weight_kg:
          type: number
          nullable: true
          title: Weight Kg
          description: The weight of the package in kilograms
        dropoff_permission:
          type: boolean
          nullable: true
          title: Dropoff Permission
          description: >-
            The customer's response about whether they authorized the carrier to
            leave the package at a designated spot without requiring direct
            delivery
        step_user_input:
          items:
            $ref: '#/components/schemas/StepUserInput'
          type: array
          nullable: true
          title: Step User Input
          description: User input for each step in the claim process
          examples:
            - - step_id: question
                user_input:
                  input_type: selected_answer
                  input_value: 'yes'
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop identifier as a url slug
          examples:
            - gokarla
      type: object
      required:
        - uuid
        - shop_id
        - reason
        - shop_slug
      title: ClaimResponseDTO
      description: The Claim response data.
    ClaimResponseDTO-Output:
      properties:
        created_at:
          title: Created At
          description: When the resource was created
        updated_at:
          title: Updated At
          description: When the resource was last updated
        uuid:
          title: Uuid
          description: Claim UUID
          examples:
            - 38fdc365-7de9-4313-afbd-0ed23717c5e0
        order_id:
          title: Order Id
          description: Order UUID
        shipment_id:
          title: Shipment Id
          description: Shipment UUID
        shop_id:
          title: Shop Id
          description: Shop UUID
          examples:
            - 38fdc365-7de9-4313-afbd-0ed23717c5e0
        order_number:
          title: Order Number
          description: Order number related to the shop
          examples:
            - '12345'
        resolution_preference:
          description: Claim resolution preference
          examples:
            - refund
        reason:
          description: Reason to submit the claim
          examples:
            - partial_damage
        status:
          description: Progress of the claim
          examples:
            - pending
        description:
          title: Description
          description: Complimentary description to explain why the claim was submitted
          examples:
            - Package was damaged on the right side
        customer_signature_image_url:
          title: Customer Signature Image Url
          description: The private image url with the client signature
          examples:
            - >-
              https://cdn.gokarla.io/12d6cceb-efa5-4bbc-a557-a6d31ed9f68b/df4f85de-1580-4c33-9178-cee6729e010a.png
        damaged_product_items:
          title: Damaged Product Items
          description: List of damaged product items (DEPRECATED)
        selected_items:
          title: Selected Items
          description: List of selected product items
        image_urls:
          title: Image Urls
          description: List of image urls
        optional_image_urls:
          title: Optional Image Urls
          description: >-
            List of image urls classified as optional (not required for the
            claim but that may help to resolve it)
        address:
          description: Delivery address for the original order
        net_invoice_amount:
          title: Net Invoice Amount
          description: >-
            Price of the entire order without discounts, shipping costs and
            taxes applied
        tracking_number:
          title: Tracking Number
          description: Carrier Tracking Number
        carrier_reference:
          description: Carrier reference
        scan_date:
          title: Scan Date
          description: Date the package was picked by the carrier
          examples:
            - '2024-03-14T07:14:23+00:00'
        weight_kg:
          title: Weight Kg
          description: The weight of the package in kilograms
        dropoff_permission:
          title: Dropoff Permission
          description: >-
            The customer's response about whether they authorized the carrier to
            leave the package at a designated spot without requiring direct
            delivery
        step_user_input:
          title: Step User Input
          description: User input for each step in the claim process
          examples:
            - - step_id: question
                user_input:
                  input_type: selected_answer
                  input_value: 'yes'
        shop_slug:
          title: Shop Slug
          description: Shop identifier as a url slug
          examples:
            - gokarla
      type: object
      required:
        - uuid
        - shop_id
        - reason
        - shop_slug
      title: ClaimResponseDTO
      description: The Claim response data.
    ClaimStatus:
      type: string
      enum:
        - pending
        - accepted
        - rejected
        - closed
      title: ClaimStatus
      description: Type status for a claim.
    ClaimUpdateDTO:
      properties:
        resolution_preference:
          $ref: '#/components/schemas/ClaimResolutionPreference'
          nullable: true
          description: Claim resolution preference
          examples:
            - refund
        status:
          $ref: '#/components/schemas/ClaimStatus'
          nullable: true
          description: Claim status
          examples:
            - pending
      type: object
      title: ClaimUpdateDTO
      description: The Claim request data to be send in the body for an update.
    ClaimsPaginatedResponse-Input:
      properties:
        claims:
          items:
            $ref: '#/components/schemas/ClaimResponseDTO-Input'
          type: array
          title: Claims
          description: List of claims
        pagination:
          $ref: '#/components/schemas/PaginationInfo-Input'
          description: Pagination metadata
      type: object
      required:
        - claims
        - pagination
      title: ClaimsPaginatedResponse
      description: Paginated response for claims search.
    ClaimsPaginatedResponse-Output:
      properties:
        claims:
          items:
            $ref: '#/components/schemas/ClaimResponseDTO-Output'
          type: array
          title: Claims
          description: List of claims
        pagination:
          $ref: '#/components/schemas/PaginationInfo-Output'
          description: Pagination metadata
      type: object
      required:
        - claims
        - pagination
      title: ClaimsPaginatedResponse
      description: Paginated response for claims search.
    ClientIDAndSecretDTO:
      properties:
        client_id:
          type: string
          title: Client Id
          description: The client id
        client_secret:
          type: string
          nullable: true
          title: Client Secret
          description: The client secret
      type: object
      required:
        - client_id
      title: ClientIDAndSecretDTO
      description: A client id and client key secret.
    ClientIDAndSecretSchema:
      properties:
        client_id:
          title: Client Id
          description: The client id
        client_secret:
          title: Client Secret
          description: The client secret
      type: object
      required:
        - client_id
      title: ClientIDAndSecretSchema
      description: Schema for a client id and client key secret.
    CollectionPoint:
      properties:
        uuid:
          type: string
          nullable: true
          title: Uuid
          description: Unique ID for the specific collection point.
        collection_point_identifier:
          type: string
          nullable: true
          title: Collection Point Identifier
          description: >-
            Generated ID based on carrier unique ID and other system logic. The
            purpose of having this is to identify unique collection points and
            compare new and old collection points.
        address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Address of the collection point
        status:
          type: string
          nullable: true
          title: Status
          description: >-
            Collection point's activity status which is either 'active' or
            'expired'
        updated_date:
          type: string
          nullable: true
          title: Updated Date
          description: >-
            Latest update time recorded for the information provided for the
            collection point in UTC+0.
        lat:
          type: number
          nullable: true
          title: Lat
          description: Collection point address' latitude details.
        long:
          type: number
          nullable: true
          title: Long
          description: Collection point address' longitude details.
      type: object
      title: CollectionPoint
      description: Collection point object schema.
    CountryInsightDTO:
      properties:
        country_code:
          type: string
          title: Country Code
          description: ISO country code
        shipment_count:
          type: integer
          title: Shipment Count
          description: Total fulfillments to this country
        tracking_companies:
          items:
            $ref: '#/components/schemas/TrackingCompanyInsightDTO'
          type: array
          title: Tracking Companies
          description: Tracking companies used for this country
      type: object
      required:
        - country_code
        - shipment_count
        - tracking_companies
      title: CountryInsightDTO
      description: A destination country with its tracking companies.
    CreateDealDTO:
      properties:
        discount_id:
          type: string
          format: uuid
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        translations:
          items:
            $ref: '#/components/schemas/DealTranslations-Input'
          type: array
          nullable: true
          title: Translations
          description: Translations
      type: object
      required:
        - discount_id
      title: CreateDealDTO
      description: Create deal DTO.
    CreateShipmentProductDTO:
      properties:
        product_id:
          type: string
          title: Product Id
          description: The product ID (Shopify product_id)
          examples:
            - '7654321098765'
        variant_id:
          type: string
          nullable: true
          title: Variant Id
          description: The variant ID (Shopify variant_id)
          examples:
            - '43210987654321'
        quantity:
          type: integer
          minimum: 1
          title: Quantity
          description: Quantity of this product in the shipment
          default: 1
          examples:
            - 1
            - 2
      type: object
      required:
        - product_id
      title: CreateShipmentProductDTO
      description: Product information for shipment creation.
    CreateShipmentRequestDTO:
      properties:
        order_id:
          type: string
          title: Order Id
          description: Order identifier (format depends on order_id_type)
          examples:
            - F-2025-31066
            - '5512667890123'
            - '1234'
        order_id_type:
          $ref: '#/components/schemas/OrderReferenceType'
          description: >-
            Type of order identifier: `uuid` (Karla order UUID), `external_id`
            (Shopify order ID), `order_number` (merchant-visible order number),
            `order_name` (Shopify order name like F-2025-31066)
          examples:
            - order_name
            - external_id
            - order_number
            - uuid
        tracking_number:
          type: string
          nullable: true
          title: Tracking Number
          description: >-
            Carrier tracking number. If not provided, creates a draft shipment
            (ORDER_CREATED event).
          examples:
            - RETURN123456789
        carrier_reference:
          type: string
          nullable: true
          title: Carrier Reference
          description: >-
            Carrier reference code (e.g., 'dhl', 'ups'). If not provided,
            carrier will be auto-detected from tracking number.
          examples:
            - dhl
            - ups
            - fedex
        direction:
          $ref: '#/components/schemas/ShipmentDirectionEnum'
          description: >-
            Shipment direction: `merchant_customer` (outbound to customer) or
            `customer_merchant` (return from customer)
          default: customer_merchant
          examples:
            - customer_merchant
            - merchant_customer
        external_shipment_id:
          type: string
          nullable: true
          title: External Shipment Id
          description: External shipment/return ID (e.g., Shopify return ID)
          examples:
            - '71765426559'
        products:
          items:
            $ref: '#/components/schemas/CreateShipmentProductDTO'
          type: array
          nullable: true
          title: Products
          description: Products included in this shipment (optional)
      type: object
      required:
        - order_id
        - order_id_type
      title: CreateShipmentRequestDTO
      description: |-
        Request DTO for creating a shipment.

        Used for creating return shipments or other shipments via the API.
    DamagedProductItemSchema:
      properties:
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product item
          examples:
            - PROD-001
            - ABC-XL-BLK
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
          examples:
            - Wireless Mouse
            - Coffee Beans 1kg
            - null
        quantity:
          type: integer
          title: Quantity
          description: Quantity of the product item
          examples:
            - 1
            - 2
            - 5
        net_price:
          type: number
          nullable: true
          title: Net Price
          description: Price of the product without a discount and taxes applied
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        image_urls:
          items:
            type: string
          type: array
          title: Image Urls
          description: List of image URLs of the product
          default: []
          examples:
            - - https://cdn.shop.com/products/damaged-item-1.jpg
              - https://cdn.shop.com/products/damaged-item-2.jpg
            - []
      type: object
      required:
        - quantity
      title: DamagedProductItemSchema
      description: The Damaged product item data.
    Data:
      properties:
        shipment_uuid:
          type: string
          title: Shipment Uuid
          description: >-
            Generated unique identifier for a shipment. Users can use this uuid
            to manage their shipments with other API functions.
        tracking_number:
          type: string
          nullable: true
          title: Tracking Number
          description: Tracking number of the shipment.
        carrier_reference:
          type: string
          nullable: true
          title: Carrier Reference
          description: Carrier reference number for the shipment.
        additional_info:
          additionalProperties: true
          type: object
          nullable: true
          title: Additional Info
          description: Lists all custom fields added by the user for the shipment.
        expected_delivery:
          $ref: '#/components/schemas/api__schema__parcel_perform__ExpectedDelivery'
          nullable: true
          description: Stores details pertaining to shipment's expected delivery values.
        all_events:
          items:
            $ref: '#/components/schemas/AllEvent'
          type: array
          nullable: true
          title: All Events
          description: Lists all of the events processed for the shipment.
        new_events:
          items:
            $ref: '#/components/schemas/AllEvent'
          type: array
          nullable: true
          title: New Events
          description: Lists all of the new events processed for the shipment.
        collection_point:
          $ref: '#/components/schemas/CollectionPoint'
          nullable: true
          description: Collection point details.
        parcel_recipient_information:
          type: string
          nullable: true
          title: Parcel Recipient Information
          description: Information related to the parcel recipient.
        sender_address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Sender Address.
        from_address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Sender Address.
        to_address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Recipient Address.
        recipient_address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Recipient Address.
        return_address:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: Return Address.
      type: object
      required:
        - shipment_uuid
      title: Data
      description: Data object schema.
    DealDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Deal UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_name:
          type: string
          title: Shop Name
          description: Shop name
        discount_id:
          type: string
          format: uuid
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        rank:
          type: integer
          nullable: true
          title: Rank
          description: Rank
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: Discount
      type: object
      required:
        - uuid
        - shop_slug
        - shop_name
        - discount_id
        - brand_image_url
        - brand_logo_url
        - cta_url
        - title
        - description
      title: DealDTO
      description: Deal DTO.
    DealDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Deal UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_name:
          type: string
          title: Shop Name
          description: Shop name
        discount_id:
          type: string
          format: uuid
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        rank:
          type: integer
          nullable: true
          title: Rank
          description: Rank
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: Discount
      type: object
      required:
        - uuid
        - shop_slug
        - shop_name
        - discount_id
        - brand_image_url
        - brand_logo_url
        - cta_url
        - title
        - description
      title: DealDTO
      description: Deal DTO.
    DealDetailDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Deal UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_name:
          type: string
          title: Shop Name
          description: Shop name
        discount_id:
          type: string
          format: uuid
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        rank:
          type: integer
          nullable: true
          title: Rank
          description: Rank
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: Discount
        translations:
          items:
            $ref: '#/components/schemas/DealTranslations-Input'
          type: array
          nullable: true
          title: Translations
          description: All translations without language filtering
      type: object
      required:
        - uuid
        - shop_slug
        - shop_name
        - discount_id
        - brand_image_url
        - brand_logo_url
        - cta_url
        - title
        - description
      title: DealDetailDTO
      description: Deal detail DTO with all translations.
    DealDetailDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Deal UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_name:
          type: string
          title: Shop Name
          description: Shop name
        discount_id:
          type: string
          format: uuid
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        rank:
          type: integer
          nullable: true
          title: Rank
          description: Rank
        discount:
          $ref: '#/components/schemas/DiscountDTO'
          nullable: true
          description: Discount
        translations:
          items:
            $ref: '#/components/schemas/DealTranslations-Output'
          type: array
          nullable: true
          title: Translations
          description: All translations without language filtering
      type: object
      required:
        - uuid
        - shop_slug
        - shop_name
        - discount_id
        - brand_image_url
        - brand_logo_url
        - cta_url
        - title
        - description
      title: DealDetailDTO
      description: Deal detail DTO with all translations.
    DealTranslations-Input:
      properties:
        language:
          type: string
          title: Language
        data:
          additionalProperties:
            type: string
          type: object
          title: Data
      type: object
      required:
        - language
        - data
      title: DealTranslations
      description: Deal translations.
    DealTranslations-Output:
      properties:
        language:
          title: Language
        data:
          title: Data
      type: object
      required:
        - language
        - data
      title: DealTranslations
      description: Deal translations.
    DealsWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        widget_type:
          type: string
          enum:
            - basic
            - discount_variation
            - deals_banner
          nullable: true
          title: Widget Type
          description: Type of deals widget display
      type: object
      title: DealsWidgetDTO
      description: Configuration for the deals widget (formerly insights).
    DiscountCategory:
      type: string
      enum:
        - percentage
        - fixed_amount
        - free_shipping
      title: DiscountCategory
      description: Type of the Discount to store.
    DiscountCreationDTO:
      properties:
        code:
          type: string
          nullable: true
          title: Code
          description: Discount promotion code
          examples:
            - KARLA
        target_selection:
          $ref: '#/components/schemas/DiscountTargetSelectionEnum'
          nullable: true
          description: >-
            The selection method for line items or shipping lines to be
            discounted.
        target_type:
          $ref: '#/components/schemas/DiscountTargetTypeEnum'
          nullable: true
          description: The type of item that the discount applies to.
        title:
          type: string
          nullable: true
          title: Title
          description: The customer facing name of the discount
        value_type:
          $ref: '#/components/schemas/DiscountValueTypeEnum'
          nullable: true
          description: Type of discount value
          examples:
            - percentage
        value:
          type: number
          nullable: true
          title: Value
          description: Discount value based on its type
          examples:
            - 3.49
        type:
          $ref: '#/components/schemas/DiscountTypeEnum'
          description: Type of discount
      type: object
      required:
        - type
      title: DiscountCreationDTO
      description: The Discount request data to be send in the body for creation.
    DiscountDTO:
      properties:
        code:
          type: string
          nullable: true
          title: Code
          description: Discount promotion code
          examples:
            - KARLA
        target_selection:
          $ref: '#/components/schemas/DiscountTargetSelectionEnum'
          nullable: true
          description: >-
            The selection method for line items or shipping lines to be
            discounted.
        target_type:
          $ref: '#/components/schemas/DiscountTargetTypeEnum'
          nullable: true
          description: The type of item that the discount applies to.
        title:
          type: string
          nullable: true
          title: Title
          description: The customer facing name of the discount
        value_type:
          $ref: '#/components/schemas/DiscountValueTypeEnum'
          nullable: true
          description: Type of discount value
          examples:
            - percentage
        value:
          type: number
          nullable: true
          title: Value
          description: Discount value based on its type
          examples:
            - 3.49
        type:
          $ref: '#/components/schemas/DiscountTypeEnum'
          description: Type of discount
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Discount UUID
      type: object
      required:
        - type
        - uuid
      title: DiscountDTO
      description: The Discount entity to be used in DTOs like nested objects.
    DiscountResponseDTO:
      properties:
        code:
          type: string
          nullable: true
          title: Code
          description: Discount promotion code
          examples:
            - KARLA
        target_selection:
          $ref: '#/components/schemas/DiscountTargetSelectionEnum'
          nullable: true
          description: >-
            The selection method for line items or shipping lines to be
            discounted.
        target_type:
          $ref: '#/components/schemas/DiscountTargetTypeEnum'
          nullable: true
          description: The type of item that the discount applies to.
        title:
          type: string
          nullable: true
          title: Title
          description: The customer facing name of the discount
        value_type:
          $ref: '#/components/schemas/DiscountValueTypeEnum'
          nullable: true
          description: Type of discount value
          examples:
            - percentage
        value:
          type: number
          nullable: true
          title: Value
          description: Discount value based on its type
          examples:
            - 3.49
        type:
          $ref: '#/components/schemas/DiscountTypeEnum'
          description: Type of discount
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Discount UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop identifier as a url slug
          examples:
            - gokarla
      type: object
      required:
        - type
        - uuid
        - shop_slug
      title: DiscountResponseDTO
      description: The order discount response data.
    DiscountTargetSelectionEnum:
      type: string
      enum:
        - all
        - group
        - specific
      title: DiscountTargetSelectionEnum
      description: Selection method for line items or shipping lines to be discounted.
    DiscountTargetTypeEnum:
      type: string
      enum:
        - line_item
        - shipping_line
      title: DiscountTargetTypeEnum
      description: Type of item that the discount applies to..
    DiscountTypeEnum:
      type: string
      enum:
        - product
        - order
        - shipping
      title: DiscountTypeEnum
      description: Type of discount.
    DiscountUpdateDTO:
      properties:
        code:
          type: string
          nullable: true
          title: Code
          description: Discount promotion code
          examples:
            - KARLA
        target_selection:
          $ref: '#/components/schemas/DiscountTargetSelectionEnum'
          nullable: true
          description: >-
            The selection method for line items or shipping lines to be
            discounted.
        target_type:
          $ref: '#/components/schemas/DiscountTargetTypeEnum'
          nullable: true
          description: The type of item that the discount applies to.
        title:
          type: string
          nullable: true
          title: Title
          description: The customer facing name of the discount
        value_type:
          $ref: '#/components/schemas/DiscountValueTypeEnum'
          nullable: true
          description: Type of discount value
          examples:
            - percentage
        value:
          type: number
          nullable: true
          title: Value
          description: Discount value based on its type
          examples:
            - 3.49
      type: object
      title: DiscountUpdateDTO
      description: The Claim request data to be send in the body for an update.
    DiscountValueTypeEnum:
      type: string
      enum:
        - percentage
        - fixed_amount
      title: DiscountValueTypeEnum
      description: Type of value for order and product discounts.
    EmarsysSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
      type: object
      title: EmarsysSettingsV1
      description: Schema for a Shop.EmarsysSetting object.
    EmarsysTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: EmarsysTriggerSettingsDTO
      description: Emarsys-specific trigger settings for public API.
    EmarsysTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: EmarsysTriggerSettingsDTO
      description: Emarsys-specific trigger settings for public API.
    EmarsysTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
      type: object
      title: EmarsysTriggerSettingsUpdateDTO
      description: Emarsys-specific trigger settings update for public API.
    ErrorDTO:
      properties:
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ValidationErrorDTO'
              type: array
            - {}
          title: Errors
          description: Error list
          default: []
        key:
          anyOf:
            - $ref: '#/components/schemas/ErrorKeyEnum'
            - type: string
            - type: 'null'
          title: Key
          description: >-
            Descriptive error key. While this accepts any string for backward
            compatibility, the API will only return values from ErrorKeyEnum.
          examples:
            - shop_not_found
            - order_exists
            - invalid_payload
            - bad_gateway
            - null
        message:
          type: string
          nullable: true
          title: Message
          description: Generic error message
          examples:
            - Shop not found
            - Order with this ID already exists
            - null
        type:
          $ref: '#/components/schemas/ErrorTypeEnum'
          description: Type of error
          default: api_error
          examples:
            - api_error
            - invalid_request_error
      type: object
      title: ErrorDTO
      description: Unified errors schema.
    ErrorKeyEnum:
      type: string
      enum:
        - a_b_test_not_found
        - a_b_test_overlap
        - announcement_exists
        - announcement_not_found
        - campaign_active_segment_exists
        - campaign_exists
        - campaign_not_found
        - campaign_product_not_found
        - campaign_type_invalid
        - carrier_reference_invalid
        - deal_not_found
        - discount_exists
        - discount_not_found
        - image_media_unsupported
        - invalid_payload
        - klaviyo_key_missing_permissions
        - klaviyo_key_not_found
        - order_exists
        - order_not_found
        - org_exists
        - org_not_found
        - permission_denied
        - shipment_exists
        - shipment_not_found
        - shop_exists
        - shop_fixtures_not_found
        - shop_not_found
        - shop_settings_not_found
        - user_exists
        - user_not_found
        - webhook_exists
        - webhook_not_found
        - zip_code_invalid
        - bad_gateway
        - service_not_implemented
        - unexpected
      title: ErrorKeyEnum
      description: |-
        Possible error keys that can be returned by the API.

        These keys are used to provide a more descriptive error message
        and can be used for localization or specific error handling.
    ErrorTypeEnum:
      type: string
      enum:
        - api_error
        - invalid_request_error
        - authentication_error
      title: ErrorTypeEnum
      description: Type of errors that will be returned to the user.
    Event:
      properties:
        event_key:
          type: string
          title: Event Key
          description: Event Key
          examples:
            - H10
            - C20
            - A12
            - A10
        time:
          type: string
          format: date-time
          nullable: true
          title: Time
          description: Event Time
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-16T09:15:00Z'
            - null
        timezone:
          type: string
          nullable: true
          title: Timezone
          description: Event Timezone
          examples:
            - Europe/Berlin
            - America/New_York
            - UTC
            - null
        location:
          additionalProperties: true
          type: object
          nullable: true
          title: Location
          description: Event Location
          examples:
            - city: Berlin
              country: DE
              zip: '10115'
            - city: Hamburg
              country: DE
              state: Hamburg
            - null
        additional_info:
          $ref: '#/components/schemas/EventAdditionalInfo'
          nullable: true
          description: Event Additional Info
          examples:
            - carrier_name: dhl
              mail_message: Package ready for pickup
              merchant_name: Example Shop
              pickup_opening_hours:
                Mon-Fri: 00:00-24:00
                Sat-Sun: 00:00-24:00
              pickup_point: DHL Packstation 123
              pickup_point_url: https://www.dhl.de/packstation/123
              pickup_time: '2024-01-20T18:00:00+00:00'
              preferred_delivery_date: '2024-01-18T12:00:00'
              tracking_company: DHL
              tracking_link: https://www.dhl.de/track?piececode=00340434298376542088
            - carrier_name: hermes
              mail_message: Delivery attempted - recipient not at home
              tracking_company: Hermes
            - null
      type: object
      required:
        - event_key
      title: Event
      description: Schema for a event sub-partial for a `Shipment.Event` object.
    EventAdditionalInfo:
      properties:
        pickup_point:
          type: string
          nullable: true
          title: Pickup Point
        pickup_point_url:
          type: string
          nullable: true
          title: Pickup Point Url
        pickup_time:
          type: string
          format: date-time
          nullable: true
          title: Pickup Time
        pickup_opening_hours:
          additionalProperties:
            type: string
          type: object
          nullable: true
          title: Pickup Opening Hours
        mail_message:
          type: string
          nullable: true
          title: Mail Message
        merchant_name:
          type: string
          nullable: true
          title: Merchant Name
        preferred_delivery_date:
          type: string
          format: date-time
          nullable: true
          title: Preferred Delivery Date
        tracking_link:
          type: string
          nullable: true
          title: Tracking Link
        carrier_name:
          type: string
          nullable: true
          title: Carrier Name
        tracking_company:
          type: string
          nullable: true
          title: Tracking Company
        date:
          type: string
          format: date-time
          nullable: true
          title: Date
      type: object
      title: EventAdditionalInfo
      description: Schema for a `Shipment.Event` object's additional info.
    ExampleWithGroups:
      properties:
        message:
          type: string
          title: Message
          description: The example message
        matched_groups:
          additionalProperties:
            type: string
          type: object
          nullable: true
          title: Matched Groups
          description: Named groups extracted from the message using the regex pattern
      type: object
      required:
        - message
      title: ExampleWithGroups
      description: Example message with extracted regex groups.
    ExpectedDeliverySourceEnum:
      type: string
      enum:
        - pp
        - hc
        - mail
        - aftership
        - aftership_carrier
        - aftership_ai
        - aftership_edd
        - aftership_custom
        - aftership_order
      title: ExpectedDeliverySourceEnum
      description: Expected Delivery Source - Internal granular tracking.
    FeatureCommunity:
      type: string
      enum:
        - alpha
        - beta
        - live
      title: FeatureCommunity
      description: Enum for identifying the feature flag community.
    FieldUpdateRequestDTO:
      properties:
        path:
          type: string
          minLength: 1
          title: Path
          description: >-
            Dot-notation path to the field (e.g.,
            'triggers.data.klaviyo.stale_event_threshold')
        value:
          title: Value
          description: New value for the field
      type: object
      required:
        - path
        - value
      title: FieldUpdateRequestDTO
      description: Request DTO for updating a single shop settings field.
    FieldUpdateResponseDTO:
      properties:
        path:
          type: string
          title: Path
          description: Dot-notation path that was updated
        previous_value:
          title: Previous Value
          description: Previous value of the field
        new_value:
          title: New Value
          description: New value of the field after update
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Timestamp when the update was applied
      type: object
      required:
        - path
        - previous_value
        - new_value
        - updated_at
      title: FieldUpdateResponseDTO
      description: Response DTO for field update operation.
    FinancialStatusEnum:
      type: string
      enum:
        - authorized
        - paid
        - partially_paid
        - partially_refunded
        - pending
        - refunded
        - voided
      title: FinancialStatusEnum
      description: |-
        Order Financial Status from Shopify.

        Represents the payment/refund state of an order.
    FlagEnum:
      type: string
      enum:
        - normal
        - delay
        - error
      title: FlagEnum
      description: |-
        Karla internal shipment flag.

        Raises the possibility of failure or delay when not normal.
        Options: normal, delay, error.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    HubSpotSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
      type: object
      title: HubSpotSettingsV1
      description: |-
        Schema for a Shop.HubSpotSetting object.

        Portal ID is automatically fetched from HubSpot API.
        No manual configuration needed.
    HubSpotTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        portal_id:
          type: string
          title: Portal Id
          description: HubSpot Portal ID
          default: ''
      type: object
      required:
        - status
      title: HubSpotTriggerSettingsDTO
      description: HubSpot-specific trigger settings for public API.
    HubSpotTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        portal_id:
          type: string
          title: Portal Id
          description: HubSpot Portal ID
          default: ''
      type: object
      required:
        - status
      title: HubSpotTriggerSettingsDTO
      description: HubSpot-specific trigger settings for public API.
    HubSpotTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
        portal_id:
          type: string
          nullable: true
          title: Portal Id
          description: HubSpot Portal ID
      type: object
      title: HubSpotTriggerSettingsUpdateDTO
      description: HubSpot-specific trigger settings update for public API.
    ImageResponseDTO:
      properties:
        url:
          type: string
          title: Url
          description: The public url of the uploaded image
        image_type:
          $ref: '#/components/schemas/ImageType'
          description: The type of image uploaded
        shop_slug:
          type: string
          title: Shop Slug
          description: The slug of the shop the image belongs to
      type: object
      required:
        - url
        - image_type
        - shop_slug
      title: ImageResponseDTO
      description: Response after uploading an image file.
    ImageType:
      type: string
      enum:
        - background
        - claim
        - logo
        - signature
        - product
        - voucher
      title: ImageType
      description: Type of image that is allowed by the system.
    InternalShopSettingsDTO-Input:
      properties:
        triggers:
          $ref: '#/components/schemas/BaseTriggerSettings-Input'
          nullable: true
          description: Trigger Settings
        carriers:
          $ref: '#/components/schemas/BaseCarrierSettings-Input'
          nullable: true
          description: Carrier Settings
        trackpages:
          $ref: '#/components/schemas/BaseTrackpagesSettings-Input'
          nullable: true
          description: Trackpages Settings
        campaigns:
          $ref: '#/components/schemas/BaseCampaignSettings-Input'
          nullable: true
          description: Campaign Settings
        brand_palette:
          $ref: '#/components/schemas/BaseBrandPaletteSettings-Input'
          description: Brand Palette Settings
        mappings:
          $ref: '#/components/schemas/BaseMappingsSettings-Input'
          nullable: true
          description: Mappings Settings
      type: object
      required:
        - triggers
        - carriers
        - trackpages
        - campaigns
        - brand_palette
      title: InternalShopSettingsDTO
      description: >-
        The Shop settings object to be exchanged with the HTTP clients
        (privately).
    InternalShopSettingsDTO-Output:
      properties:
        triggers:
          $ref: '#/components/schemas/BaseTriggerSettings-Output'
          nullable: true
          description: Trigger Settings
        carriers:
          $ref: '#/components/schemas/BaseCarrierSettings-Output'
          nullable: true
          description: Carrier Settings
        trackpages:
          $ref: '#/components/schemas/BaseTrackpagesSettings-Output'
          nullable: true
          description: Trackpages Settings
        campaigns:
          $ref: '#/components/schemas/BaseCampaignSettings-Output'
          nullable: true
          description: Campaign Settings
        brand_palette:
          $ref: '#/components/schemas/BaseBrandPaletteSettings-Output'
          description: Brand Palette Settings
        mappings:
          $ref: '#/components/schemas/BaseMappingsSettings-Output'
          nullable: true
          description: Mappings Settings
      type: object
      required:
        - triggers
        - carriers
        - trackpages
        - campaigns
        - brand_palette
      title: InternalShopSettingsDTO
      description: >-
        The Shop settings object to be exchanged with the HTTP clients
        (privately).
    InternalTrigger-Input:
      properties:
        id:
          type: string
          title: Id
          description: ID of the trigger
        name:
          type: string
          title: Name
          description: Name of the trigger
        phase_in:
          items:
            $ref: '#/components/schemas/PhaseEnum'
          type: array
          title: Phase In
          description: List of phases to trigger on
          default: []
        phase_not_in:
          items:
            $ref: '#/components/schemas/PhaseEnum'
          type: array
          title: Phase Not In
          description: List of phases to not trigger on
          default: []
        event_key_in:
          items:
            type: string
          type: array
          title: Event Key In
          description: List of event keys to trigger on
          default: []
        event_key_not_in:
          items:
            type: string
          type: array
          title: Event Key Not In
          description: List of event keys to not trigger on
          default: []
        operator:
          $ref: '#/components/schemas/Operator'
          description: The operator to use for the event key
        time_threshold_type:
          $ref: '#/components/schemas/ThresholdType'
          description: The key to use for the time threshold
        time_threshold_value:
          type: integer
          title: Time Threshold Value
          description: The time in hours to wait before triggering
        shipment_direction:
          $ref: '#/components/schemas/ShipmentDirectionEnum'
          description: The shipment direction to trigger on
          default: merchant_customer
      type: object
      required:
        - id
        - name
        - operator
        - time_threshold_type
        - time_threshold_value
      title: InternalTrigger
      description: Internal Triggers Schema.
    InternalTrigger-Output:
      properties:
        id:
          title: Id
          description: ID of the trigger
        name:
          title: Name
          description: Name of the trigger
        phase_in:
          title: Phase In
          description: List of phases to trigger on
        phase_not_in:
          title: Phase Not In
          description: List of phases to not trigger on
        event_key_in:
          title: Event Key In
          description: List of event keys to trigger on
        event_key_not_in:
          title: Event Key Not In
          description: List of event keys to not trigger on
        operator:
          description: The operator to use for the event key
        time_threshold_type:
          description: The key to use for the time threshold
        time_threshold_value:
          title: Time Threshold Value
          description: The time in hours to wait before triggering
        shipment_direction:
          description: The shipment direction to trigger on
      type: object
      required:
        - id
        - name
        - operator
        - time_threshold_type
        - time_threshold_value
      title: InternalTrigger
      description: Internal Triggers Schema.
    InternalTriggerCreationDTO:
      properties:
        name:
          type: string
          title: Name
          description: Name of the trigger
        phase_in:
          items:
            $ref: '#/components/schemas/PhaseEnum'
          type: array
          title: Phase In
          description: List of phases to trigger on
          default: []
        phase_not_in:
          items:
            $ref: '#/components/schemas/PhaseEnum'
          type: array
          title: Phase Not In
          description: List of phases to not trigger on
          default: []
        event_key_in:
          items:
            type: string
          type: array
          title: Event Key In
          description: List of event keys to trigger on
          default: []
        event_key_not_in:
          items:
            type: string
          type: array
          title: Event Key Not In
          description: List of event keys to not trigger on
          default: []
        operator:
          $ref: '#/components/schemas/Operator'
          description: The operator to use for the event key
        time_threshold_type:
          $ref: '#/components/schemas/ThresholdType'
          description: The key to use for the time threshold
        time_threshold_value:
          type: integer
          title: Time Threshold Value
          description: The time in hours to wait before triggering
        shipment_direction:
          $ref: '#/components/schemas/ShipmentDirectionEnum'
          description: The shipment direction to trigger on
          default: merchant_customer
      type: object
      required:
        - name
        - operator
        - time_threshold_type
        - time_threshold_value
      title: InternalTriggerCreationDTO
      description: >-
        The Internal Trigger creation object to be exchanged with the HTTP
        clients.
    InxmailSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        instance_id:
          type: string
          title: Instance Id
          description: Inxmail instance identifier (e.g., 'joe-nimble')
          default: ''
      type: object
      title: InxmailSettingsV1
      description: Schema for a Shop.InxmailSetting object.
    InxmailTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        instance_id:
          type: string
          title: Instance Id
          description: Inxmail instance identifier
          default: ''
      type: object
      required:
        - status
      title: InxmailTriggerSettingsDTO
      description: Inxmail-specific trigger settings for public API.
    InxmailTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
        instance_id:
          type: string
          title: Instance Id
          description: Inxmail instance identifier
          default: ''
      type: object
      required:
        - status
      title: InxmailTriggerSettingsDTO
      description: Inxmail-specific trigger settings for public API.
    InxmailTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
        instance_id:
          type: string
          nullable: true
          title: Instance Id
          description: Inxmail instance identifier
      type: object
      title: InxmailTriggerSettingsUpdateDTO
      description: Inxmail-specific trigger settings update for public API.
    KarlaApiKeyCreationDTO:
      properties:
        username:
          type: string
          title: Username
          description: The user who will hold the key
        shops:
          items:
            $ref: '#/components/schemas/ShopRole'
          type: array
          title: Shops
          description: Shops and their roles that the token will have access to
          default: []
      type: object
      required:
        - username
      title: KarlaApiKeyCreationDTO
      description: A client id and client key secret.
    KlaviyoSettingsV1-Input:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
      type: object
      title: KlaviyoSettingsV1
      description: |-
        Schema for a Shop.KlaviyoSetting object.

        Inherits all fields from BaseIntegrationSettingsV1 without overrides.
        Klaviyo settings use the same defaults as other integrations.
    KlaviyoSettingsV1-Output:
      properties:
        status:
          description: Whether the integration is enabled
        trigger_delivered_all_events:
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        shipment_group_key:
          description: The key to use for the shipment group
        stale_event_threshold:
          title: Stale Event Threshold
          description: Stale event threshold in hours
        internal_triggers:
          title: Internal Triggers
          description: Internal triggers
        segments_enabled:
          title: Segments Enabled
          description: Whether to fetch segments
      type: object
      title: KlaviyoSettingsV1
      description: |-
        Schema for a Shop.KlaviyoSetting object.

        Inherits all fields from BaseIntegrationSettingsV1 without overrides.
        Klaviyo settings use the same defaults as other integrations.
    KlaviyoTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: KlaviyoTriggerSettingsDTO
      description: Klaviyo-specific trigger settings for public API.
    KlaviyoTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 4
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: KlaviyoTriggerSettingsDTO
      description: Klaviyo-specific trigger settings for public API.
    KlaviyoTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
      type: object
      title: KlaviyoTriggerSettingsUpdateDTO
      description: Klaviyo-specific trigger settings update for public API.
    LanguageEnum:
      type: string
      enum:
        - cs
        - da
        - nl
        - en
        - fi
        - fr
        - de
        - gr
        - hu
        - it
        - lv
        - pl
        - pt
        - sk
        - es
        - sv
      title: LanguageEnum
      description: Supported languages.
    MappingAggregatesDTO:
      properties:
        pending:
          type: integer
          title: Pending
          description: Total pending mappings
        approved:
          type: integer
          title: Approved
          description: Total approved mappings
        rejected:
          type: integer
          title: Rejected
          description: Total rejected mappings
      type: object
      required:
        - pending
        - approved
        - rejected
      title: MappingAggregatesDTO
      description: Global status counts (unfiltered, unpaginated).
    MappingDetailResponseDTO-Input:
      properties:
        mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          description: The mapping details
        suggestions:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Suggestions
          description: >-
            List of AI suggestions for this mapping. DEPRECATED: Now in
            BigQuery.
      type: object
      required:
        - mapping
      title: MappingDetailResponseDTO
      description: Response DTO for getting a single mapping with all related suggestions.
    MappingDetailResponseDTO-Output:
      properties:
        mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          description: The mapping details
        suggestions:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Suggestions
          description: >-
            List of AI suggestions for this mapping. DEPRECATED: Now in
            BigQuery.
      type: object
      required:
        - mapping
      title: MappingDetailResponseDTO
      description: Response DTO for getting a single mapping with all related suggestions.
    MappingOperationResponseDTO-Input:
      properties:
        mapping_id:
          type: integer
          title: Mapping Id
          description: Mapping ID
        event_key:
          type: string
          nullable: true
          title: Event Key
          description: Mapped event key
        status:
          type: string
          title: Status
          description: Mapping status
        response_message:
          type: string
          title: Response Message
          description: Human-readable description of the operation result
        requires_confirmation:
          type: boolean
          title: Requires Confirmation
          description: >-
            If true, user confirmation is required before proceeding. Check
            mappings_to_delete to see what will be deleted.
          default: false
        current_mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          nullable: true
          description: >-
            The mapping being modified (preview mode only). Shows the new state
            with updated regex pattern.
        examples_to_remove:
          items:
            $ref: '#/components/schemas/ExampleWithGroups'
          type: array
          title: Examples To Remove
          description: >-
            Examples that will be removed because they no longer match the new
            regex pattern. Includes matched_groups showing what the old pattern
            captured.
        examples_to_keep:
          items:
            $ref: '#/components/schemas/ExampleWithGroups'
          type: array
          title: Examples To Keep
          description: >-
            Examples that will be kept because they match the new regex pattern.
            Includes matched_groups showing what the new pattern captures.
        mappings_to_delete:
          items:
            $ref: '#/components/schemas/AfterShipEventMappingDTO'
          type: array
          title: Mappings To Delete
          description: >-
            Mappings that will be deleted by this operation. Only populated when
            requires_confirmation=true.
      type: object
      required:
        - mapping_id
        - status
        - response_message
      title: MappingOperationResponseDTO
      description: Response DTO for mapping approval/rejection operations.
    MappingOperationResponseDTO-Output:
      properties:
        mapping_id:
          type: integer
          title: Mapping Id
          description: Mapping ID
        event_key:
          type: string
          nullable: true
          title: Event Key
          description: Mapped event key
        status:
          type: string
          title: Status
          description: Mapping status
        response_message:
          type: string
          title: Response Message
          description: Human-readable description of the operation result
        requires_confirmation:
          type: boolean
          title: Requires Confirmation
          description: >-
            If true, user confirmation is required before proceeding. Check
            mappings_to_delete to see what will be deleted.
          default: false
        current_mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          nullable: true
          description: >-
            The mapping being modified (preview mode only). Shows the new state
            with updated regex pattern.
        examples_to_remove:
          items:
            $ref: '#/components/schemas/ExampleWithGroups'
          type: array
          title: Examples To Remove
          description: >-
            Examples that will be removed because they no longer match the new
            regex pattern. Includes matched_groups showing what the old pattern
            captured.
        examples_to_keep:
          items:
            $ref: '#/components/schemas/ExampleWithGroups'
          type: array
          title: Examples To Keep
          description: >-
            Examples that will be kept because they match the new regex pattern.
            Includes matched_groups showing what the new pattern captures.
        mappings_to_delete:
          items:
            $ref: '#/components/schemas/AfterShipEventMappingDTO'
          type: array
          title: Mappings To Delete
          description: >-
            Mappings that will be deleted by this operation. Only populated when
            requires_confirmation=true.
      type: object
      required:
        - mapping_id
        - status
        - response_message
      title: MappingOperationResponseDTO
      description: Response DTO for mapping approval/rejection operations.
    MappingRule-Input:
      properties:
        source:
          $ref: '#/components/schemas/MappingSource-Input'
          description: Where to read the value from
        target:
          $ref: '#/components/schemas/MappingTarget'
          description: Karla-standard field to map to
      type: object
      required:
        - source
        - target
      title: MappingRule
      description: |-
        A single mapping rule: source -> target.

        Examples::

            # Map a note attribute to a tracking number
            {"source": {"type": "note_attribute", "key": "rma_tracking"},
             "target": "return_tracking_number"}

            # Extract tracking from order note via regex
            {"source": {"type": "note", "pattern": "Return tracking codes:\s*(\S+)"},
             "target": "return_tracking_number"}

            # Map note attribute to carrier
            {"source": {"type": "note_attribute", "key": "carrier_ref"},
             "target": "return_carrier_reference"}

            # Map line item property to estimated ship date
            {"source": {"type": "line_item_property", "key": "ETA_start"},
             "target": "estimated_ship_date_start"}
    MappingRule-Output:
      properties:
        source:
          description: Where to read the value from
        target:
          description: Karla-standard field to map to
      type: object
      required:
        - source
        - target
      title: MappingRule
      description: |-
        A single mapping rule: source -> target.

        Examples::

            # Map a note attribute to a tracking number
            {"source": {"type": "note_attribute", "key": "rma_tracking"},
             "target": "return_tracking_number"}

            # Extract tracking from order note via regex
            {"source": {"type": "note", "pattern": "Return tracking codes:\s*(\S+)"},
             "target": "return_tracking_number"}

            # Map note attribute to carrier
            {"source": {"type": "note_attribute", "key": "carrier_ref"},
             "target": "return_carrier_reference"}

            # Map line item property to estimated ship date
            {"source": {"type": "line_item_property", "key": "ETA_start"},
             "target": "estimated_ship_date_start"}
    MappingSource-Input:
      properties:
        type:
          $ref: '#/components/schemas/MappingSourceType'
          description: >-
            Source type: 'note_attribute' or 'line_item_property' to match by
            key, 'note' to extract via regex.
        key:
          type: string
          minLength: 1
          nullable: true
          title: Key
          description: >-
            Property or attribute name to match. Required for note_attribute and
            line_item_property, not allowed for note. Example: 'Zalando
            Kundennummer' or 'ETA_start'
        pattern:
          type: string
          maxLength: 500
          minLength: 1
          nullable: true
          title: Pattern
          description: >-
            Regex pattern with at least one capture group. Required for note,
            not allowed for note_attribute. The first match in the note text is
            used. Example: 'Return tracking codes:\s*(\S+)'
        group:
          type: integer
          minimum: 1
          title: Group
          description: >-
            Which capture group to extract (1-indexed). Only used with note
            source type. Example: pattern '(carrier):\s*(\S+)' with group=2
            extracts the value after 'carrier:'.
          default: 1
      type: object
      required:
        - type
      title: MappingSource
      description: >-
        Source field definition for a mapping rule.


        Three source types are supported:


        **note_attribute** — extracts a value from Shopify order note_attributes

        by matching on the attribute name (key).


        Example: ``{"type": "note_attribute", "key": "Zalando Kundennummer"}``

        extracts the value of the note attribute named "Zalando Kundennummer".


        **note** — extracts a value from the Shopify order note (free-text)

        using a regex pattern with capture groups. The first match is used.


        Example: ``{"type": "note", "pattern": "Return tracking
        codes:\s*(\S+)"}``

        extracts ``00341234567530088154`` from a note containing

        ``"Return tracking codes: 00341234567530088154"``.


        **line_item_property** — extracts a value from a Shopify line item

        property by matching on the property name (key).


        Example: ``{"type": "line_item_property", "key": "ETA_start"}``

        extracts the value of the line item property named "ETA_start".


        For the **note** source type, most standard regex features are
        supported,

        including:

        ``\d``, ``\s``, ``\S``, ``\w``, ``\b``, ``[a-z]``,

        ``a+``, ``a*``, ``a?``, ``a{2,5}``, ``(?:...)``, ``(?P<name>...)``,

        ``(?i)`` (case-insensitive flag).
    MappingSource-Output:
      properties:
        type:
          description: >-
            Source type: 'note_attribute' or 'line_item_property' to match by
            key, 'note' to extract via regex.
        key:
          title: Key
          description: >-
            Property or attribute name to match. Required for note_attribute and
            line_item_property, not allowed for note. Example: 'Zalando
            Kundennummer' or 'ETA_start'
        pattern:
          title: Pattern
          description: >-
            Regex pattern with at least one capture group. Required for note,
            not allowed for note_attribute. The first match in the note text is
            used. Example: 'Return tracking codes:\s*(\S+)'
        group:
          title: Group
          description: >-
            Which capture group to extract (1-indexed). Only used with note
            source type. Example: pattern '(carrier):\s*(\S+)' with group=2
            extracts the value after 'carrier:'.
      type: object
      required:
        - type
      title: MappingSource
      description: >-
        Source field definition for a mapping rule.


        Three source types are supported:


        **note_attribute** — extracts a value from Shopify order note_attributes

        by matching on the attribute name (key).


        Example: ``{"type": "note_attribute", "key": "Zalando Kundennummer"}``

        extracts the value of the note attribute named "Zalando Kundennummer".


        **note** — extracts a value from the Shopify order note (free-text)

        using a regex pattern with capture groups. The first match is used.


        Example: ``{"type": "note", "pattern": "Return tracking
        codes:\s*(\S+)"}``

        extracts ``00341234567530088154`` from a note containing

        ``"Return tracking codes: 00341234567530088154"``.


        **line_item_property** — extracts a value from a Shopify line item

        property by matching on the property name (key).


        Example: ``{"type": "line_item_property", "key": "ETA_start"}``

        extracts the value of the line item property named "ETA_start".


        For the **note** source type, most standard regex features are
        supported,

        including:

        ``\d``, ``\s``, ``\S``, ``\w``, ``\b``, ``[a-z]``,

        ``a+``, ``a*``, ``a?``, ``a{2,5}``, ``(?:...)``, ``(?P<name>...)``,

        ``(?i)`` (case-insensitive flag).
    MappingSourceType:
      type: string
      enum:
        - note_attribute
        - note
        - line_item_property
      title: MappingSourceType
      description: >-
        Valid source types for mapping rules.


        - note_attribute: Extract value from a Shopify note_attribute by key.

        - note: Extract value from the Shopify order note using a regex pattern.

        - line_item_property: Extract value from a Shopify line item property by
        key.
    MappingStatus:
      type: string
      enum:
        - pending
        - approved
        - rejected
      title: MappingStatus
      description: |-
        Approval status for AfterShip event mappings.

        Workflow:
        - PENDING: Newly created mapping awaiting approval
        - APPROVED: Mapping has been reviewed and approved by admin
        - REJECTED: Mapping has been rejected and should not be used
    MappingTarget:
      type: string
      enum:
        - return_tracking_number
        - return_carrier_reference
        - marketplace_order_number
        - estimated_ship_date_start
        - estimated_ship_date_end
      title: MappingTarget
      description: Valid target fields for mapping rules.
    MappingWithSuggestionDTO-Input:
      properties:
        mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          description: The mapping details
        top_suggestion:
          additionalProperties: true
          type: object
          nullable: true
          title: Top Suggestion
          description: >-
            Top AI suggestion for this mapping (highest confidence, pending).
            DEPRECATED: Now in BigQuery.
      type: object
      required:
        - mapping
      title: MappingWithSuggestionDTO
      description: DTO for a mapping with its top AI suggestion.
    MappingWithSuggestionDTO-Output:
      properties:
        mapping:
          $ref: '#/components/schemas/AfterShipEventMappingDTO'
          description: The mapping details
        top_suggestion:
          additionalProperties: true
          type: object
          nullable: true
          title: Top Suggestion
          description: >-
            Top AI suggestion for this mapping (highest confidence, pending).
            DEPRECATED: Now in BigQuery.
      type: object
      required:
        - mapping
      title: MappingWithSuggestionDTO
      description: DTO for a mapping with its top AI suggestion.
    MappingsListResponseDTO-Input:
      properties:
        mappings:
          items:
            $ref: '#/components/schemas/MappingWithSuggestionDTO-Input'
          type: array
          title: Mappings
          description: List of event mappings with their top suggestions
        total:
          type: integer
          title: Total
          description: Total number of mappings matching filters
        page:
          type: integer
          title: Page
          description: Current page number
        page_size:
          type: integer
          title: Page Size
          description: Number of items per page
        total_pages:
          type: integer
          title: Total Pages
          description: Total number of pages
        aggregates:
          $ref: '#/components/schemas/MappingAggregatesDTO'
          description: Global status counts (no filters/pagination applied)
      type: object
      required:
        - mappings
        - total
        - page
        - page_size
        - total_pages
        - aggregates
      title: MappingsListResponseDTO
      description: Response DTO for paginated list of all mappings.
    MappingsListResponseDTO-Output:
      properties:
        mappings:
          items:
            $ref: '#/components/schemas/MappingWithSuggestionDTO-Output'
          type: array
          title: Mappings
          description: List of event mappings with their top suggestions
        total:
          type: integer
          title: Total
          description: Total number of mappings matching filters
        page:
          type: integer
          title: Page
          description: Current page number
        page_size:
          type: integer
          title: Page Size
          description: Number of items per page
        total_pages:
          type: integer
          title: Total Pages
          description: Total number of pages
        aggregates:
          $ref: '#/components/schemas/MappingAggregatesDTO'
          description: Global status counts (no filters/pagination applied)
      type: object
      required:
        - mappings
        - total
        - page
        - page_size
        - total_pages
        - aggregates
      title: MappingsListResponseDTO
      description: Response DTO for paginated list of all mappings.
    MappingsV1:
      properties:
        shopify.order:
          items:
            $ref: '#/components/schemas/MappingRule-Input'
          type: array
          title: Shopify.Order
          description: Mapping rules for Shopify order context
        shopify.line_item:
          items:
            $ref: '#/components/schemas/MappingRule-Input'
          type: array
          title: Shopify.Line Item
          description: Mapping rules for Shopify line item context
      type: object
      title: MappingsV1
      description: Mapping rules grouped by context scope.
      examples:
        - shopify.order:
            - source:
                key: Zalando Kundennummer
                type: note_attribute
              target: marketplace_order_number
        - shopify.line_item:
            - source:
                key: ETA_start
                type: line_item_property
              target: estimated_ship_date_start
            - source:
                key: ETA_end
                type: line_item_property
              target: estimated_ship_date_end
    MatchType:
      type: string
      enum:
        - full
        - partial
        - regex
      title: MatchType
      description: >-
        Match type for AfterShip event mappings.


        Determines how events are matched to mappings:

        - FULL: Exact match on tag + subtag + subtag_message + message (default)

        - PARTIAL: Match on tag + subtag + subtag_message only (message=NULL)

        - REGEX: Match on tag + subtag + subtag_message + regex pattern on
        message


        Note: FULL is the default since we always receive a message from
        AfterShip.

        To create a PARTIAL mapping, explicitly set message=NULL in the UI.
    MockNotificationRequest:
      properties:
        journey:
          type: string
          title: Journey
          description: 'Journey: in_transit, out_for_delivery, damaged, or delivered'
      type: object
      required:
        - journey
      title: MockNotificationRequest
      description: Request body for mock notification endpoint.
    NotificationBannerWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        content:
          type: string
          nullable: true
          title: Content
          description: Banner content text
        link:
          type: string
          nullable: true
          title: Link
          description: Link URL for the banner
        cta_text:
          type: string
          nullable: true
          title: Cta Text
          description: Call-to-action button text
      type: object
      title: NotificationBannerWidgetDTO
      description: Configuration for the notification-banner widget.
    NotificationThirdParty:
      type: string
      enum:
        - braze
        - brevo
        - emarsys
        - hubspot
        - inxmail
        - klaviyo
        - shopify
        - webhook
      title: NotificationThirdParty
      description: Supported third-party services for sending notifications.
    ObfuscatedKarlaTokenDTO-Input:
      properties:
        id:
          type: string
          title: Id
          description: Unique token identifier
        secret:
          type: string
          title: Secret
          description: Obfuscated API key (e.g. sk_abcd...wxyz)
        shops:
          items:
            $ref: '#/components/schemas/ShopRole'
          type: array
          title: Shops
          description: Shops the token has access to
        expiration:
          type: integer
          title: Expiration
          description: Expiration time in Unix epoch (0 = never)
      type: object
      required:
        - id
        - secret
        - shops
        - expiration
      title: ObfuscatedKarlaTokenDTO
      description: A Karla API token with its secret obfuscated for display.
    ObfuscatedKarlaTokenDTO-Output:
      properties:
        id:
          type: string
          title: Id
          description: Unique token identifier
        secret:
          type: string
          title: Secret
          description: Obfuscated API key (e.g. sk_abcd...wxyz)
        shops:
          items:
            $ref: '#/components/schemas/ShopRole'
          type: array
          title: Shops
          description: Shops the token has access to
        expiration:
          type: integer
          title: Expiration
          description: Expiration time in Unix epoch (0 = never)
      type: object
      required:
        - id
        - secret
        - shops
        - expiration
      title: ObfuscatedKarlaTokenDTO
      description: A Karla API token with its secret obfuscated for display.
    Operator:
      type: string
      enum:
        - AND
        - OR
      title: Operator
      description: Enum for the operator.
    OrderAnalyticsDTO:
      properties:
        source:
          type: string
          maxLength: 100
          title: Source
          description: Traffic source identifier
          default: trackpages
          examples:
            - trackpages
        campaign:
          type: string
          maxLength: 100
          nullable: true
          title: Campaign
          description: Campaign identifier (typically a UUID)
        medium:
          type: string
          maxLength: 100
          nullable: true
          title: Medium
          description: Marketing medium (e.g., basic_promotion, product_promotion)
        landing_url:
          type: string
          maxLength: 2048
          nullable: true
          title: Landing Url
          description: Full landing URL including query parameters
        landing_path:
          type: string
          maxLength: 500
          nullable: true
          title: Landing Path
          description: Landing page path without domain
        referrer:
          type: string
          maxLength: 2048
          nullable: true
          title: Referrer
          description: Referrer URL
        captured_at:
          type: string
          format: date-time
          nullable: true
          title: Captured At
          description: Timestamp when the tracking data was captured
        reference_order_id:
          type: string
          maxLength: 255
          nullable: true
          title: Reference Order Id
          description: >-
            Reference to an original or parent order (e.g., for linking upsell
            orders to their source order)
          examples:
            - '11334422'
            - 550e8400-e29b-41d4-a716-446655440000
        order_external_id:
          type: string
          maxLength: 255
          nullable: true
          title: Order External Id
          description: External ID of the source order that drove this conversion
          examples:
            - '5123456789'
            - gid://shopify/Order/5123456789
        order_number:
          type: string
          maxLength: 100
          nullable: true
          title: Order Number
          description: Order number of the source order that drove this conversion
          examples:
            - '1234'
            - '56789'
        order_name:
          type: string
          maxLength: 255
          nullable: true
          title: Order Name
          description: Display name of the source order that drove this conversion
          examples:
            - '#1234'
            - '#IXF56789'
        id:
          type: string
          title: Id
          description: Order reference whose type is defined by the id_type field
          examples:
            - '11334422'
            - 550e8400-e29b-41d4-a716-446655440000
        id_type:
          $ref: '#/components/schemas/OrderReferenceType'
          description: Type of order identifier passed in the id field
          default: order_number
      type: object
      required:
        - id
      title: OrderAnalyticsDTO
      description: >-
        Payload for upserting Karla tracking analytics on an order using PUT
        semantics.


        All Karla tracking fields (source, campaign, medium, landing_url,
        landing_path,

        referrer, captured_at, reference_order_id, order_external_id,
        order_number,

        order_name) will be overwritten, including with None/null values.

        This allows clearing attribution data by sending null values.
    OrderAnalyticsResponseDTO:
      properties:
        source:
          type: string
          maxLength: 100
          nullable: true
          title: Source
          description: Traffic source identifier
        campaign:
          type: string
          maxLength: 100
          nullable: true
          title: Campaign
          description: Campaign identifier (typically a UUID)
        medium:
          type: string
          maxLength: 100
          nullable: true
          title: Medium
          description: Marketing medium (e.g., basic_promotion, product_promotion)
        landing_url:
          type: string
          maxLength: 2048
          nullable: true
          title: Landing Url
          description: Full landing URL including query parameters
        landing_path:
          type: string
          maxLength: 500
          nullable: true
          title: Landing Path
          description: Landing page path without domain
        referrer:
          type: string
          maxLength: 2048
          nullable: true
          title: Referrer
          description: Referrer URL
        captured_at:
          type: string
          format: date-time
          nullable: true
          title: Captured At
          description: Timestamp when the tracking data was captured
        reference_order_id:
          type: string
          maxLength: 255
          nullable: true
          title: Reference Order Id
          description: >-
            Reference to an original or parent order (e.g., for linking upsell
            orders to their source order)
          examples:
            - '11334422'
            - 550e8400-e29b-41d4-a716-446655440000
        order_external_id:
          type: string
          maxLength: 255
          nullable: true
          title: Order External Id
          description: External ID of the source order that drove this conversion
          examples:
            - '5123456789'
            - gid://shopify/Order/5123456789
        order_number:
          type: string
          maxLength: 100
          nullable: true
          title: Order Number
          description: Order number of the source order that drove this conversion
          examples:
            - '1234'
            - '56789'
        order_name:
          type: string
          maxLength: 255
          nullable: true
          title: Order Name
          description: Display name of the source order that drove this conversion
          examples:
            - '#1234'
            - '#IXF56789'
      type: object
      title: OrderAnalyticsResponseDTO
      description: Order analytics data returned in order responses.
    OrderCampaignsDTO-Input:
      properties:
        banner:
          $ref: '#/components/schemas/CampaignResponseDTO-Input'
          nullable: true
          description: The banner promotion campaign
        basic:
          $ref: '#/components/schemas/CampaignResponseDTO-Input'
          nullable: true
          description: The basic promotion campaign
        product:
          $ref: '#/components/schemas/CampaignResponseDTO-Input'
          nullable: true
          description: The product promotion campaign
      type: object
      title: OrderCampaignsDTO
      description: The Campaigns object to be exchanged with the HTTP clients for an order.
    OrderCampaignsDTO-Output:
      properties:
        banner:
          $ref: '#/components/schemas/CampaignResponseDTO-Output'
          nullable: true
          description: The banner promotion campaign
        basic:
          $ref: '#/components/schemas/CampaignResponseDTO-Output'
          nullable: true
          description: The basic promotion campaign
        product:
          $ref: '#/components/schemas/CampaignResponseDTO-Output'
          nullable: true
          description: The product promotion campaign
      type: object
      title: OrderCampaignsDTO
      description: The Campaigns object to be exchanged with the HTTP clients for an order.
    OrderDetailDTO-Input:
      properties:
        order_number:
          type: string
          title: Order Number
          description: Opinionated numeric identification of the order
          examples:
            - '1234'
        order_name:
          type: string
          nullable: true
          title: Order Name
          description: Opinionated name of the order
          examples:
            - IXF1234
        order_placed_at:
          type: string
          format: date-time
          nullable: true
          title: Order Placed At
          description: Date the order was placed. Will take current time if not provided
          examples:
            - '2023-03-17T09:51:41+00:00'
        total_order_price:
          type: number
          nullable: true
          title: Total Order Price
          description: Total price of the order
          examples:
            - 29.99
        shipping_price:
          type: number
          nullable: true
          title: Shipping Price
          description: Total shipping price of the order
          examples:
            - 4.99
        sub_total_price:
          type: number
          nullable: true
          title: Sub Total Price
          description: Subtotal price of items before shipping and discounts
          examples:
            - 40
        discount_price:
          type: number
          title: Discount Price
          description: Total price of all the accumulated discounts
          default: 0
          examples:
            - 4.99
        products:
          items:
            $ref: '#/components/schemas/ProductDTO-Input'
          type: array
          maxItems: 100
          title: Products
          description: Line items for the order
          default: []
          examples:
            - - bundled_products: []
                images: []
                price: 10
                quantity: 1
                requires_shipping: true
                tax_lines: []
                title: Product A
                type: product
        discounts:
          items:
            $ref: '#/components/schemas/OrderDiscountDTO-Input'
          type: array
          title: Discounts
          description: Discounts applied to the order
          default: []
          examples:
            - - amount: '10.0'
                code: ULTRA_OFFER
                type: percentage
        email_id:
          type: string
          nullable: true
          title: Email Id
          description: Email address of the customer
          examples:
            - hello@gokarla.io
        address:
          $ref: '#/components/schemas/AddressDTO-Input'
          description: Shipment delivery address
          examples:
            - city: New York
              street: 123 Main St
              zip_code: '10001'
        currency:
          type: string
          nullable: true
          title: Currency
          description: ISO 4217 currency code (default to 'EUR')
          default: EUR
          examples:
            - EUR
        segments:
          items:
            type: string
          type: array
          nullable: true
          title: Segments
          description: The segments to which the user of the order belongs
          examples:
            - - segment1
              - segment2
        weight:
          type: number
          nullable: true
          title: Weight
          description: Total weight of the order in grams
          examples:
            - 1000
        external_customer_id:
          type: string
          nullable: true
          title: External Customer Id
          description: External ID of the customer who purchased the order
          examples:
            - '1234067358984'
        order_status_url:
          type: string
          nullable: true
          title: Order Status Url
          description: URL to the order status page as given by the shop provider
          examples:
            - >-
              https://shop.gokarla.io/1234067358984/orders/aabbcc/authenticate?key=secret
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Unique identifier for the order
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
        external_id:
          type: string
          title: External Id
          description: >-
            External identifier of the order as defined by the merchant shop
            system (e.g. shopify's order id)
          examples:
            - '2205783916624'
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug identifier
          examples:
            - my-shop
        merchant_slug:
          type: string
          nullable: true
          title: Merchant Slug
          description: Merchant slug identifier (DEPRECATED - use shop_slug)
        order_analytics:
          $ref: '#/components/schemas/OrderAnalyticsResponseDTO'
          nullable: true
          description: Order analytics and attribution data
        trackings:
          items:
            $ref: '#/components/schemas/TrackingDTO-Input'
          type: array
          title: Trackings
          description: The tracking information for the shipment/s involved in the order
          default: []
          examples:
            - - carrier:
                  carrier_reference: dhl
                  tracking_number: '123456'
                  tracking_url: >-
                    https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?lang=de&idc=123456
                direction: merchant_customer
                estimated_arrival:
                  language: en
                  time_prediction: Tomorrow
                events:
                  - event_key: H10
                    event_name: SUCCESSFULLY_DELIVERED
                    event_strings:
                      event_status: Yippee! Your parcel was successfully delivered.
                      header_headline: DELIVERED
                      header_subtitle: ''
                      header_title: Home
                      list_label: 'Delivered: 2025-02-05T11:20:27+00:00'
                    language: en
                    location:
                      city: ''
                      country: Austria
                      country_code: AT
                      formatted_address: Austria
                      full: Austria, AT, 14.550072, 47.516231, Europe/Vienna
                      latitude: 47.54401722075543
                      line1: ''
                      line2: ''
                      location_type: ''
                      longitude: 14.02504506285114
                      place: Austria
                      postal_code: ''
                      region: ''
                      state_or_province: ''
                      timezone: Europe/Vienna
                    phase: delivered
                    time: '2025-02-05T11:20:27+00:00'
                  - event_key: G20
                    event_name: OUT_FOR_DELIVERY
                    event_strings:
                      event_status: >-
                        Get ready! Your parcel is on the van and is likely to
                        arrive today.
                      header_headline: ARRIVING
                      header_subtitle: ''
                      header_title: Today
                      list_label: Arriving Today
                    language: en
                    location:
                      city: ''
                      country: Austria
                      country_code: AT
                      formatted_address: Austria
                      full: Austria, AT, 14.550072, 47.516231, Europe/Vienna
                      latitude: 47.54401722075543
                      line1: ''
                      line2: ''
                      location_type: ''
                      longitude: 14.02504506285114
                      place: Austria
                      postal_code: ''
                      region: ''
                      state_or_province: ''
                      timezone: Europe/Vienna
                    phase: in_delivery
                    time: '2025-02-05T07:49:31+00:00'
                  - event_key: E18
                    event_name: DISPATCHED_FROM_SORTING_CENTER
                    event_strings:
                      event_status: Moving on! Your parcel has left the sorting center.
                      header_headline: IN TRANSIT
                      header_subtitle: ''
                      header_title: Today
                      list_label: Arriving Today
                    language: en
                    phase: in_transit
                    time: '2025-02-04T08:34:10+00:00'
                  - event_key: C20
                    event_name: SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER
                    event_strings:
                      event_status: Your parcel info was sent to DHL.
                      header_headline: DISPATCHED
                      header_subtitle: ''
                      header_title: DHL received your order
                      list_label: Dispatched
                    language: en
                    phase: order_processed
                    time: '2025-02-03T05:14:12+00:00'
                  - event_key: A12
                    event_name: ORDER_PROCESSED
                    event_strings:
                      event_status: Your parcel has been packed and is ready to be shipped.
                      header_headline: PACKED
                      header_subtitle: ''
                      header_title: Your parcel has been packed
                      list_label: packed
                    language: en
                    phase: order_processed
                    time: '2025-02-03T05:14:12+00:00'
                  - event_key: A10
                    event_name: ORDER_CREATED
                    event_strings:
                      event_status: You've placed an online order.
                      header_headline: ORDER PLACED
                      header_subtitle: ''
                      header_title: Thanks for shopping!
                      list_label: Order placed
                    language: en
                    phase: order_created
                    time: '2025-02-02T07:08:10+00:00'
                flag: normal
                id: ee5c4b53-f661-455e-85d2-a7b7bcaf81bf
                merchant_id: d7cbb719-2a7b-48d3-9116-153c60c800bd
                merchant_slug: gokarla
                order_id: b721e24e-15ed-48d8-a7e7-4652bcaa60e3
                order_number: '123456'
                pickup:
                  address:
                    city: New York
                    street: 123 Main St
                    zip_code: '10001'
                  name: John Doe
                  type: neighbor
                products:
                  - bundled_products: []
                    images:
                      - src: https://www.example.com/image.jpg
                    price: 10
                    quantity: 1
                    requires_shipping: true
                    sku: '123456'
                    tax_lines: []
                    title: Individual Product
                    weight: 100
                  - bundled_products:
                      - images: []
                        price: 10
                        quantity: 1
                        requires_shipping: true
                        tax_lines: []
                        title: Bundled Product
                    images:
                      - src: https://www.example.com/image.jpg
                    price: 20
                    quantity: 2
                    requires_shipping: true
                    sku: '123457'
                    tax_lines: []
                    title: Product Bundle
                    weight: 100
                shop_slug: gokarla
                uuid: ee5c4b53-f661-455e-85d2-a7b7bcaf81bf
      type: object
      required:
        - order_number
        - address
        - uuid
        - external_id
        - shop_slug
      title: OrderDetailDTO
      description: >-
        The Order object with data that should not be exposed without
        authentication.
    OrderDetailDTO-Output:
      properties:
        order_number:
          type: string
          title: Order Number
          description: Opinionated numeric identification of the order
          examples:
            - '1234'
        order_name:
          type: string
          nullable: true
          title: Order Name
          description: Opinionated name of the order
          examples:
            - IXF1234
        order_placed_at:
          type: string
          format: date-time
          nullable: true
          title: Order Placed At
          description: Date the order was placed. Will take current time if not provided
          examples:
            - '2023-03-17T09:51:41+00:00'
        total_order_price:
          type: number
          nullable: true
          title: Total Order Price
          description: Total price of the order
          examples:
            - 29.99
        shipping_price:
          type: number
          nullable: true
          title: Shipping Price
          description: Total shipping price of the order
          examples:
            - 4.99
        sub_total_price:
          type: number
          nullable: true
          title: Sub Total Price
          description: Subtotal price of items before shipping and discounts
          examples:
            - 40
        discount_price:
          type: number
          title: Discount Price
          description: Total price of all the accumulated discounts
          default: 0
          examples:
            - 4.99
        products:
          items:
            $ref: '#/components/schemas/ProductDTO-Output'
          type: array
          maxItems: 100
          title: Products
          description: Line items for the order
          default: []
          examples:
            - - bundled_products: []
                images: []
                price: 10
                quantity: 1
                requires_shipping: true
                tax_lines: []
                title: Product A
                type: product
        discounts:
          items:
            $ref: '#/components/schemas/OrderDiscountDTO-Output'
          type: array
          title: Discounts
          description: Discounts applied to the order
          default: []
          examples:
            - - amount: '10.0'
                code: ULTRA_OFFER
                type: percentage
        email_id:
          type: string
          nullable: true
          title: Email Id
          description: Email address of the customer
          examples:
            - hello@gokarla.io
        address:
          $ref: '#/components/schemas/AddressDTO-Output'
          description: Shipment delivery address
          examples:
            - city: New York
              street: 123 Main St
              zip_code: '10001'
        currency:
          type: string
          nullable: true
          title: Currency
          description: ISO 4217 currency code (default to 'EUR')
          default: EUR
          examples:
            - EUR
        segments:
          items:
            type: string
          type: array
          nullable: true
          title: Segments
          description: The segments to which the user of the order belongs
          examples:
            - - segment1
              - segment2
        weight:
          type: number
          nullable: true
          title: Weight
          description: Total weight of the order in grams
          examples:
            - 1000
        external_customer_id:
          type: string
          nullable: true
          title: External Customer Id
          description: External ID of the customer who purchased the order
          examples:
            - '1234067358984'
        order_status_url:
          type: string
          nullable: true
          title: Order Status Url
          description: URL to the order status page as given by the shop provider
          examples:
            - >-
              https://shop.gokarla.io/1234067358984/orders/aabbcc/authenticate?key=secret
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Unique identifier for the order
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
        external_id:
          type: string
          title: External Id
          description: >-
            External identifier of the order as defined by the merchant shop
            system (e.g. shopify's order id)
          examples:
            - '2205783916624'
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug identifier
          examples:
            - my-shop
        merchant_slug:
          type: string
          nullable: true
          title: Merchant Slug
          description: Merchant slug identifier (DEPRECATED - use shop_slug)
        order_analytics:
          $ref: '#/components/schemas/OrderAnalyticsResponseDTO'
          nullable: true
          description: Order analytics and attribution data
        trackings:
          items:
            $ref: '#/components/schemas/TrackingDTO-Output'
          type: array
          title: Trackings
          description: The tracking information for the shipment/s involved in the order
          default: []
          examples:
            - - carrier:
                  carrier_reference: dhl
                  tracking_number: '123456'
                  tracking_url: >-
                    https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?lang=de&idc=123456
                direction: merchant_customer
                estimated_arrival:
                  language: en
                  time_prediction: Tomorrow
                events:
                  - event_key: H10
                    event_name: SUCCESSFULLY_DELIVERED
                    event_strings:
                      event_status: Yippee! Your parcel was successfully delivered.
                      header_headline: DELIVERED
                      header_subtitle: ''
                      header_title: Home
                      list_label: 'Delivered: 2025-02-05T11:20:27+00:00'
                    language: en
                    location:
                      city: ''
                      country: Austria
                      country_code: AT
                      formatted_address: Austria
                      full: Austria, AT, 14.550072, 47.516231, Europe/Vienna
                      latitude: 47.54401722075543
                      line1: ''
                      line2: ''
                      location_type: ''
                      longitude: 14.02504506285114
                      place: Austria
                      postal_code: ''
                      region: ''
                      state_or_province: ''
                      timezone: Europe/Vienna
                    phase: delivered
                    time: '2025-02-05T11:20:27+00:00'
                  - event_key: G20
                    event_name: OUT_FOR_DELIVERY
                    event_strings:
                      event_status: >-
                        Get ready! Your parcel is on the van and is likely to
                        arrive today.
                      header_headline: ARRIVING
                      header_subtitle: ''
                      header_title: Today
                      list_label: Arriving Today
                    language: en
                    location:
                      city: ''
                      country: Austria
                      country_code: AT
                      formatted_address: Austria
                      full: Austria, AT, 14.550072, 47.516231, Europe/Vienna
                      latitude: 47.54401722075543
                      line1: ''
                      line2: ''
                      location_type: ''
                      longitude: 14.02504506285114
                      place: Austria
                      postal_code: ''
                      region: ''
                      state_or_province: ''
                      timezone: Europe/Vienna
                    phase: in_delivery
                    time: '2025-02-05T07:49:31+00:00'
                  - event_key: E18
                    event_name: DISPATCHED_FROM_SORTING_CENTER
                    event_strings:
                      event_status: Moving on! Your parcel has left the sorting center.
                      header_headline: IN TRANSIT
                      header_subtitle: ''
                      header_title: Today
                      list_label: Arriving Today
                    language: en
                    phase: in_transit
                    time: '2025-02-04T08:34:10+00:00'
                  - event_key: C20
                    event_name: SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER
                    event_strings:
                      event_status: Your parcel info was sent to DHL.
                      header_headline: DISPATCHED
                      header_subtitle: ''
                      header_title: DHL received your order
                      list_label: Dispatched
                    language: en
                    phase: order_processed
                    time: '2025-02-03T05:14:12+00:00'
                  - event_key: A12
                    event_name: ORDER_PROCESSED
                    event_strings:
                      event_status: Your parcel has been packed and is ready to be shipped.
                      header_headline: PACKED
                      header_subtitle: ''
                      header_title: Your parcel has been packed
                      list_label: packed
                    language: en
                    phase: order_processed
                    time: '2025-02-03T05:14:12+00:00'
                  - event_key: A10
                    event_name: ORDER_CREATED
                    event_strings:
                      event_status: You've placed an online order.
                      header_headline: ORDER PLACED
                      header_subtitle: ''
                      header_title: Thanks for shopping!
                      list_label: Order placed
                    language: en
                    phase: order_created
                    time: '2025-02-02T07:08:10+00:00'
                flag: normal
                id: ee5c4b53-f661-455e-85d2-a7b7bcaf81bf
                merchant_id: d7cbb719-2a7b-48d3-9116-153c60c800bd
                merchant_slug: gokarla
                order_id: b721e24e-15ed-48d8-a7e7-4652bcaa60e3
                order_number: '123456'
                pickup:
                  address:
                    city: New York
                    street: 123 Main St
                    zip_code: '10001'
                  name: John Doe
                  type: neighbor
                products:
                  - bundled_products: []
                    images:
                      - src: https://www.example.com/image.jpg
                    price: 10
                    quantity: 1
                    requires_shipping: true
                    sku: '123456'
                    tax_lines: []
                    title: Individual Product
                    weight: 100
                  - bundled_products:
                      - images: []
                        price: 10
                        quantity: 1
                        requires_shipping: true
                        tax_lines: []
                        title: Bundled Product
                    images:
                      - src: https://www.example.com/image.jpg
                    price: 20
                    quantity: 2
                    requires_shipping: true
                    sku: '123457'
                    tax_lines: []
                    title: Product Bundle
                    weight: 100
                shop_slug: gokarla
                uuid: ee5c4b53-f661-455e-85d2-a7b7bcaf81bf
      type: object
      required:
        - order_number
        - address
        - uuid
        - external_id
        - shop_slug
      title: OrderDetailDTO
      description: >-
        The Order object with data that should not be exposed without
        authentication.
    OrderDiscountDTO-Input:
      properties:
        code:
          type: string
          title: Code
          description: Code of the discount
          examples:
            - SUMMER20
            - WELCOME10
            - FREESHIP
        amount:
          type: string
          nullable: true
          title: Amount
          description: Amount of the discount
          examples:
            - '10.00'
            - '20'
            - '15.50'
            - null
        type:
          type: string
          nullable: true
          title: Type
          description: Type of the discount
          examples:
            - percentage
            - fixed_amount
            - free_shipping
            - null
      type: object
      required:
        - code
      title: OrderDiscountDTO
      description: DTO for standardized discount objects.
    OrderDiscountDTO-Output:
      properties:
        code:
          title: Code
          description: Code of the discount
          examples:
            - SUMMER20
            - WELCOME10
            - FREESHIP
        amount:
          title: Amount
          description: Amount of the discount
          examples:
            - '10.00'
            - '20'
            - '15.50'
            - null
        type:
          title: Type
          description: Type of the discount
          examples:
            - percentage
            - fixed_amount
            - free_shipping
            - null
      type: object
      required:
        - code
      title: OrderDiscountDTO
      description: DTO for standardized discount objects.
    OrderFinderWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        background_type:
          type: string
          enum:
            - image
            - color
          nullable: true
          title: Background Type
          description: Type of background (image or color)
        background_image:
          type: string
          nullable: true
          title: Background Image
          description: URL of background image (when background_type is 'image')
        background_alignment:
          type: string
          nullable: true
          title: Background Alignment
          description: Background alignment
        button_variant:
          type: string
          enum:
            - primary
            - secondary
            - outline
          nullable: true
          title: Button Variant
          description: Button style variant
      type: object
      title: OrderFinderWidgetDTO
      description: Configuration for the order-finder widget.
    OrderFulfillmentDTO:
      properties:
        id:
          type: string
          title: Id
          description: Order reference whose type is defined by the id_type field
          examples:
            - '11334422'
        id_type:
          $ref: '#/components/schemas/OrderReferenceType'
          description: Type of order identifier that is passed in the reference field
          default: order_number
        order:
          $ref: '#/components/schemas/OrderPlacementDTO'
          nullable: true
          description: Order information (will perform an upsert if provided)
        trackings:
          items:
            $ref: '#/components/schemas/OrderTrackingRequestDTO'
          type: array
          maxItems: 50
          title: Trackings
          description: >-
            Tracking information relevant to the order (order must exist already
            if it is not provided)
          examples:
            - - products: []
                tracking_number: '123456'
                tracking_placed_at: '2026-03-25T18:46:27.573550Z'
      type: object
      required:
        - id
        - trackings
      title: OrderFulfillmentDTO
      description: Representation of an order fulfillment as sent by a merchant.
    OrderPlacementDTO:
      properties:
        order_number:
          type: string
          title: Order Number
          description: Opinionated numeric identification of the order
          examples:
            - '1234'
        order_name:
          type: string
          nullable: true
          title: Order Name
          description: Opinionated name of the order
          examples:
            - IXF1234
        order_placed_at:
          type: string
          format: date-time
          nullable: true
          title: Order Placed At
          description: Date the order was placed. Will take current time if not provided
          examples:
            - '2023-03-17T09:51:41+00:00'
        total_order_price:
          type: number
          nullable: true
          title: Total Order Price
          description: Total price of the order
          examples:
            - 29.99
        shipping_price:
          type: number
          nullable: true
          title: Shipping Price
          description: Total shipping price of the order
          examples:
            - 4.99
        sub_total_price:
          type: number
          nullable: true
          title: Sub Total Price
          description: Subtotal price of items before shipping and discounts
          examples:
            - 40
        discount_price:
          type: number
          title: Discount Price
          description: Total price of all the accumulated discounts
          default: 0
          examples:
            - 4.99
        products:
          items:
            $ref: '#/components/schemas/ProductDTO-Input'
          type: array
          maxItems: 100
          title: Products
          description: Line items for the order
          default: []
          examples:
            - - bundled_products: []
                images: []
                price: 10
                quantity: 1
                requires_shipping: true
                tax_lines: []
                title: Product A
                type: product
        discounts:
          items:
            $ref: '#/components/schemas/OrderDiscountDTO-Input'
          type: array
          title: Discounts
          description: Discounts applied to the order
          default: []
          examples:
            - - amount: '10.0'
                code: ULTRA_OFFER
                type: percentage
        email_id:
          type: string
          nullable: true
          title: Email Id
          description: Email address of the customer
          examples:
            - hello@gokarla.io
        address:
          $ref: '#/components/schemas/AddressWithZipCodeDTO'
          description: Shipment delivery address
          examples:
            - city: New York
              street: 123 Main St
              zip_code: '10001'
        currency:
          type: string
          nullable: true
          title: Currency
          description: ISO 4217 currency code (default to 'EUR')
          default: EUR
          examples:
            - EUR
        segments:
          items:
            type: string
          type: array
          nullable: true
          title: Segments
          description: The segments to which the user of the order belongs
          examples:
            - - segment1
              - segment2
        weight:
          type: number
          nullable: true
          title: Weight
          description: Total weight of the order in grams
          examples:
            - 1000
        external_customer_id:
          type: string
          nullable: true
          title: External Customer Id
          description: External ID of the customer who purchased the order
          examples:
            - '1234067358984'
        order_status_url:
          type: string
          nullable: true
          title: Order Status Url
          description: URL to the order status page as given by the shop provider
          examples:
            - >-
              https://shop.gokarla.io/1234067358984/orders/aabbcc/authenticate?key=secret
        external_id:
          type: string
          nullable: true
          title: External Id
          description: >-
            External identifier of the order as defined by the merchant shop
            system (e.g. shopify's order id). If not provided or empty, defaults
            to order_number.
          examples:
            - '2205783916624'
        preferred_delivery_date:
          $ref: '#/components/schemas/PreferredDeliveryDate'
          nullable: true
          description: Preferred delivery date for the order
        user_agent:
          type: string
          nullable: true
          title: User Agent
          description: User agent of the customer
          examples:
            - - >-
                Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0
                Safari/537.36
        order_analytics:
          additionalProperties: true
          type: object
          title: Order Analytics
          description: >-
            Analytics information related to the order. This information is not
            used for any computation, but can be used to track the order in the
            merchant's analytics system.
          default: {}
        expected_number_of_shipments:
          type: integer
          maximum: 100
          title: Expected Number Of Shipments
          description: Expected number of shipments for the order (defaults to 1)
          default: 1
          examples:
            - 1
        financial_status:
          $ref: '#/components/schemas/FinancialStatusEnum'
          nullable: true
          description: Financial status of the order from Shopify
          examples:
            - paid
            - refunded
      type: object
      required:
        - order_number
        - address
      title: OrderPlacementDTO
      description: Representation of an order as sent by a merchant at checkout stage.
    OrderReferenceType:
      type: string
      enum:
        - uuid
        - external_id
        - order_number
        - order_name
      title: OrderReferenceType
      description: Enum for order reference types.
    OrderSummaryWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        hide_prices:
          type: boolean
          nullable: true
          title: Hide Prices
          description: Whether to hide prices in the order summary
      type: object
      title: OrderSummaryWidgetDTO
      description: Configuration for the order-summary widget.
    OrderTrackingRequestDTO:
      properties:
        tracking_number:
          type: string
          minLength: 6
          title: Tracking Number
          description: Tracking code(s), comma or semicolon separated
          examples:
            - CH400397205DE,1234567890;ABCD1234
        tracking_url:
          type: string
          nullable: true
          title: Tracking Url
          description: The tracking URL as it comes from the carrier.
        tracking_placed_at:
          type: string
          format: date-time
          nullable: true
          title: Tracking Placed At
          description: >-
            Date the fulfillment was placed. Will take current time if not
            provided
          examples:
            - '2023-03-17T09:51:41+00:00'
        carrier_reference:
          type: string
          nullable: true
          title: Carrier Reference
          description: Carrier reference must be a valid karla carrier list value.
          examples:
            - dhl
        external_shipment_id:
          type: string
          nullable: true
          title: External Shipment Id
          description: External shipment ID (for instance, shopify's fulfillment id)
        origin_full_address:
          $ref: '#/components/schemas/AddressSchema'
          nullable: true
          description: Complete origin warehouse address
        external_origin_id:
          type: string
          nullable: true
          title: External Origin Id
          description: External origin identifier (e.g., Shopify location_id)
        products:
          items:
            $ref: '#/components/schemas/ProductDTO-Input'
          type: array
          maxItems: 50
          title: Products
          description: >-
            Line items involved in the delivery. If not provided, all products
            from the related order will be considered as delivered.
          default: []
          examples:
            - - bundled_products: []
                images: []
                price: 10
                quantity: 1
                requires_shipping: true
                tax_lines: []
                title: Product A
                type: product
        tracking_company:
          type: string
          nullable: true
          title: Tracking Company
          description: >-
            External Tracking Company Name - can be any string that identifies
            the carrier.
          examples:
            - DHL Paket GmbH
      type: object
      required:
        - tracking_number
      title: OrderTrackingRequestDTO
      description: Representation of an order tracking as sent by a merchant.
    OrderTrackingUpdateDTO:
      properties:
        tracking_url:
          type: string
          nullable: true
          title: Tracking Url
          description: The tracking URL as it comes from the carrier.
        products:
          items:
            $ref: '#/components/schemas/ProductDTO-Input'
          type: array
          maxItems: 50
          nullable: true
          title: Products
          description: >-
            Line items involved in the delivery. Give an empty list to remove
            all products from the shipment.Any list provided will override the
            current products in the shipment (there is no merge). Will be
            skipped from update if not given
          examples:
            - - bundled_products: []
                images: []
                price: 10
                quantity: 1
                requires_shipping: true
                tax_lines: []
                title: Product A
                type: product
      type: object
      title: OrderTrackingUpdateDTO
      description: Representation of an order tracking update.
    OrderUpdateDTO:
      properties:
        address:
          $ref: '#/components/schemas/AddressDTO-Input'
          nullable: true
          description: Shipment delivery address (skips update if undefined).
        expected_number_of_shipments:
          type: integer
          maximum: 100
          nullable: true
          title: Expected Number Of Shipments
          description: >-
            Expected number of shipments for the order (skips update if
            undefined).
          examples:
            - 1
        segments:
          items:
            type: string
          type: array
          nullable: true
          title: Segments
          description: >-
            Segments to assign to the order, replacing any existing segments
            (skips update if undefined).
          examples:
            - - segment1
              - segment2
      type: object
      title: OrderUpdateDTO
      description: Payload for a partial update of an order.
    OrgCreationDTO:
      properties:
        slug:
          type: string
          title: Slug
          description: Organization slug
        name:
          type: string
          nullable: true
          title: Name
          description: Organization name
        email:
          type: string
          nullable: true
          title: Email
          description: Organization email
        phone:
          type: string
          nullable: true
          title: Phone
          description: Organization phone
        website:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Website
          description: Organization website
        industry:
          type: string
          nullable: true
          title: Industry
          description: Organization industry
      type: object
      required:
        - slug
      title: OrgCreationDTO
      description: Organization creation DTO.
    OrgDTO-Input:
      properties:
        id:
          nullable: true
          title: Id
        slug:
          type: string
          title: Slug
          description: The organization url slug
        name:
          type: string
          nullable: true
          title: Name
          description: The organization name
        email:
          type: string
          nullable: true
          title: Email
          description: The organization email
        phone:
          type: string
          nullable: true
          title: Phone
          description: The organization phone
        website:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Website
          description: The organization website
        industry:
          type: string
          nullable: true
          title: Industry
          description: The organization industry
        sso_domain:
          type: string
          nullable: true
          title: Sso Domain
          description: The SSO domain
        feature_community:
          $ref: '#/components/schemas/FeatureCommunity'
          description: The feature community users of the organization belong to
        feature_toggles:
          additionalProperties: true
          type: object
          nullable: true
          title: Feature Toggles
          description: The specific features users have access to
      type: object
      required:
        - slug
        - feature_community
      title: OrgDTO
      description: The Organization settings object to be exchanged with the HTTP clients.
    OrgDTO-Output:
      properties:
        slug:
          title: Slug
          description: The organization url slug
        name:
          title: Name
          description: The organization name
        email:
          title: Email
          description: The organization email
        phone:
          title: Phone
          description: The organization phone
        website:
          title: Website
          description: The organization website
        industry:
          title: Industry
          description: The organization industry
        sso_domain:
          title: Sso Domain
          description: The SSO domain
        feature_community:
          description: The feature community users of the organization belong to
        feature_toggles:
          title: Feature Toggles
          description: The specific features users have access to
      type: object
      required:
        - slug
        - feature_community
      title: OrgDTO
      description: The Organization settings object to be exchanged with the HTTP clients.
    OrgUserInviteCreationDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: Email of the user to invite
          examples:
            - test@example.com
        role:
          $ref: '#/components/schemas/UserRole'
          description: User role in the organization
          examples:
            - viewer
      type: object
      required:
        - email
        - role
      title: OrgUserInviteCreationDTO
      description: Organization user invite creation DTO.
    PaginationInfo-Input:
      properties:
        page:
          type: integer
          title: Page
          description: Current page number
        per_page:
          type: integer
          title: Per Page
          description: Items per page
        total:
          type: integer
          title: Total
          description: Total number of items
      type: object
      required:
        - page
        - per_page
        - total
      title: PaginationInfo
      description: Pagination metadata for API responses.
    PaginationInfo-Output:
      properties:
        page:
          type: integer
          title: Page
          description: Current page number
        per_page:
          type: integer
          title: Per Page
          description: Items per page
        total:
          type: integer
          title: Total
          description: Total number of items
        total_pages:
          type: integer
          title: Total Pages
          description: Calculate total number of pages.
          readOnly: true
        has_next:
          type: boolean
          title: Has Next
          description: Check if there is a next page.
          readOnly: true
        has_previous:
          type: boolean
          title: Has Previous
          description: Check if there is a previous page.
          readOnly: true
      type: object
      required:
        - page
        - per_page
        - total
        - total_pages
        - has_next
        - has_previous
      title: PaginationInfo
      description: Pagination metadata for API responses.
    PhaseEnum:
      type: string
      enum:
        - collect
        - delivery_failed
        - delivered
        - in_delivery
        - in_transit
        - order_created
        - order_cancelled
        - order_processed
        - return_created
        - return_failed
        - return_received
        - return_transit
        - returned
      title: PhaseEnum
      description: Karla internal shipment phase describing the phase the shipment is in.
    PickUpTypeEnum:
      type: string
      enum:
        - shop
        - neighbor
        - locker
        - letterbox
      title: PickUpTypeEnum
      description: Pickup Type.
    PreferredDeliveryDate:
      properties:
        start:
          type: string
          format: date-time
          nullable: true
          title: Start
          description: Preferred Delivery Date From
          examples:
            - '2024-01-18T08:00:00Z'
            - '2024-02-01T10:00:00Z'
            - null
        end:
          type: string
          format: date-time
          nullable: true
          title: End
          description: Preferred Delivery Date To
          examples:
            - '2024-01-18T18:00:00Z'
            - '2024-02-01T20:00:00Z'
            - null
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Preferred Delivery Date last updated time
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-16T09:00:00Z'
            - null
        source:
          type: string
          nullable: true
          title: Source
          description: Preferred Delivery Date source
          examples:
            - customer
            - system
            - api
            - null
      type: object
      title: PreferredDeliveryDate
      description: Schema for a preferred delivery date.
    ProductDTO-Input:
      properties:
        product_id:
          type: string
          nullable: true
          title: Product Id
          description: Product ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        variant_id:
          type: string
          nullable: true
          title: Variant Id
          description: Variant ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
          examples:
            - Organic Coffee Beans
            - Wireless Mouse
            - T-Shirt
            - null
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
          examples:
            - 1kg / Dark Roast
            - Black / USB-C
            - Size L / Blue
            - null
        quantity:
          type: integer
          nullable: true
          title: Quantity
          description: Quantity of products
          examples:
            - 1
            - 2
            - 10
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Price of the product
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        discount_price:
          type: number
          nullable: true
          title: Discount Price
          description: Discounted price of the product
          examples:
            - 25.99
            - 10
            - 79
            - null
        currency:
          type: string
          nullable: true
          title: Currency
          description: Currency of the product (ISO 4217)
          examples:
            - EUR
            - USD
            - GBP
            - null
        size:
          type: string
          nullable: true
          title: Size
          description: Size of the product
          examples:
            - L
            - XL
            - 40x30x20cm
            - null
        images:
          items:
            $ref: '#/components/schemas/ProductImageSchema'
          type: array
          title: Images
          description: List of product images
          default: []
          examples:
            - - alt: Organic coffee beans package front view
                src: https://cdn.shop.com/products/coffee-beans-main.jpg
              - alt: Organic coffee beans package side view
                src: https://cdn.shop.com/products/coffee-beans-side.jpg
            - []
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - ABC-123-XL
            - SKU-789456
            - null
        weight:
          type: number
          nullable: true
          title: Weight
          description: Weight of the product in grams
          examples:
            - 500
            - 1000
            - 250.5
            - null
        tax_lines:
          items:
            $ref: '#/components/schemas/TaxLineSchema'
          type: array
          title: Tax Lines
          description: List of tax lines
          default: []
          examples:
            - - currency: EUR
                price: 5.7
                rate: 0.19
                title: VAT 19%
              - currency: EUR
                price: 2.1
                rate: 0.07
                title: Reduced VAT 7%
            - []
        estimated_ship_date_start:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date Start
          description: Estimated ship date start from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        estimated_ship_date_end:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date End
          description: Estimated ship date end from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        requires_shipping:
          type: boolean
          title: Requires Shipping
          description: >-
            Whether this product requires physical shipping. False for digital
            products, gift cards, services, etc.
          default: true
          examples:
            - true
            - false
        bundled_products:
          items:
            $ref: '#/components/schemas/BaseProductSchema'
          type: array
          title: Bundled Products
          description: List of bundled products
          default: []
          examples:
            - - images: []
                price: 12.99
                quantity: 1
                requires_shipping: true
                sku: CUP-WH-350
                tax_lines: []
                title: Coffee Cup
                variant_title: White / 350ml
                weight: 150
              - images: []
                price: 3.99
                quantity: 2
                requires_shipping: true
                sku: SPOON-SS
                tax_lines: []
                title: Coffee Spoon
                variant_title: Stainless Steel
                weight: 50
            - []
        translations:
          additionalProperties:
            $ref: '#/components/schemas/ProductTranslationSchema'
          propertyNames:
            $ref: '#/components/schemas/LanguageEnum'
          type: object
          nullable: true
          title: Translations
          description: Translations by language code
        shipment_id:
          type: string
          format: uuid
          nullable: true
          title: Shipment Id
          description: UUID of the shipment this product belongs to
          examples:
            - dcc06277-4060-4b4b-b5cf-439511252d66
        type:
          $ref: '#/components/schemas/ProductTypeEnum'
          description: The type of the product (individual or bundle)
          default: product
      type: object
      title: ProductDTO
      description: Product schema belonging to orders or shipments.
    ProductDTO-Output:
      properties:
        product_id:
          title: Product Id
          description: Product ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        variant_id:
          title: Variant Id
          description: Variant ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        title:
          title: Title
          description: Product title
          examples:
            - Organic Coffee Beans
            - Wireless Mouse
            - T-Shirt
            - null
        variant_title:
          title: Variant Title
          description: Variant title
          examples:
            - 1kg / Dark Roast
            - Black / USB-C
            - Size L / Blue
            - null
        quantity:
          title: Quantity
          description: Quantity of products
          examples:
            - 1
            - 2
            - 10
            - null
        price:
          title: Price
          description: Price of the product
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        discount_price:
          title: Discount Price
          description: Discounted price of the product
          examples:
            - 25.99
            - 10
            - 79
            - null
        currency:
          title: Currency
          description: Currency of the product (ISO 4217)
          examples:
            - EUR
            - USD
            - GBP
            - null
        size:
          title: Size
          description: Size of the product
          examples:
            - L
            - XL
            - 40x30x20cm
            - null
        images:
          title: Images
          description: List of product images
          examples:
            - - alt: Organic coffee beans package front view
                src: https://cdn.shop.com/products/coffee-beans-main.jpg
              - alt: Organic coffee beans package side view
                src: https://cdn.shop.com/products/coffee-beans-side.jpg
            - []
        sku:
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - ABC-123-XL
            - SKU-789456
            - null
        weight:
          title: Weight
          description: Weight of the product in grams
          examples:
            - 500
            - 1000
            - 250.5
            - null
        tax_lines:
          title: Tax Lines
          description: List of tax lines
          examples:
            - - currency: EUR
                price: 5.7
                rate: 0.19
                title: VAT 19%
              - currency: EUR
                price: 2.1
                rate: 0.07
                title: Reduced VAT 7%
            - []
        estimated_ship_date_start:
          title: Estimated Ship Date Start
          description: Estimated ship date start from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        estimated_ship_date_end:
          title: Estimated Ship Date End
          description: Estimated ship date end from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        requires_shipping:
          title: Requires Shipping
          description: >-
            Whether this product requires physical shipping. False for digital
            products, gift cards, services, etc.
          examples:
            - true
            - false
        bundled_products:
          title: Bundled Products
          description: List of bundled products
          examples:
            - - images: []
                price: 12.99
                quantity: 1
                requires_shipping: true
                sku: CUP-WH-350
                tax_lines: []
                title: Coffee Cup
                variant_title: White / 350ml
                weight: 150
              - images: []
                price: 3.99
                quantity: 2
                requires_shipping: true
                sku: SPOON-SS
                tax_lines: []
                title: Coffee Spoon
                variant_title: Stainless Steel
                weight: 50
            - []
        translations:
          title: Translations
          description: Translations by language code
        shipment_id:
          title: Shipment Id
          description: UUID of the shipment this product belongs to
          examples:
            - dcc06277-4060-4b4b-b5cf-439511252d66
        type:
          description: The type of the product (individual or bundle)
      type: object
      title: ProductDTO
      description: Product schema belonging to orders or shipments.
    ProductImageSchema:
      properties:
        src:
          type: string
          title: Src
          description: Source of the image
          examples:
            - https://cdn.shop.com/products/coffee-beans-1kg.jpg
            - https://images.example.com/product-123-main.png
        alt:
          type: string
          nullable: true
          title: Alt
          description: Alt of the image
          examples:
            - Organic coffee beans package front view
            - Product thumbnail
            - null
      type: object
      required:
        - src
      title: ProductImageSchema
      description: Schema for a product image.
    ProductPromotionPropertiesI18n:
      properties:
        language:
          type: string
          title: Language
          description: Language of the translation
          examples:
            - en
        values:
          $ref: '#/components/schemas/ProductPromotionPropertiesText'
          description: Product recommendation values to translate
      type: object
      required:
        - language
        - values
      title: ProductPromotionPropertiesI18n
      description: The product recommendation text values that are localized.
    ProductPromotionPropertiesRequestDTO:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label (e.g. for the story widget)
          examples:
            - Go to shop
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink (e.g. for the story widget)
          examples:
            - https://shop.gokarla.io
        product_source:
          $ref: '#/components/schemas/ProductSource'
          description: 'Source of the products, dynamic will fetch from the shop, '
          default: manual
          examples:
            - manual
            - dynamic
        add_to_cart_enabled:
          type: boolean
          title: Add To Cart Enabled
          description: Use add-to-cart URLs instead of product page URLs for Shopify
          default: false
          examples:
            - false
            - true
        products:
          anyOf:
            - items:
                $ref: '#/components/schemas/CampaignProductDetailsDTO'
              type: array
            - items:
                $ref: '#/components/schemas/CampaignProductDTO-Input'
              type: array
          title: Products
          description: Product recommendation list
          default: []
          examples:
            - - category: sale
                discount:
                  amount: 10
                  category: percentage
                id: 550e8400-e29b-41d4-a716-446655440000
              - id: 550e8400-e29b-41d4-a716-446655440001
            - - currency: EUR
                image_url: https://cdn.shop.com/products/coffee-beans.jpg
                price: 29.99
                product_url: https://shop.example.com/products/coffee-beans?ref=karla
                title: Organic Coffee Beans
        translations:
          items:
            $ref: '#/components/schemas/ProductPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the product recommendation strings
          examples:
            - - language: en
                values:
                  cta_label: Go to shop
                  cta_url: https://shop.gokarla.io?ref=karla
                  title: Items you may like
              - language: de
                values:
                  cta_label: Zum Shop
                  cta_url: https://shop.example.com?ref=karla
                  title: Artikel, die Ihnen gefallen könnten
            - null
      type: object
      title: ProductPromotionPropertiesRequestDTO
      description: >-
        The request properties of the product promotion that belongs to a
        campaign.
    ProductPromotionPropertiesResponseDTO-Input:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label (e.g. for the story widget)
          examples:
            - Go to shop
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink (e.g. for the story widget)
          examples:
            - https://shop.gokarla.io
        product_source:
          $ref: '#/components/schemas/ProductSource'
          description: 'Source of the products, dynamic will fetch from the shop, '
          default: manual
          examples:
            - manual
            - dynamic
        add_to_cart_enabled:
          type: boolean
          title: Add To Cart Enabled
          description: Use add-to-cart URLs instead of product page URLs for Shopify
          default: false
          examples:
            - false
            - true
        products:
          items:
            $ref: '#/components/schemas/CampaignProductDTO-Input'
          type: array
          title: Products
          description: Product recommendation list
          default: []
          examples:
            - - currency: EUR
                image_url: https://cdn.shop.com/products/coffee-beans.jpg
                price: 29.99
                product_url: https://shop.example.com/products/coffee-beans?ref=karla
                title: Organic Coffee Beans
              - currency: EUR
                image_url: https://cdn.shop.com/products/coffee-mug.jpg
                price: 15.99
                product_url: https://shop.example.com/products/coffee-mug?ref=karla
                title: Coffee Mug
            - []
        translations:
          items:
            $ref: '#/components/schemas/ProductPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the product recommendation strings
          examples:
            - - language: en
                values:
                  cta_label: Go to shop
                  cta_url: https://shop.example.com?ref=karla
                  title: Items you may like
              - language: de
                values:
                  cta_label: Zum Shop
                  cta_url: https://shop.example.com?ref=karla
                  title: Artikel, die Ihnen gefallen könnten
            - null
      type: object
      title: ProductPromotionPropertiesResponseDTO
      description: The properties of the product promotion that belongs to a campaign.
    ProductPromotionPropertiesResponseDTO-Output:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Campaign Title
          examples:
            - Items you may like
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label (e.g. for the story widget)
          examples:
            - Go to shop
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink (e.g. for the story widget)
          examples:
            - https://shop.gokarla.io
        product_source:
          $ref: '#/components/schemas/ProductSource'
          description: 'Source of the products, dynamic will fetch from the shop, '
          default: manual
          examples:
            - manual
            - dynamic
        add_to_cart_enabled:
          type: boolean
          title: Add To Cart Enabled
          description: Use add-to-cart URLs instead of product page URLs for Shopify
          default: false
          examples:
            - false
            - true
        products:
          items:
            $ref: '#/components/schemas/CampaignProductDTO-Output'
          type: array
          title: Products
          description: Product recommendation list
          default: []
          examples:
            - - currency: EUR
                image_url: https://cdn.shop.com/products/coffee-beans.jpg
                price: 29.99
                product_url: https://shop.example.com/products/coffee-beans?ref=karla
                title: Organic Coffee Beans
              - currency: EUR
                image_url: https://cdn.shop.com/products/coffee-mug.jpg
                price: 15.99
                product_url: https://shop.example.com/products/coffee-mug?ref=karla
                title: Coffee Mug
            - []
        translations:
          items:
            $ref: '#/components/schemas/ProductPromotionPropertiesI18n'
          type: array
          nullable: true
          title: Translations
          description: Translations for the product recommendation strings
          examples:
            - - language: en
                values:
                  cta_label: Go to shop
                  cta_url: https://shop.example.com?ref=karla
                  title: Items you may like
              - language: de
                values:
                  cta_label: Zum Shop
                  cta_url: https://shop.example.com?ref=karla
                  title: Artikel, die Ihnen gefallen könnten
            - null
      type: object
      title: ProductPromotionPropertiesResponseDTO
      description: The properties of the product promotion that belongs to a campaign.
    ProductPromotionPropertiesText:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product Promotion title
          examples:
            - Items you may like
        cta_label:
          type: string
          nullable: true
          title: Cta Label
          description: Call to Action Label (e.g. for the story widget)
          examples:
            - Go to shop
        cta_url:
          type: string
          nullable: true
          title: Cta Url
          description: Call to Action hyperlink (e.g. for the story widget)
          examples:
            - https://shop.gokarla.io
      type: object
      title: ProductPromotionPropertiesText
      description: Text of the product promotion that can be translated.
    ProductPromotionWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        auto_scroll:
          type: boolean
          nullable: true
          title: Auto Scroll
          description: Whether to enable auto-scrolling
        show_voucher_code:
          type: boolean
          nullable: true
          title: Show Voucher Code
          description: Whether to show voucher codes
        type:
          type: string
          enum:
            - product-promotion
            - social-media
            - others
          nullable: true
          title: Type
          description: Type of product promotion
        show_card_border:
          type: boolean
          nullable: true
          title: Show Card Border
          description: Whether to show card borders
      type: object
      title: ProductPromotionWidgetDTO
      description: Configuration for the product-promotion widget.
    ProductRecommendationCategory:
      type: string
      enum:
        - sale
        - new
      title: ProductRecommendationCategory
      description: Type of product recommendation promotion category.
    ProductRecommendationI18n:
      properties:
        language:
          type: string
          title: Language
          description: Language of the translation
          examples:
            - en
        values:
          $ref: '#/components/schemas/ProductRecommendationText'
          description: Product recommendation values to translate
      type: object
      required:
        - language
        - values
      title: ProductRecommendationI18n
      description: The product recommendation text values that are localized.
    ProductRecommendationText:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product Title
          examples:
            - Delivery Socks
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Product Image URL
          examples:
            - https://shop.gokarla.io/cdn/shop/products/Socks1.png
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product hyperlink
          examples:
            - https://shop.gokarla.io/products/delivery-s-cks
      type: object
      title: ProductRecommendationText
      description: Text of the product recommendation that can be translated.
    ProductSaleDiscountDTO:
      properties:
        category:
          $ref: '#/components/schemas/DiscountCategory'
          description: Type of the sale discount
          examples:
            - percentage
        amount:
          type: number
          title: Amount
          description: Sale discount amount
          examples:
            - 10
      type: object
      required:
        - category
        - amount
      title: ProductSaleDiscountDTO
      description: The properties of the product sale discount that belongs to a promotion.
    ProductSchema-Input:
      properties:
        product_id:
          type: string
          nullable: true
          title: Product Id
          description: Product ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        variant_id:
          type: string
          nullable: true
          title: Variant Id
          description: Variant ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
          examples:
            - Organic Coffee Beans
            - Wireless Mouse
            - T-Shirt
            - null
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
          examples:
            - 1kg / Dark Roast
            - Black / USB-C
            - Size L / Blue
            - null
        quantity:
          type: integer
          nullable: true
          title: Quantity
          description: Quantity of products
          examples:
            - 1
            - 2
            - 10
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Price of the product
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        discount_price:
          type: number
          nullable: true
          title: Discount Price
          description: Discounted price of the product
          examples:
            - 25.99
            - 10
            - 79
            - null
        currency:
          type: string
          nullable: true
          title: Currency
          description: Currency of the product (ISO 4217)
          examples:
            - EUR
            - USD
            - GBP
            - null
        size:
          type: string
          nullable: true
          title: Size
          description: Size of the product
          examples:
            - L
            - XL
            - 40x30x20cm
            - null
        images:
          items:
            $ref: '#/components/schemas/ProductImageSchema'
          type: array
          title: Images
          description: List of product images
          default: []
          examples:
            - - alt: Organic coffee beans package front view
                src: https://cdn.shop.com/products/coffee-beans-main.jpg
              - alt: Organic coffee beans package side view
                src: https://cdn.shop.com/products/coffee-beans-side.jpg
            - []
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - ABC-123-XL
            - SKU-789456
            - null
        weight:
          type: number
          nullable: true
          title: Weight
          description: Weight of the product in grams
          examples:
            - 500
            - 1000
            - 250.5
            - null
        tax_lines:
          items:
            $ref: '#/components/schemas/TaxLineSchema'
          type: array
          title: Tax Lines
          description: List of tax lines
          default: []
          examples:
            - - currency: EUR
                price: 5.7
                rate: 0.19
                title: VAT 19%
              - currency: EUR
                price: 2.1
                rate: 0.07
                title: Reduced VAT 7%
            - []
        estimated_ship_date_start:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date Start
          description: Estimated ship date start from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        estimated_ship_date_end:
          type: string
          format: date-time
          nullable: true
          title: Estimated Ship Date End
          description: Estimated ship date end from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        requires_shipping:
          type: boolean
          title: Requires Shipping
          description: >-
            Whether this product requires physical shipping. False for digital
            products, gift cards, services, etc.
          default: true
          examples:
            - true
            - false
        bundled_products:
          items:
            $ref: '#/components/schemas/BaseProductSchema'
          type: array
          title: Bundled Products
          description: List of bundled products
          default: []
          examples:
            - - images: []
                price: 12.99
                quantity: 1
                requires_shipping: true
                sku: CUP-WH-350
                tax_lines: []
                title: Coffee Cup
                variant_title: White / 350ml
                weight: 150
              - images: []
                price: 3.99
                quantity: 2
                requires_shipping: true
                sku: SPOON-SS
                tax_lines: []
                title: Coffee Spoon
                variant_title: Stainless Steel
                weight: 50
            - []
        translations:
          additionalProperties:
            $ref: '#/components/schemas/ProductTranslationSchema'
          propertyNames:
            $ref: '#/components/schemas/LanguageEnum'
          type: object
          nullable: true
          title: Translations
          description: Translations by language code
      type: object
      title: ProductSchema
      description: Schema for a product or a bundle of products.
    ProductSchema-Output:
      properties:
        product_id:
          title: Product Id
          description: Product ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        variant_id:
          title: Variant Id
          description: Variant ID
          examples:
            - '1234567890'
            - '1234567891'
            - null
        title:
          title: Title
          description: Product title
          examples:
            - Organic Coffee Beans
            - Wireless Mouse
            - T-Shirt
            - null
        variant_title:
          title: Variant Title
          description: Variant title
          examples:
            - 1kg / Dark Roast
            - Black / USB-C
            - Size L / Blue
            - null
        quantity:
          title: Quantity
          description: Quantity of products
          examples:
            - 1
            - 2
            - 10
            - null
        price:
          title: Price
          description: Price of the product
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        discount_price:
          title: Discount Price
          description: Discounted price of the product
          examples:
            - 25.99
            - 10
            - 79
            - null
        currency:
          title: Currency
          description: Currency of the product (ISO 4217)
          examples:
            - EUR
            - USD
            - GBP
            - null
        size:
          title: Size
          description: Size of the product
          examples:
            - L
            - XL
            - 40x30x20cm
            - null
        images:
          title: Images
          description: List of product images
          examples:
            - - alt: Organic coffee beans package front view
                src: https://cdn.shop.com/products/coffee-beans-main.jpg
              - alt: Organic coffee beans package side view
                src: https://cdn.shop.com/products/coffee-beans-side.jpg
            - []
        sku:
          title: Sku
          description: SKU of the product
          examples:
            - PROD-001
            - ABC-123-XL
            - SKU-789456
            - null
        weight:
          title: Weight
          description: Weight of the product in grams
          examples:
            - 500
            - 1000
            - 250.5
            - null
        tax_lines:
          title: Tax Lines
          description: List of tax lines
          examples:
            - - currency: EUR
                price: 5.7
                rate: 0.19
                title: VAT 19%
              - currency: EUR
                price: 2.1
                rate: 0.07
                title: Reduced VAT 7%
            - []
        estimated_ship_date_start:
          title: Estimated Ship Date Start
          description: Estimated ship date start from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        estimated_ship_date_end:
          title: Estimated Ship Date End
          description: Estimated ship date end from line item properties
          examples:
            - '2025-10-23T00:00:00Z'
            - 23.10.2025
            - null
        requires_shipping:
          title: Requires Shipping
          description: >-
            Whether this product requires physical shipping. False for digital
            products, gift cards, services, etc.
          examples:
            - true
            - false
        bundled_products:
          title: Bundled Products
          description: List of bundled products
          examples:
            - - images: []
                price: 12.99
                quantity: 1
                requires_shipping: true
                sku: CUP-WH-350
                tax_lines: []
                title: Coffee Cup
                variant_title: White / 350ml
                weight: 150
              - images: []
                price: 3.99
                quantity: 2
                requires_shipping: true
                sku: SPOON-SS
                tax_lines: []
                title: Coffee Spoon
                variant_title: Stainless Steel
                weight: 50
            - []
        translations:
          title: Translations
          description: Translations by language code
      type: object
      title: ProductSchema
      description: Schema for a product or a bundle of products.
    ProductSource:
      type: string
      enum:
        - dynamic
        - manual
      title: ProductSource
      description: Source of the products.
    ProductTranslationSchema:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
      type: object
      title: ProductTranslationSchema
      description: Schema for a product translation.
    ProductTypeEnum:
      type: string
      enum:
        - product
        - bundle
      title: ProductTypeEnum
      description: Product Type.
    PromotionType:
      type: string
      enum:
        - product
        - basic
        - banner
      title: PromotionType
      description: Type of the Campaign to store.
    ProxiedThirdParty:
      type: string
      enum:
        - brevo
        - klaviyo
        - shopify
        - shopware
      title: ProxiedThirdParty
      description: Supported third-party services for proxy requests.
    ProxyHttpMethod:
      type: string
      enum:
        - GET
        - POST
        - PUT
        - PATCH
        - DELETE
      title: ProxyHttpMethod
      description: Supported HTTP methods for proxy requests.
    ProxyRequest:
      properties:
        target_url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Target Url
        method:
          $ref: '#/components/schemas/ProxyHttpMethod'
        headers:
          additionalProperties:
            type: string
          type: object
          nullable: true
          title: Headers
        query_params:
          additionalProperties: true
          type: object
          nullable: true
          title: Query Params
        body:
          additionalProperties: true
          type: object
          nullable: true
          title: Body
        timeout:
          type: integer
          nullable: true
          title: Timeout
          default: 30
        proxy_url:
          type: string
          nullable: true
          title: Proxy Url
          description: Optional HTTP proxy URL (e.g., http://proxy.example.com:8080)
      type: object
      required:
        - target_url
        - method
      title: ProxyRequest
      description: Request model for third-party API proxy.
      example:
        body:
          attributes:
            FIRSTNAME: John
            LASTNAME: Doe
          email: test@example.com
        headers:
          Accept: application/json
          Content-Type: application/json
        method: POST
        proxy_url: http://proxy.example.com:8080
        target_url: https://api.brevo.com/v3/contacts
        timeout: 30
    ReviewsWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        variant:
          type: string
          enum:
            - trustpilot
            - fairing
          nullable: true
          title: Variant
          description: Review platform variant
        redirection_link:
          type: string
          nullable: true
          title: Redirection Link
          description: Link to redirect users for reviews
        redirection_email:
          type: string
          nullable: true
          title: Redirection Email
          description: Email for review collection
      type: object
      title: ReviewsWidgetDTO
      description: Configuration for the reviews widget.
    SegmentSettingsDTO:
      properties:
        klaviyo:
          type: boolean
          title: Klaviyo
          description: Klaviyo segment retrieval status
          examples:
            - true
        shopify:
          type: boolean
          title: Shopify
          description: Shopify segment retrieval status
          default: true
        emarsys:
          type: boolean
          title: Emarsys
          description: Emarsys segment retrieval status
          examples:
            - true
        brevo:
          type: boolean
          title: Brevo
          description: Brevo segment retrieval status
          examples:
            - true
        inxmail:
          type: boolean
          title: Inxmail
          description: Inxmail segment retrieval status
          examples:
            - true
        braze:
          type: boolean
          title: Braze
          description: Braze segment retrieval status
          examples:
            - true
        hubspot:
          type: boolean
          title: Hubspot
          description: HubSpot segment retrieval status
          examples:
            - true
      type: object
      required:
        - klaviyo
        - emarsys
        - brevo
        - inxmail
        - braze
        - hubspot
      title: SegmentSettingsDTO
      description: The segment settings object to be exchanged with the HTTP clients.
    SegmentSettingsUpdateDTO:
      properties:
        klaviyo:
          type: boolean
          nullable: true
          title: Klaviyo
          description: Toggle Klaviyo segment retrieval
          examples:
            - true
        emarsys:
          type: boolean
          nullable: true
          title: Emarsys
          description: Toggle Emarsys segment retrieval
          examples:
            - true
        brevo:
          type: boolean
          nullable: true
          title: Brevo
          description: Toggle Brevo segment retrieval
          examples:
            - true
        inxmail:
          type: boolean
          nullable: true
          title: Inxmail
          description: Toggle Inxmail segment retrieval
          examples:
            - true
        braze:
          type: boolean
          nullable: true
          title: Braze
          description: Toggle Braze segment retrieval
          examples:
            - true
        hubspot:
          type: boolean
          nullable: true
          title: Hubspot
          description: Toggle HubSpot segment retrieval
          examples:
            - true
      type: object
      title: SegmentSettingsUpdateDTO
      description: >-
        The trigger settings update object to be exchanged with the HTTP
        clients.
    SelectedItemSchema:
      properties:
        sku:
          type: string
          nullable: true
          title: Sku
          description: SKU of the product item
          examples:
            - PROD-001
            - ABC-XL-BLK
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
          examples:
            - Wireless Mouse
            - Coffee Beans 1kg
            - null
        quantity:
          type: integer
          title: Quantity
          description: Quantity of the product item
          examples:
            - 1
            - 2
            - 5
        net_price:
          type: number
          nullable: true
          title: Net Price
          description: Price of the product without a discount and taxes applied
          examples:
            - 29.99
            - 15.5
            - 99
            - null
        image_urls:
          items:
            type: string
          type: array
          title: Image Urls
          description: List of image URLs of the product
          default: []
          examples:
            - - https://cdn.shop.com/products/damaged-item-1.jpg
              - https://cdn.shop.com/products/damaged-item-2.jpg
            - []
      type: object
      required:
        - quantity
      title: SelectedItemSchema
      description: The Selected product item data.
    SettingStatus:
      type: string
      enum:
        - disabled
        - live
        - testing
      title: SettingStatus
      description: Status enum.
    ShipmentAction:
      type: string
      enum:
        - submit_to_aggregators
        - reprocess_events
        - fetch_hc_shipment_updates
        - send_internal_triggers
      title: ShipmentAction
      description: The actions to be taken on a shipment.
    ShipmentActionRequestDTO:
      properties:
        shipment_uuid:
          type: string
          format: uuid
          title: Shipment Uuid
          description: Shipment UUID to be processed
          examples:
            - abcde6277-4060-4b4b-b5cf-439511252d66
        action:
          $ref: '#/components/schemas/ShipmentAction'
          description: The action to be taken on the shipment
          examples:
            - reprocess_events
        payload:
          additionalProperties: true
          type: object
          title: Payload
          description: The payload to be sent with the action
          default: {}
      type: object
      required:
        - shipment_uuid
        - action
      title: ShipmentActionRequestDTO
      description: Representation of an action to be taken on a shipment.
    ShipmentAddEventRequestDTO:
      properties:
        event_name:
          type: string
          title: Event Name
          description: >-
            The event to be added to the shipment. See [Shipment
            Events](https://docs.gokarla.io/platform/features/events) for more
            details.<br><details><summary>Must be one of</summary>-
            `ACCEPTED_BY_DESTINATION_OFFICE`<br>-
            `ACCEPTED_BY_ORIGIN_OFFICE`<br>-
            `ARRIVAL_AT_FINAL_DELIVERY_CENTER`<br>-
            `ARRIVAL_AT_TRANSPORT_HUB`<br>-
            `ARRIVAL_IN_DESTINATION_COUNTRY`<br>-
            `ARRIVED_AT_COMMUNITY_BOX`<br>- `ARRIVED_AT_PARCEL_LOCKER`<br>-
            `ARRIVED_AT_PARCEL_SHOP`<br>- `ARRIVED_AT_PICKUP_POINT`<br>-
            `ARRIVED_AT_POST_OFFICE`<br>- `ARRIVED_AT_SORTING_CENTER`<br>-
            `ASSIGNED_TO_TRANSPORT`<br>- `ATTEMPTED_DELIVERY_UNDELIVERABLE`<br>-
            `AT_SORTING_CENTER`<br>- `AT_TRANSPORT_HUB`<br>-
            `CARRIER_UNKNOWN`<br>- `COMPLETION_OF_CUSTOMS_PROCESSING`<br>-
            `COMPLETION_OF_EXPORT_PROCESSING`<br>- `CUSTOMS_PROCESSING`<br>-
            `DELAY_EXPECTED`<br>- `DELAY_IN_TRANSPORT`<br>-
            `DELAY_IN_TRANSPORT_MISROUTED_SHIPMENT`<br>-
            `DELAY_IN_TRANSPORT_OFFLOADED_SHIPMENT`<br>-
            `DELIVERY_ATTEMPTED`<br>- `DELIVERY_ATTEMPTED_ADDRESSEE_MOVED`<br>-
            `DELIVERY_ATTEMPTED_ADDRESSEE_NOT_KNOWN_AT_ADDRESS`<br>-
            `DELIVERY_ATTEMPTED_ADDRESS_COULD_NOT_BE_FOUND`<br>-
            `DELIVERY_ATTEMPTED_CASH_ON_DELIVERY_AMOUNT_NOT_READY`<br>-
            `DELIVERY_ATTEMPTED_FAILED_WILL_TRY_AGAIN`<br>-
            `DELIVERY_ATTEMPTED_FORWARDING_TO_PICKUP_LOCATION`<br>-
            `DELIVERY_ATTEMPTED_LAST_ATTEMPT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME_CARD_LEFT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_VERIFICATION_UNSUCCESSFUL`<br>-
            `DELIVERY_ATTEMPTED_REJECTED_BY_ADDRESSEE`<br>-
            `DELIVERY_FAILED_SHIPMENT_DESTROYED`<br>- `DELIVERY_LAPSED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_LOCKER`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_SHOP`<br>-
            `DELIVERY_OPTION_ALTERNATE_TIME_REQUESTED`<br>-
            `DELIVERY_OPTION_REQUESTED_BY_RECEIVER`<br>-
            `DELIVERY_SCHEDULED_IN_THE_FINAL_DELIVERY_DEPOT`<br>-
            `DEPARTURE_FROM_TRANSPORT_HUB`<br>-
            `DISPATCHED_FROM_DELIVERY_CENTER`<br>-
            `DISPATCHED_FROM_FORWARDING_DEPOT`<br>-
            `DISPATCHED_FROM_SORTING_CENTER`<br>-
            `DISPATCHING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `ENCODING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ERROR_IN_PARCEL_DATA_SUBMISSION`<br>-
            `ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `EXPORT_PROCESSING`<br>-
            `FAILED_TO_HAND_OVER_TO_DELIVERY_PARTNER`<br>-
            `HANDED_OVER_TO_DELIVERY_PARTNER`<br>- `HELD_AT_CUSTOMS`<br>-
            `HELD_AT_CUSTOMS_FOR_ADDITIONAL_PAYMENT`<br>-
            `HELD_AT_CUSTOMS_FOR_CLARIFICATIONS`<br>-
            `HELD_AT_EXPORT_PROCESSING`<br>- `INBOUND_FLIGHT_ARRIVED`<br>-
            `INBOUND_TRUCK_ARRIVED`<br>- `IN_DELIVERY`<br>-
            `ISSUES_IN_PROCESSING_BY_CUSTOMS_AUTHORITIES`<br>-
            `MISSING_SHIPMENT_INFORMATION`<br>-
            `MORE_INFO_ON_CARRIER_WEBSITE`<br>-
            `NOTIFICATION_SENT_TO_RECIPIENT`<br>-
            `NO_DELIVERY_ATTEMPT_ON_ROUTE`<br>- `ORDER_CANCELLED`<br>-
            `ORDER_CREATED`<br>- `ORDER_DELAYED`<br>- `ORDER_IN_PROCESSING`<br>-
            `ORDER_PROCESSED`<br>- `OUTBOUND_FLIGHT_DEPARTED`<br>-
            `OUTBOUND_TRUCK_DEPARTED`<br>- `OUT_FOR_DELIVERY`<br>-
            `PACKAGE_REROUTING_CANCELED_ROUTE_TO_HOME`<br>-
            `PARCEL_COLLECTED_FROM_DROP_OFF_LOCATION`<br>-
            `PARCEL_DATA_SUBMISSION_DELAYED`<br>-
            `PARCEL_DATA_SUBMITTED_TO_CARRIER`<br>- `PARCEL_DISPATCHED`<br>-
            `PARCEL_DROPPED_OFF_AT_PARCEL_LOCKER`<br>-
            `PARCEL_DROPPED_OFF_AT_POST_OFFICE`<br>-
            `PARCEL_DROPPED_OFF_IN_PARCEL_SHOP`<br>-
            `PARCEL_DROPPED_OFF_OVER_THE_COUNTER`<br>-
            `PARCEL_DROPPED_OFF_WITH_CARRIER`<br>-
            `PARCEL_READY_FOR_PICKUP`<br>-
            `PARCEL_TRANSFERRED_TO_THIRD_PARTY`<br>- `PATCHED`<br>-
            `PICKUP_ATTEMPTED`<br>- `PICKUP_DELAYED`<br>- `PICKUP_FAILED`<br>-
            `PICKUP_SUCCESSFUL`<br>- `PROCEEDING_TO_CARRIER_FACILITY`<br>-
            `PROCESSED_AT_DELIVERY_CENTER`<br>-
            `PROCESSING_AT_TRANSPORT_HUB`<br>-
            `RECEIPT_AT_FORWARDING_DEPOT`<br>- `RETURNED_TO_DELIVERY_DEPOT`<br>-
            `RETURN_IN_PROGRESS`<br>- `RETURN_TO_ORIGIN_COUNTRY_CANCELLED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_COMPLETED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_FAILED`<br>-
            `RETURN_TO_SENDER_COMPLETED`<br>- `RETURN_TO_SENDER_FAILED`<br>-
            `RETURN_TO_SENDER_FAILED_RECIPIENT_VERIFICATION`<br>-
            `SCANNED_AT_PROCESSING_CENTER`<br>-
            `SHIPMENT_AT_FINAL_DELIVERY_CENTER`<br>- `SHIPMENT_CANCELLED`<br>-
            `SHIPMENT_DAMAGED`<br>-
            `SHIPMENT_DELAYED_DUE_TO_CUSTOMER_REQUEST`<br>-
            `SHIPMENT_EN_ROUTE`<br>-
            `SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER`<br>-
            `SHIPMENT_LOST`<br>- `SHIPMENT_LOST_IN_DELIVERY`<br>-
            `SHIPMENT_LOST_IN_PROCESSING`<br>-
            `SHIPMENT_LOST_IN_SORTING_CENTER`<br>-
            `SHIPMENT_LOST_IN_TRANSIT`<br>- `SHIPMENT_LOST_IN_TRANSPORT`<br>-
            `SHIPMENT_LOST_UNKNOWN_REASON`<br>- `SHIPMENT_MISROUTED`<br>-
            `SHIPMENT_NEVER_ARRIVED`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_ON_HOLD_IN_DELIVERY_CENTER`<br>-
            `SHIPMENT_ON_ITS_WAY_TO_PICKUP_LOCATION`<br>-
            `SHIPMENT_REJECTED_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_SUCCESSFULLY_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_UPDATED_ETA`<br>- `SHIPMENT_UPDATED_PICKUP`<br>-
            `SORTING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `SORTING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `SORTING_STARTED_AT_PROCESSING_CENTER`<br>-
            `START_OF_CUSTOMS_PROCESSING`<br>- `START_OF_EXPORT_PROCESSING`<br>-
            `SUCCESSFULLY_COLLECTED`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_LOCKER`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_SHOP`<br>-
            `SUCCESSFULLY_COLLECTED_AT_POST_OFFICE`<br>-
            `SUCCESSFULLY_DELIVERED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_CASH_ON_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_DOOR`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_LETTER_BOX`<br>-
            `SUCCESSFULLY_DELIVERED_AND_PROOF_OF_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_TO_NEIGHBOR`<br>-
            `SUCCESSFULLY_DELIVERED_TO_THE_COMMUNITY_MAILBOX`<br>-
            `TRANSPORT_ARRIVED`<br>- `TRANSPORT_DEPARTED`<br>-
            `USER_SUCCESSFULLY_DELIVERED`<br></details>
          examples:
            - ORDER_CREATED
        event_time:
          type: string
          format: date-time
          nullable: true
          title: Event Time
          description: >-
            The event time to be added to the shipment (defaults to current time
            if not given)
          examples:
            - '2021-09-01T00:00:00Z'
        external_id:
          type: string
          nullable: true
          title: External Id
          description: The external ID of the event.
          examples:
            - '123456'
        id:
          type: string
          title: Id
          description: >-
            Reference of the shipment where you want to add the event. Supports
            order_number and external_order_id lookups (requires single shipment
            per order). Returns an error if multiple shipments exist — use
            shipment_uuid or tracking_number instead.
          examples:
            - '11334422'
        id_type:
          $ref: '#/components/schemas/ShipmentReferenceType'
          description: Type of shipment identifier that is passed in the reference field
          default: tracking_number
      type: object
      required:
        - event_name
        - id
      title: ShipmentAddEventRequestDTO
      description: |-
        Representation of an event to be added to a shipment.

        See [Shipment Events](https://docs.gokarla.io/platform/features/events)
        for more information about events.
    ShipmentAggregatorSubmission:
      properties:
        shipment_uuid:
          type: string
          title: Shipment Uuid
        aggregator_id:
          type: string
          nullable: true
          title: Aggregator Id
      type: object
      required:
        - shipment_uuid
      title: ShipmentAggregatorSubmission
      description: Schema for submitting a shipment to aggregators.
    ShipmentDirectionEnum:
      type: string
      enum:
        - merchant_customer
        - customer_merchant
        - customer_partner
        - partner_customer
      title: ShipmentDirectionEnum
      description: >-
        Shipment Direction - indicates the flow of the shipment.


        MERCHANT_CUSTOMER: Standard outbound delivery from merchant to customer.

        CUSTOMER_MERCHANT: Customer return shipment from customer to merchant.

        CUSTOMER_PARTNER: Customer sends to a partner (lab, service center,
        etc.).

        PARTNER_CUSTOMER: Partner sends back to customer.
    ShipmentEventBaseDTO:
      properties:
        event_name:
          type: string
          title: Event Name
          description: >-
            The event to be added to the shipment. See [Shipment
            Events](https://docs.gokarla.io/platform/features/events) for more
            details.<br><details><summary>Must be one of</summary>-
            `ACCEPTED_BY_DESTINATION_OFFICE`<br>-
            `ACCEPTED_BY_ORIGIN_OFFICE`<br>-
            `ARRIVAL_AT_FINAL_DELIVERY_CENTER`<br>-
            `ARRIVAL_AT_TRANSPORT_HUB`<br>-
            `ARRIVAL_IN_DESTINATION_COUNTRY`<br>-
            `ARRIVED_AT_COMMUNITY_BOX`<br>- `ARRIVED_AT_PARCEL_LOCKER`<br>-
            `ARRIVED_AT_PARCEL_SHOP`<br>- `ARRIVED_AT_PICKUP_POINT`<br>-
            `ARRIVED_AT_POST_OFFICE`<br>- `ARRIVED_AT_SORTING_CENTER`<br>-
            `ASSIGNED_TO_TRANSPORT`<br>- `ATTEMPTED_DELIVERY_UNDELIVERABLE`<br>-
            `AT_SORTING_CENTER`<br>- `AT_TRANSPORT_HUB`<br>-
            `CARRIER_UNKNOWN`<br>- `COMPLETION_OF_CUSTOMS_PROCESSING`<br>-
            `COMPLETION_OF_EXPORT_PROCESSING`<br>- `CUSTOMS_PROCESSING`<br>-
            `DELAY_EXPECTED`<br>- `DELAY_IN_TRANSPORT`<br>-
            `DELAY_IN_TRANSPORT_MISROUTED_SHIPMENT`<br>-
            `DELAY_IN_TRANSPORT_OFFLOADED_SHIPMENT`<br>-
            `DELIVERY_ATTEMPTED`<br>- `DELIVERY_ATTEMPTED_ADDRESSEE_MOVED`<br>-
            `DELIVERY_ATTEMPTED_ADDRESSEE_NOT_KNOWN_AT_ADDRESS`<br>-
            `DELIVERY_ATTEMPTED_ADDRESS_COULD_NOT_BE_FOUND`<br>-
            `DELIVERY_ATTEMPTED_CASH_ON_DELIVERY_AMOUNT_NOT_READY`<br>-
            `DELIVERY_ATTEMPTED_FAILED_WILL_TRY_AGAIN`<br>-
            `DELIVERY_ATTEMPTED_FORWARDING_TO_PICKUP_LOCATION`<br>-
            `DELIVERY_ATTEMPTED_LAST_ATTEMPT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME_CARD_LEFT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_VERIFICATION_UNSUCCESSFUL`<br>-
            `DELIVERY_ATTEMPTED_REJECTED_BY_ADDRESSEE`<br>-
            `DELIVERY_FAILED_SHIPMENT_DESTROYED`<br>- `DELIVERY_LAPSED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_LOCKER`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_SHOP`<br>-
            `DELIVERY_OPTION_ALTERNATE_TIME_REQUESTED`<br>-
            `DELIVERY_OPTION_REQUESTED_BY_RECEIVER`<br>-
            `DELIVERY_SCHEDULED_IN_THE_FINAL_DELIVERY_DEPOT`<br>-
            `DEPARTURE_FROM_TRANSPORT_HUB`<br>-
            `DISPATCHED_FROM_DELIVERY_CENTER`<br>-
            `DISPATCHED_FROM_FORWARDING_DEPOT`<br>-
            `DISPATCHED_FROM_SORTING_CENTER`<br>-
            `DISPATCHING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `ENCODING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ERROR_IN_PARCEL_DATA_SUBMISSION`<br>-
            `ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `EXPORT_PROCESSING`<br>-
            `FAILED_TO_HAND_OVER_TO_DELIVERY_PARTNER`<br>-
            `HANDED_OVER_TO_DELIVERY_PARTNER`<br>- `HELD_AT_CUSTOMS`<br>-
            `HELD_AT_CUSTOMS_FOR_ADDITIONAL_PAYMENT`<br>-
            `HELD_AT_CUSTOMS_FOR_CLARIFICATIONS`<br>-
            `HELD_AT_EXPORT_PROCESSING`<br>- `INBOUND_FLIGHT_ARRIVED`<br>-
            `INBOUND_TRUCK_ARRIVED`<br>- `IN_DELIVERY`<br>-
            `ISSUES_IN_PROCESSING_BY_CUSTOMS_AUTHORITIES`<br>-
            `MISSING_SHIPMENT_INFORMATION`<br>-
            `MORE_INFO_ON_CARRIER_WEBSITE`<br>-
            `NOTIFICATION_SENT_TO_RECIPIENT`<br>-
            `NO_DELIVERY_ATTEMPT_ON_ROUTE`<br>- `ORDER_CANCELLED`<br>-
            `ORDER_CREATED`<br>- `ORDER_DELAYED`<br>- `ORDER_IN_PROCESSING`<br>-
            `ORDER_PROCESSED`<br>- `OUTBOUND_FLIGHT_DEPARTED`<br>-
            `OUTBOUND_TRUCK_DEPARTED`<br>- `OUT_FOR_DELIVERY`<br>-
            `PACKAGE_REROUTING_CANCELED_ROUTE_TO_HOME`<br>-
            `PARCEL_COLLECTED_FROM_DROP_OFF_LOCATION`<br>-
            `PARCEL_DATA_SUBMISSION_DELAYED`<br>-
            `PARCEL_DATA_SUBMITTED_TO_CARRIER`<br>- `PARCEL_DISPATCHED`<br>-
            `PARCEL_DROPPED_OFF_AT_PARCEL_LOCKER`<br>-
            `PARCEL_DROPPED_OFF_AT_POST_OFFICE`<br>-
            `PARCEL_DROPPED_OFF_IN_PARCEL_SHOP`<br>-
            `PARCEL_DROPPED_OFF_OVER_THE_COUNTER`<br>-
            `PARCEL_DROPPED_OFF_WITH_CARRIER`<br>-
            `PARCEL_READY_FOR_PICKUP`<br>-
            `PARCEL_TRANSFERRED_TO_THIRD_PARTY`<br>- `PATCHED`<br>-
            `PICKUP_ATTEMPTED`<br>- `PICKUP_DELAYED`<br>- `PICKUP_FAILED`<br>-
            `PICKUP_SUCCESSFUL`<br>- `PROCEEDING_TO_CARRIER_FACILITY`<br>-
            `PROCESSED_AT_DELIVERY_CENTER`<br>-
            `PROCESSING_AT_TRANSPORT_HUB`<br>-
            `RECEIPT_AT_FORWARDING_DEPOT`<br>- `RETURNED_TO_DELIVERY_DEPOT`<br>-
            `RETURN_IN_PROGRESS`<br>- `RETURN_TO_ORIGIN_COUNTRY_CANCELLED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_COMPLETED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_FAILED`<br>-
            `RETURN_TO_SENDER_COMPLETED`<br>- `RETURN_TO_SENDER_FAILED`<br>-
            `RETURN_TO_SENDER_FAILED_RECIPIENT_VERIFICATION`<br>-
            `SCANNED_AT_PROCESSING_CENTER`<br>-
            `SHIPMENT_AT_FINAL_DELIVERY_CENTER`<br>- `SHIPMENT_CANCELLED`<br>-
            `SHIPMENT_DAMAGED`<br>-
            `SHIPMENT_DELAYED_DUE_TO_CUSTOMER_REQUEST`<br>-
            `SHIPMENT_EN_ROUTE`<br>-
            `SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER`<br>-
            `SHIPMENT_LOST`<br>- `SHIPMENT_LOST_IN_DELIVERY`<br>-
            `SHIPMENT_LOST_IN_PROCESSING`<br>-
            `SHIPMENT_LOST_IN_SORTING_CENTER`<br>-
            `SHIPMENT_LOST_IN_TRANSIT`<br>- `SHIPMENT_LOST_IN_TRANSPORT`<br>-
            `SHIPMENT_LOST_UNKNOWN_REASON`<br>- `SHIPMENT_MISROUTED`<br>-
            `SHIPMENT_NEVER_ARRIVED`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_ON_HOLD_IN_DELIVERY_CENTER`<br>-
            `SHIPMENT_ON_ITS_WAY_TO_PICKUP_LOCATION`<br>-
            `SHIPMENT_REJECTED_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_SUCCESSFULLY_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_UPDATED_ETA`<br>- `SHIPMENT_UPDATED_PICKUP`<br>-
            `SORTING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `SORTING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `SORTING_STARTED_AT_PROCESSING_CENTER`<br>-
            `START_OF_CUSTOMS_PROCESSING`<br>- `START_OF_EXPORT_PROCESSING`<br>-
            `SUCCESSFULLY_COLLECTED`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_LOCKER`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_SHOP`<br>-
            `SUCCESSFULLY_COLLECTED_AT_POST_OFFICE`<br>-
            `SUCCESSFULLY_DELIVERED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_CASH_ON_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_DOOR`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_LETTER_BOX`<br>-
            `SUCCESSFULLY_DELIVERED_AND_PROOF_OF_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_TO_NEIGHBOR`<br>-
            `SUCCESSFULLY_DELIVERED_TO_THE_COMMUNITY_MAILBOX`<br>-
            `TRANSPORT_ARRIVED`<br>- `TRANSPORT_DEPARTED`<br>-
            `USER_SUCCESSFULLY_DELIVERED`<br></details>
          examples:
            - ORDER_CREATED
        event_time:
          type: string
          format: date-time
          nullable: true
          title: Event Time
          description: >-
            The event time to be added to the shipment (defaults to current time
            if not given)
          examples:
            - '2021-09-01T00:00:00Z'
        external_id:
          type: string
          nullable: true
          title: External Id
          description: The external ID of the event.
          examples:
            - '123456'
      type: object
      required:
        - event_name
      title: ShipmentEventBaseDTO
      description: Base representation of an event to be added to a shipment.
    ShipmentGroupKey:
      type: string
      enum:
        - shipment_id
        - tracking_number
        - external_shipment_id
      title: ShipmentGroupKey
      description: Enum for the shipment group key.
    ShipmentReferenceType:
      type: string
      enum:
        - external_order_id
        - external_shipment_id
        - order_number
        - order_uuid
        - shipment_uuid
        - tracking_number
      title: ShipmentReferenceType
      description: Enum for shipment reference types.
    ShipmentResponseDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shipment UUID
        order_id:
          type: string
          format: uuid
          nullable: true
          title: Order Id
          description: Parent Order UUID
        external_shipment_id:
          type: string
          nullable: true
          title: External Shipment Id
          description: External shipment ID
        tracking_number:
          type: string
          nullable: true
          title: Tracking Number
          description: Carrier tracking number
        carrier_reference:
          type: string
          nullable: true
          title: Carrier Reference
          description: Carrier reference code
        tracking_url:
          type: string
          nullable: true
          title: Tracking Url
          description: Carrier tracking URL
        phase:
          $ref: '#/components/schemas/PhaseEnum'
          description: Shipment phase
        flag:
          $ref: '#/components/schemas/FlagEnum'
          nullable: true
          description: Shipment flag (normal, delay, error)
        current_event_key:
          type: string
          nullable: true
          title: Current Event Key
          description: Current event key
        zip_code:
          type: string
          nullable: true
          title: Zip Code
          description: Destination zip code
        email_id:
          type: string
          nullable: true
          title: Email Id
          description: Customer email
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Shipment creation timestamp
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Last update timestamp
        events:
          items:
            $ref: '#/components/schemas/TrackingEventDTO-Input'
          type: array
          title: Events
          description: >-
            Shipment tracking events. See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
            for more details.
          default: []
      type: object
      required:
        - uuid
        - phase
      title: ShipmentResponseDTO
      description: Response DTO for shipment search results.
    ShipmentResponseDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shipment UUID
        order_id:
          type: string
          format: uuid
          nullable: true
          title: Order Id
          description: Parent Order UUID
        external_shipment_id:
          type: string
          nullable: true
          title: External Shipment Id
          description: External shipment ID
        tracking_number:
          type: string
          nullable: true
          title: Tracking Number
          description: Carrier tracking number
        carrier_reference:
          type: string
          nullable: true
          title: Carrier Reference
          description: Carrier reference code
        tracking_url:
          type: string
          nullable: true
          title: Tracking Url
          description: Carrier tracking URL
        phase:
          $ref: '#/components/schemas/PhaseEnum'
          description: Shipment phase
        flag:
          $ref: '#/components/schemas/FlagEnum'
          nullable: true
          description: Shipment flag (normal, delay, error)
        current_event_key:
          type: string
          nullable: true
          title: Current Event Key
          description: Current event key
        zip_code:
          type: string
          nullable: true
          title: Zip Code
          description: Destination zip code
        email_id:
          type: string
          nullable: true
          title: Email Id
          description: Customer email
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Shipment creation timestamp
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Last update timestamp
        events:
          items:
            $ref: '#/components/schemas/TrackingEventDTO-Output'
          type: array
          title: Events
          description: >-
            Shipment tracking events. See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
            for more details.
          default: []
      type: object
      required:
        - uuid
        - phase
      title: ShipmentResponseDTO
      description: Response DTO for shipment search results.
    ShipmentsPaginatedResponse:
      properties:
        shipments:
          items:
            $ref: '#/components/schemas/ShipmentResponseDTO-Output'
          type: array
          title: Shipments
          description: List of shipments
        pagination:
          $ref: '#/components/schemas/PaginationInfo-Output'
          description: Pagination metadata
      type: object
      required:
        - shipments
        - pagination
      title: ShipmentsPaginatedResponse
      description: |-
        Paginated response for shipments search.

        Follows Shopify-style naming convention with resource name as the key.
    ShopApiKeyCreatedDTO-Input:
      properties:
        id:
          type: string
          title: Id
          description: Unique token identifier
        secret:
          type: string
          title: Secret
          description: Plaintext API key (shown only once)
        username:
          type: string
          title: Username
          description: The username holding the key
        shops:
          items:
            $ref: '#/components/schemas/ShopRole'
          type: array
          title: Shops
          description: Shops the token has access to
        expiration:
          type: integer
          title: Expiration
          description: Expiration time in Unix epoch (0 = never)
      type: object
      required:
        - id
        - secret
        - username
        - shops
        - expiration
      title: ShopApiKeyCreatedDTO
      description: >-
        Response after creating a new API key (plaintext secret, one-time
        display).
    ShopApiKeyCreatedDTO-Output:
      properties:
        id:
          type: string
          title: Id
          description: Unique token identifier
        secret:
          type: string
          title: Secret
          description: Plaintext API key (shown only once)
        username:
          type: string
          title: Username
          description: The username holding the key
        shops:
          items:
            $ref: '#/components/schemas/ShopRole'
          type: array
          title: Shops
          description: Shops the token has access to
        expiration:
          type: integer
          title: Expiration
          description: Expiration time in Unix epoch (0 = never)
      type: object
      required:
        - id
        - secret
        - username
        - shops
        - expiration
      title: ShopApiKeyCreatedDTO
      description: >-
        Response after creating a new API key (plaintext secret, one-time
        display).
    ShopApiKeyCreationDTO:
      properties:
        role:
          $ref: '#/components/schemas/ShopRoleEnum'
          description: The role for the new API key
          default: admin
        expiration:
          type: integer
          minimum: 0
          title: Expiration
          description: Expiration time in Unix epoch (0 = never expires)
          default: 0
      type: object
      title: ShopApiKeyCreationDTO
      description: Request body for creating a new API key scoped to a shop.
    ShopApiKeyDeletionDTO:
      properties:
        token_id:
          type: string
          maxLength: 16
          minLength: 1
          title: Token Id
          description: Unique token identifier
      type: object
      required:
        - token_id
      title: ShopApiKeyDeletionDTO
      description: Request body for deleting an API key by token ID.
    ShopApiKeysDTO-Input:
      properties:
        username:
          type: string
          title: Username
          description: The username holding the keys
        tokens:
          items:
            $ref: '#/components/schemas/ObfuscatedKarlaTokenDTO-Input'
          type: array
          title: Tokens
          description: Obfuscated tokens
      type: object
      required:
        - username
        - tokens
      title: ShopApiKeysDTO
      description: List of obfuscated API keys for a shop.
    ShopApiKeysDTO-Output:
      properties:
        username:
          type: string
          title: Username
          description: The username holding the keys
        tokens:
          items:
            $ref: '#/components/schemas/ObfuscatedKarlaTokenDTO-Output'
          type: array
          title: Tokens
          description: Obfuscated tokens
      type: object
      required:
        - username
        - tokens
      title: ShopApiKeysDTO
      description: List of obfuscated API keys for a shop.
    ShopBillingDTO:
      properties:
        subscription_tier:
          $ref: '#/components/schemas/SubscriptionTier'
          description: Subscription tier, derived from carrier settings
      type: object
      required:
        - subscription_tier
      title: ShopBillingDTO
      description: Billing information for a shop, exposed via a dedicated endpoint.
    ShopCreationDTO:
      properties:
        name:
          type: string
          title: Name
          description: Name to display
          examples:
            - Karla
        description:
          type: string
          nullable: true
          title: Description
          description: Shop description dependant on user language
          examples:
            - Karla Shop
        organization:
          type: string
          nullable: true
          title: Organization
          description: Organization the shop belongs to (premium only)
        language:
          $ref: '#/components/schemas/LanguageEnum'
          nullable: true
          description: Default language for the shop to fallback to in translations
          default: en
          examples:
            - en
        contact_email:
          type: string
          nullable: true
          title: Contact Email
          description: Shop contact email address
          examples:
            - support@example.com
        contact_phone:
          type: string
          nullable: true
          title: Contact Phone
          description: Shop contact phone number
          examples:
            - +49 123 456 7890
        industry:
          $ref: '#/components/schemas/ShopIndustry'
          nullable: true
          description: Shop industry category
        shop_provider:
          $ref: '#/components/schemas/ShopProvider'
          nullable: true
          description: Shop system provider
        shop_admin_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Admin Url
          description: URL for API calls to the shop
        shop_faq_url:
          type: string
          nullable: true
          title: Shop Faq Url
          description: URL for the FAQ page
        shop_service_url:
          type: string
          nullable: true
          title: Shop Service Url
          description: URL for the service page
        shop_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Url
          description: URL to the main shop
        logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Logo Url
          description: Merchant logo image URL
        slug:
          type: string
          title: Slug
          description: Slug to filter
          examples:
            - gokarla
        settings:
          $ref: '#/components/schemas/ShopCreationSettingsDTO'
          nullable: true
          description: Initial settings for the shop to create
          default:
            klaviyo_triggers_enabled: false
            shopify_triggers_enabled: false
            carriers_enabled: false
      type: object
      required:
        - name
        - slug
      title: ShopCreationDTO
      description: Payload for creation of a new merchant.
    ShopCreationSettingsDTO:
      properties:
        klaviyo_triggers_enabled:
          type: boolean
          nullable: true
          title: Klaviyo Triggers Enabled
          description: Will send klaviyo events for shipment updates
          default: false
        shopify_triggers_enabled:
          type: boolean
          nullable: true
          title: Shopify Triggers Enabled
          description: Will send shopify events for shipment updates
          default: false
        carriers_enabled:
          type: boolean
          nullable: true
          title: Carriers Enabled
          description: Will submit shipments to carriers for tracking
          default: false
      type: object
      title: ShopCreationSettingsDTO
      description: Payload for creation of a new merchant.
    ShopDTO:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shop UUID
          examples:
            - 0a1ba634-8850-4d2e-83fe-3c0b8d8e9e95
        name:
          type: string
          title: Name
          description: Shop Name
          examples:
            - Karla
        slug:
          type: string
          title: Slug
          description: Shop Slug
          examples:
            - gokarla
        organization:
          type: string
          nullable: true
          title: Organization
          description: Organization the shop belongs to
        language:
          $ref: '#/components/schemas/LanguageEnum'
          nullable: true
          description: Default language for the merchant text strings
          default: en
          examples:
            - en
        logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Logo Url
          description: Shop logo image URL
        shop_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Url
          description: Merchant Shop URL
      type: object
      required:
        - uuid
        - name
        - slug
      title: ShopDTO
      description: The Shop object to be exchanged with the HTTP clients (publicly).
    ShopDetailDTO:
      properties:
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Time in which the resource was created
          examples:
            - '2024-01-15T10:30:00Z'
            - '2023-12-01T08:00:00Z'
            - null
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Time in which the resource was last updated after creation
          examples:
            - '2024-01-16T14:45:00Z'
            - '2024-01-15T16:00:00Z'
            - null
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shop UUID
          examples:
            - 0a1ba634-8850-4d2e-83fe-3c0b8d8e9e95
        name:
          type: string
          nullable: true
          title: Name
          description: Name to display
          examples:
            - Karla
        slug:
          type: string
          title: Slug
          description: Shop Slug
          examples:
            - gokarla
        organization:
          type: string
          nullable: true
          title: Organization
          description: Organization the shop belongs to
        language:
          $ref: '#/components/schemas/LanguageEnum'
          nullable: true
          description: Default language for the shop to fallback to in translations
          default: en
          examples:
            - en
        logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Logo Url
          description: Merchant logo image URL
        shop_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Url
          description: URL to the main shop
        description:
          type: string
          nullable: true
          title: Description
          description: Shop description dependant on user language
          examples:
            - Karla Shop
        contact_email:
          type: string
          nullable: true
          title: Contact Email
          description: Shop contact email address
          examples:
            - support@example.com
        contact_phone:
          type: string
          nullable: true
          title: Contact Phone
          description: Shop contact phone number
          examples:
            - +49 123 456 7890
        industry:
          $ref: '#/components/schemas/ShopIndustry'
          nullable: true
          description: Shop industry category
        shop_provider:
          $ref: '#/components/schemas/ShopProvider'
          nullable: true
          description: Shop system provider
        shop_admin_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Admin Url
          description: URL for API calls to the shop
        shop_faq_url:
          type: string
          nullable: true
          title: Shop Faq Url
          description: URL for the FAQ page
        shop_service_url:
          type: string
          nullable: true
          title: Shop Service Url
          description: URL for the service page
        shop_currency:
          type: string
          nullable: true
          title: Shop Currency
          description: Shop currency in ISO 4217 format, e.g. 'EUR', 'USD'
      type: object
      required:
        - uuid
        - slug
      title: ShopDetailDTO
      description: Shop data that should not be exposed without authentication.
    ShopIndustry:
      type: string
      enum:
        - clothing_and_accessories
        - electronics
        - food_and_drink
        - health_and_beauty
        - home_and_garden
        - sports_and_recreation
        - jewelry_and_accessories
        - toys_and_games
        - pet_care
        - automotive
        - books_and_media
        - office_and_business
        - arts_and_crafts
        - baby_and_kids
        - other
      title: ShopIndustry
      description: Industry category for a shop, based on Shopify industry list.
    ShopKeysDTO:
      properties:
        brevo:
          type: string
          maxLength: 140
          minLength: 32
          nullable: true
          title: Brevo
          description: >-
            Key used for the Brevo integration (only last 6 characters will be
            visible)
          examples:
            - xsmtpsib-*******************************123
        klaviyo:
          type: string
          maxLength: 64
          minLength: 32
          nullable: true
          title: Klaviyo
          description: >-
            Key used for the Klaviyo integration (only last 3 characters will be
            visible)
          examples:
            - pk_*******************************123
        shopify:
          type: string
          maxLength: 64
          minLength: 32
          nullable: true
          title: Shopify
          description: >-
            Key used for the Shopify integration (only last 6 characters will be
            visible)
          examples:
            - shpua_****************************321
        shopware:
          $ref: '#/components/schemas/ClientIDAndSecretSchema'
          nullable: true
          description: >-
            Credentials used for the Shopware integration (only last 6
            characters of the secret will be visible)
        emarsys:
          $ref: '#/components/schemas/ClientIDAndSecretSchema'
          nullable: true
          description: >-
            Credentials used for the Emarsys integration (only last 6 characters
            of the secret will be visible)
        inxmail:
          $ref: '#/components/schemas/BasicAuthDTO'
          nullable: true
          description: >-
            Credentials used for the Inxmail integration (only last 6 characters
            of the password will be visible)
        hubspot:
          type: string
          maxLength: 64
          minLength: 32
          nullable: true
          title: Hubspot
          description: >-
            Key used for the HubSpot integration (only last 6 characters will be
            visible)
          examples:
            - pat-na1-*****************************123456
        braze:
          type: string
          maxLength: 64
          minLength: 32
          nullable: true
          title: Braze
          description: >-
            Key used for the Braze integration (only last 6 characters will be
            visible)
          examples:
            - a1b2c3d4-****-****-****-*******123456
      type: object
      title: ShopKeysDTO
      description: DTO for shop keys used for its different integrations.
    ShopProductDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shop product UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_provider:
          $ref: '#/components/schemas/ShopProvider'
          description: Shop provider
        product_id:
          type: string
          title: Product Id
          description: Product ID
        variant_id:
          type: string
          title: Variant Id
          description: Variant ID
        title:
          type: string
          title: Title
          description: Product title
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
        price:
          type: number
          nullable: true
          title: Price
          description: Variant price
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Variant image URL
        sku:
          type: string
          nullable: true
          title: Sku
          description: Variant SKU
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product URL
        translations:
          additionalProperties:
            $ref: '#/components/schemas/ShopProductTranslationSchema-Input'
          propertyNames:
            $ref: '#/components/schemas/LanguageEnum'
          type: object
          nullable: true
          title: Translations
          description: Translations by language code
      type: object
      required:
        - uuid
        - shop_slug
        - shop_provider
        - product_id
        - variant_id
        - title
      title: ShopProductDTO
      description: DTO for a shop product variant.
    ShopProductDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Shop product UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        shop_provider:
          $ref: '#/components/schemas/ShopProvider'
          description: Shop provider
        product_id:
          type: string
          title: Product Id
          description: Product ID
        variant_id:
          type: string
          title: Variant Id
          description: Variant ID
        title:
          type: string
          title: Title
          description: Product title
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
        price:
          type: number
          nullable: true
          title: Price
          description: Variant price
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Variant image URL
        sku:
          type: string
          nullable: true
          title: Sku
          description: Variant SKU
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product URL
        translations:
          additionalProperties:
            $ref: '#/components/schemas/ShopProductTranslationSchema-Output'
          propertyNames:
            $ref: '#/components/schemas/LanguageEnum'
          type: object
          nullable: true
          title: Translations
          description: Translations by language code
      type: object
      required:
        - uuid
        - shop_slug
        - shop_provider
        - product_id
        - variant_id
        - title
      title: ShopProductDTO
      description: DTO for a shop product variant.
    ShopProductTranslationSchema-Input:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Product title
      type: object
      title: ShopProductTranslationSchema
      description: Shop product translation schema.
    ShopProductTranslationSchema-Output:
      properties:
        title:
          title: Title
          description: Product title
      type: object
      title: ShopProductTranslationSchema
      description: Shop product translation schema.
    ShopProductUpsertRequestDTO:
      properties:
        title:
          type: string
          title: Title
          description: Product title
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
        price:
          type: number
          nullable: true
          title: Price
          description: Variant price
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Variant image URL
        sku:
          type: string
          nullable: true
          title: Sku
          description: Variant SKU
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product URL
        product_id:
          type: string
          title: Product Id
          description: Product ID from shop provider
        variant_id:
          type: string
          title: Variant Id
          description: Variant ID from shop provider
      type: object
      required:
        - title
        - product_id
        - variant_id
      title: ShopProductUpsertRequestDTO
      description: |-
        Request DTO for upserting a shop product variant via bulk operations.

        Extends ShopProductVariantUpdateDTO with IDs needed for
        bulk upsert operations where IDs must come from the request body.

        Backend-managed fields (uuid, shop_id, shop_slug, shop_provider)
        are set automatically by the service layer.
    ShopProductVariantUpdateDTO:
      properties:
        title:
          type: string
          title: Title
          description: Product title
        variant_title:
          type: string
          nullable: true
          title: Variant Title
          description: Variant title
        price:
          type: number
          nullable: true
          title: Price
          description: Variant price
        image_url:
          type: string
          nullable: true
          title: Image Url
          description: Variant image URL
        sku:
          type: string
          nullable: true
          title: Sku
          description: Variant SKU
        product_url:
          type: string
          nullable: true
          title: Product Url
          description: Product URL
      type: object
      required:
        - title
      title: ShopProductVariantUpdateDTO
      description: |-
        Base DTO for shop product variant data.

        Contains the fields that can be updated for a product variant.
        Does NOT include product_id and variant_id,
        as these are typically provided via URI parameters in RESTful APIs.
    ShopProvider:
      type: string
      enum:
        - shopware
        - shopify
        - woocommerce
        - api
      title: ShopProvider
      description: Enum for identifying the shop provider of a merchant.
    ShopRole:
      properties:
        shop_slug:
          type: string
          title: Shop Slug
          description: The shop slug - if the slug is an * then it means all shops
        role:
          $ref: '#/components/schemas/ShopRoleEnum'
          description: Scopes used to access the Karla API
      type: object
      required:
        - shop_slug
        - role
      title: ShopRole
      description: Shops that this token has access to.
    ShopRoleEnum:
      type: string
      enum:
        - admin
        - editor
        - viewer
      title: ShopRoleEnum
      description: The token permission scopes.
    ShopSettingsDTO-Input:
      properties:
        carriers:
          $ref: '#/components/schemas/CarrierSettingsDTO'
          description: Current carrier settings
        triggers:
          $ref: '#/components/schemas/TriggerSettingsDTO'
          description: Current trigger settings
        segments:
          $ref: '#/components/schemas/SegmentSettingsDTO'
          description: Current segment settings
        brand_palette:
          $ref: '#/components/schemas/BrandPaletteColors-Input'
          description: Brand palette colors (uses default values if not customized)
      type: object
      required:
        - carriers
        - triggers
        - segments
        - brand_palette
      title: ShopSettingsDTO
      description: |-
        The settings object to be exchanged with the HTTP clients.

        Contains all shop-level configuration settings including:
        - carriers: Shipment tracking aggregator settings
        - triggers: Third-party integration trigger settings
        - segments: Customer segmentation settings
        - brand_palette: Brand color scheme (returns defaults if not customized)
    ShopSettingsDTO-Output:
      properties:
        carriers:
          $ref: '#/components/schemas/CarrierSettingsDTO'
          description: Current carrier settings
        triggers:
          $ref: '#/components/schemas/TriggerSettingsDTO'
          description: Current trigger settings
        segments:
          $ref: '#/components/schemas/SegmentSettingsDTO'
          description: Current segment settings
        brand_palette:
          $ref: '#/components/schemas/BrandPaletteColors-Output'
          description: Brand palette colors (uses default values if not customized)
      type: object
      required:
        - carriers
        - triggers
        - segments
        - brand_palette
      title: ShopSettingsDTO
      description: |-
        The settings object to be exchanged with the HTTP clients.

        Contains all shop-level configuration settings including:
        - carriers: Shipment tracking aggregator settings
        - triggers: Third-party integration trigger settings
        - segments: Customer segmentation settings
        - brand_palette: Brand color scheme (returns defaults if not customized)
    ShopUpdateDTO:
      properties:
        name:
          type: string
          nullable: true
          title: Name
          description: Name to display
          examples:
            - Karla
        description:
          type: string
          nullable: true
          title: Description
          description: Shop description dependant on user language
          examples:
            - Karla Shop
        organization:
          type: string
          nullable: true
          title: Organization
          description: Organization the shop belongs to
        language:
          $ref: '#/components/schemas/LanguageEnum'
          nullable: true
          description: Default language for the shop to fallback to in translations
          default: en
          examples:
            - en
        contact_email:
          type: string
          nullable: true
          title: Contact Email
          description: Shop contact email address
          examples:
            - support@example.com
        contact_phone:
          type: string
          nullable: true
          title: Contact Phone
          description: Shop contact phone number
          examples:
            - +49 123 456 7890
        industry:
          $ref: '#/components/schemas/ShopIndustry'
          nullable: true
          description: Shop industry category
        shop_provider:
          $ref: '#/components/schemas/ShopProvider'
          nullable: true
          description: Shop system provider
        shop_admin_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Admin Url
          description: URL for API calls to the shop
        shop_faq_url:
          type: string
          nullable: true
          title: Shop Faq Url
          description: URL for the FAQ page
        shop_service_url:
          type: string
          nullable: true
          title: Shop Service Url
          description: URL for the service page
        shop_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Shop Url
          description: URL to the main shop
        logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Logo Url
          description: Merchant logo image URL
      type: object
      title: ShopUpdateDTO
      description: Payload for a partial or full update of a shop.
    ShopUpdateResult:
      properties:
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug that was updated
        success:
          type: boolean
          title: Success
          description: Whether the update was successful
        error:
          type: string
          nullable: true
          title: Error
          description: Error message if update failed
      type: object
      required:
        - shop_slug
        - success
      title: ShopUpdateResult
      description: Result of updating a single shop's carrier settings.
    ShopUserInviteDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: User email
          examples:
            - test@example.com
        role:
          $ref: '#/components/schemas/UserRole'
          description: Role for the shop
          examples:
            - viewer
        create_org_permission:
          type: boolean
          title: Create Org Permission
          description: >-
            Whether to create organization-level permissions. When False, only
            shop-specific permissions are created.
          default: false
      type: object
      required:
        - email
        - role
      title: ShopUserInviteDTO
      description: Shop user invite DTO.
    ShopifyRecommendationImageDTO:
      properties:
        id:
          type: integer
          title: Id
          description: Image ID
        src:
          type: string
          nullable: true
          title: Src
          description: Image URL
        alt:
          type: string
          nullable: true
          title: Alt
          description: Image alt text
        width:
          type: integer
          nullable: true
          title: Width
          description: Image width
        height:
          type: integer
          nullable: true
          title: Height
          description: Image height
      type: object
      required:
        - id
      title: ShopifyRecommendationImageDTO
      description: Shopify recommendation image DTO.
    ShopifyRecommendationProductDTO:
      properties:
        id:
          type: integer
          title: Id
          description: Product ID
        title:
          type: string
          title: Title
          description: Product title
        handle:
          type: string
          title: Handle
          description: Product handle
        price:
          type: integer
          title: Price
          description: Product price
        price_min:
          type: integer
          title: Price Min
          description: Minimum price
        price_max:
          type: integer
          title: Price Max
          description: Maximum price
        url:
          type: string
          title: Url
          description: Product URL
        featured_image:
          type: string
          nullable: true
          title: Featured Image
        variants:
          items:
            $ref: '#/components/schemas/ShopifyRecommendationVariantDTO'
          type: array
          title: Variants
          examples:
            - - available: true
                id: 12345678901
                price: 2999
                title: Default Title
              - available: true
                id: 12345678902
                price: 3499
                title: Large
            - []
        images:
          items:
            type: string
          type: array
          title: Images
        media:
          items:
            $ref: '#/components/schemas/ShopifyRecommendationImageDTO'
          type: array
          title: Media
          examples:
            - - alt: Product Image
                height: 800
                id: 9876543210
                src: https://cdn.shopify.com/s/files/1/products/product_image.jpg
                width: 800
            - []
      type: object
      required:
        - id
        - title
        - handle
        - price
        - price_min
        - price_max
        - url
      title: ShopifyRecommendationProductDTO
      description: Shopify recommendation product DTO.
    ShopifyRecommendationVariantDTO:
      properties:
        id:
          type: integer
          title: Id
          description: Variant ID
        title:
          type: string
          title: Title
          description: Variant title
        price:
          type: integer
          title: Price
          description: Variant price
        available:
          type: boolean
          title: Available
          description: Variant availability
      type: object
      required:
        - id
        - title
        - price
        - available
      title: ShopifyRecommendationVariantDTO
      description: Shopify recommendation variant DTO.
    ShopifyRecommendationsResponseDTO-Input:
      properties:
        products:
          items:
            $ref: '#/components/schemas/ShopifyRecommendationProductDTO'
          type: array
          title: Products
          examples:
            - - featured_image: https://cdn.shopify.com/s/files/1/products/coffee_beans.jpg
                handle: organic-coffee-beans
                id: 7234567890
                images:
                  - >-
                    https://cdn.shopify.com/s/files/1/products/coffee_beans_1.jpg
                  - >-
                    https://cdn.shopify.com/s/files/1/products/coffee_beans_2.jpg
                media: []
                price: 2999
                price_max: 3499
                price_min: 2999
                title: Organic Coffee Beans
                url: /products/organic-coffee-beans
                variants: []
              - featured_image: https://cdn.shopify.com/s/files/1/products/mug.jpg
                handle: coffee-mug
                id: 7234567891
                images:
                  - https://cdn.shopify.com/s/files/1/products/mug.jpg
                media: []
                price: 1599
                price_max: 1599
                price_min: 1599
                title: Coffee Mug
                url: /products/coffee-mug
                variants: []
            - []
      type: object
      title: ShopifyRecommendationsResponseDTO
      description: Shopify recommendations response DTO.
    ShopifyRecommendationsResponseDTO-Output:
      properties:
        products:
          items:
            $ref: '#/components/schemas/ShopifyRecommendationProductDTO'
          type: array
          title: Products
          examples:
            - - featured_image: https://cdn.shopify.com/s/files/1/products/coffee_beans.jpg
                handle: organic-coffee-beans
                id: 7234567890
                images:
                  - >-
                    https://cdn.shopify.com/s/files/1/products/coffee_beans_1.jpg
                  - >-
                    https://cdn.shopify.com/s/files/1/products/coffee_beans_2.jpg
                media: []
                price: 2999
                price_max: 3499
                price_min: 2999
                title: Organic Coffee Beans
                url: /products/organic-coffee-beans
                variants: []
              - featured_image: https://cdn.shopify.com/s/files/1/products/mug.jpg
                handle: coffee-mug
                id: 7234567891
                images:
                  - https://cdn.shopify.com/s/files/1/products/mug.jpg
                media: []
                price: 1599
                price_max: 1599
                price_min: 1599
                title: Coffee Mug
                url: /products/coffee-mug
                variants: []
            - []
      type: object
      title: ShopifyRecommendationsResponseDTO
      description: Shopify recommendations response DTO.
    ShopifySettingsV1-Input:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the shopify integration is enabled
          default: disabled
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          default: 48
      type: object
      title: ShopifySettingsV1
      description: >-
        Schema for a Shop.ShopifySetting object.


        Shopify only has status and stale_event_threshold - no triggers or
        segments.
    ShopifySettingsV1-Output:
      properties:
        status:
          description: Whether the shopify integration is enabled
        stale_event_threshold:
          title: Stale Event Threshold
          description: Stale event threshold in hours
      type: object
      title: ShopifySettingsV1
      description: >-
        Schema for a Shop.ShopifySetting object.


        Shopify only has status and stale_event_threshold - no triggers or
        segments.
    ShopifyTriggerSettingsDTO:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: Stale event threshold in hours
          examples:
            - 48
      type: object
      required:
        - status
        - stale_event_threshold
      title: ShopifyTriggerSettingsDTO
      description: |-
        Shopify-specific trigger settings for public API.

        Note: Shopify only supports status toggle and stale_event_threshold.
        Segments are always extracted from Shopify customer tags.
    ShopifyTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Integration enabled status
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
      type: object
      title: ShopifyTriggerSettingsUpdateDTO
      description: Shopify-specific trigger settings update for public API.
    ShopifyWebhookCreationDTO:
      properties:
        webhook_type:
          $ref: '#/components/schemas/ShopifyWebhookType'
          description: Webhook Type
      type: object
      required:
        - webhook_type
      title: ShopifyWebhookCreationDTO
      description: Shopify Webhook object creation request schema.
    ShopifyWebhookDTO:
      properties:
        webhook_type:
          $ref: '#/components/schemas/ShopifyWebhookType'
          description: Webhook Type
        created_at:
          type: string
          format: date-time
          nullable: true
          title: Created At
          description: Time in which the resource was created
          examples:
            - '2024-01-15T10:30:00Z'
            - '2023-12-01T08:00:00Z'
            - null
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Time in which the resource was last updated after creation
          examples:
            - '2024-01-16T14:45:00Z'
            - '2024-01-15T16:00:00Z'
            - null
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Webhook UUID
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug for the webhook
        name:
          type: string
          nullable: true
          title: Name
          description: Name of the webhook
        shopify_id:
          type: integer
          nullable: true
          title: Shopify Id
          description: Shopify Webhook ID
        topic:
          $ref: '#/components/schemas/ShopifyWebhookTopic'
          description: Webhook Topic
        hook_url:
          type: string
          title: Hook Url
          description: Webhook URL
        fields:
          items:
            type: string
          type: array
          nullable: true
          title: Fields
          description: Optional inclusive fields filter
      type: object
      required:
        - webhook_type
        - uuid
        - shop_slug
        - name
        - topic
        - hook_url
      title: ShopifyWebhookDTO
      description: Shopify Webhook object schema.
    ShopifyWebhookTopic:
      type: string
      enum:
        - orders/create
        - orders/fulfilled
        - orders/partially_fulfilled
        - orders/updated
        - fulfillments/update
        - orders/cancelled
        - orders/delete
        - products/create
        - products/update
        - products/delete
      title: ShopifyWebhookTopic
      description: |-
        Type of Shopify webhook topic.

        See https://shopify.dev/docs/api/webhooks?reference=toml#list-of-topics
    ShopifyWebhookType:
      type: string
      enum:
        - order-creation
        - order-fulfillment
        - order-partial-fulfillment
        - order-update
        - order-cancelled
        - order-deletion
        - order-fulfillment-update
        - product-creation
        - product-update
        - product-deletion
      title: ShopifyWebhookType
      description: The type of Shopify Webhooks supported (exposed by Karla via API).
    StepUserInput:
      properties:
        step_id:
          type: string
          title: Step Id
          description: Unique identifier for the step
          examples:
            - question
        user_input:
          $ref: '#/components/schemas/UserInput-Input'
          description: User input for the step
          examples:
            - input_type: selected_answer
              input_value: 'yes'
      type: object
      required:
        - step_id
        - user_input
      title: StepUserInput
      description: User input for a step in the claim process.
    SubscriptionTier:
      type: string
      enum:
        - free
        - enterprise
      title: SubscriptionTier
      description: Subscription tier for a shop, derived from carrier settings.
    SurveyWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        link:
          type: string
          nullable: true
          title: Link
          description: Survey link URL
      type: object
      title: SurveyWidgetDTO
      description: Configuration for the survey widget.
    TaxLineSchema:
      properties:
        currency:
          type: string
          nullable: true
          title: Currency
          description: Currency of the tax line
          examples:
            - EUR
            - USD
            - GBP
            - null
        price:
          type: number
          nullable: true
          title: Price
          description: Price of the tax line
          examples:
            - 5.7
            - 2.99
            - 15
            - null
        rate:
          type: number
          nullable: true
          title: Rate
          description: Rate of the tax line
          examples:
            - 0.19
            - 0.07
            - 0.21
            - null
        title:
          type: string
          nullable: true
          title: Title
          description: Title of the tax line
          examples:
            - VAT 19%
            - Reduced VAT 7%
            - Sales Tax
            - null
      type: object
      title: TaxLineSchema
      description: Schema for a tax line.
    ThresholdType:
      type: string
      enum:
        - latest_event_time
        - created_at
      title: ThresholdType
      description: Enum for the threshold type.
    TopApprovalDTO:
      properties:
        approved_by:
          type: string
          title: Approved By
          description: Email/username of the approver
        approval_count:
          type: integer
          title: Approval Count
          description: Number of mappings approved by this person this week
        latest_approval_at:
          type: string
          format: date-time
          title: Latest Approval At
          description: Timestamp of their most recent approval
      type: object
      required:
        - approved_by
        - approval_count
        - latest_approval_at
      title: TopApprovalDTO
      description: DTO for top approver.
    TopApprovalsResponseDTO:
      properties:
        top_approvals:
          items:
            $ref: '#/components/schemas/TopApprovalDTO'
          type: array
          title: Top Approvals
          description: List of top approvers this week
        total_count:
          type: integer
          title: Total Count
          description: Total number of results returned
        period_start:
          type: string
          format: date-time
          title: Period Start
          description: Start of the 7-day period (7 days ago)
        period_end:
          type: string
          format: date-time
          title: Period End
          description: End of the period (now)
      type: object
      required:
        - top_approvals
        - total_count
        - period_start
        - period_end
      title: TopApprovalsResponseDTO
      description: Response DTO for top approvers this week.
    TrackingCompanyInsightDTO:
      properties:
        tracking_company:
          type: string
          title: Tracking Company
          description: Tracking company name from Shopify
        shipment_count:
          type: integer
          title: Shipment Count
          description: Number of fulfillments
      type: object
      required:
        - tracking_company
        - shipment_count
      title: TrackingCompanyInsightDTO
      description: A tracking company with its shipment count.
    TrackingCompanyInsightsResponseDTO:
      properties:
        status:
          type: string
          title: Status
          description: processing, ready, or error
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
        months:
          type: integer
          title: Months
          description: Number of months of data analyzed
        oldest_order_date:
          type: string
          nullable: true
          title: Oldest Order Date
          description: Created-at of the oldest order in the result set
        newest_order_date:
          type: string
          nullable: true
          title: Newest Order Date
          description: Created-at of the newest order in the result set
        countries:
          items:
            $ref: '#/components/schemas/CountryInsightDTO'
          type: array
          title: Countries
          description: Destination countries with tracking company breakdown
        total_shipments:
          type: integer
          title: Total Shipments
          description: Total fulfillments in the analyzed period
          default: 0
      type: object
      required:
        - status
        - shop_slug
        - months
      title: TrackingCompanyInsightsResponseDTO
      description: Response DTO for shop tracking company and destination insights.
    TrackingDTO-Input:
      properties:
        uuid:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Uuid
          description: Shipment UUID
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Tracking last updated time
        events:
          items:
            $ref: '#/components/schemas/TrackingEventDTO-Input'
          type: array
          title: Events
          description: >-
            Shipment tracking events. See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
          examples:
            - - event_key: H10
                event_name: DELIVERED
                event_strings:
                  event_status: Yippee! Your parcel was successfully delivered.
                  header_headline: DELIVERED
                  header_subtitle: ''
                  header_title: Home
                  list_label: 'Delivered: 2024-01-15T11:20:27+00:00'
                language: en
                location:
                  city: Berlin
                  country: DE
                  zip: '10115'
                phase: delivered
                time: '2024-01-15T10:00:00+00:00'
                timezone: Europe/Berlin
              - event_key: C20
                event_name: DISPATCHED_FROM_ORIGIN
                event_strings:
                  event_status: Your parcel info was sent to DHL.
                  header_headline: DISPATCHED
                  header_subtitle: ''
                  header_title: DHL received your order
                  list_label: Dispatched
                language: en
                location:
                  city: Berlin
                  country: DE
                phase: order_processed
                time: '2024-01-16T08:30:00+00:00'
                timezone: Europe/Berlin
        estimated_arrival:
          $ref: '#/components/schemas/TrackingEstimatedArrivalDTO-Input'
          nullable: true
          description: Expected delivery time information for the given locale
          examples:
            - language: en
              time_prediction: Tomorrow
            - language: de
              time_prediction: Today
            - null
        carrier:
          $ref: '#/components/schemas/CarrierDTO'
          nullable: true
          description: Carrier data
        flag:
          $ref: '#/components/schemas/FlagEnum'
          description: Karla shipment flag
          default: normal
        pickup:
          $ref: '#/components/schemas/TrackingPickUpDTO-Input'
          nullable: true
          description: Pickup data
        products:
          items:
            $ref: '#/components/schemas/ProductSchema-Input'
          type: array
          title: Products
          description: List of shipment products
          default: []
        direction:
          $ref: '#/components/schemas/ShipmentDirectionEnum'
          description: >-
            Shipment direction: `merchant_customer` (outbound to customer),
            `customer_merchant` (return from customer), `customer_partner`
            (customer to partner), `partner_customer` (partner to customer)
          default: merchant_customer
          examples:
            - merchant_customer
            - customer_merchant
            - customer_partner
            - partner_customer
        is_return:
          type: boolean
          nullable: true
          title: Is Return
          description: Indicates whether this is a return shipment
          examples:
            - true
            - false
            - null
        id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Id
          description: Shipment UUID (DEPRECATED, use uuid instead)
        merchant_id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Merchant Id
          description: Merchant UUID (DEPRECATED)
        merchant_slug:
          type: string
          title: Merchant Slug
          description: Merchant slug identifier (DEPRECATED, use shop_slug instead)
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug identifier
        order_id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Order Id
          description: Order identifier within Karla
        order_number:
          type: string
          title: Order Number
          description: Order number communicated to the user by the Merchant
      type: object
      required:
        - uuid
        - events
        - id
        - merchant_id
        - merchant_slug
        - shop_slug
        - order_id
        - order_number
      title: TrackingDTO
      description: Tracking information with its relevant shipment events.
    TrackingDTO-Output:
      properties:
        uuid:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Uuid
          description: Shipment UUID
        updated_at:
          type: string
          nullable: true
          title: Updated At
          description: Tracking last updated time
        events:
          items:
            $ref: '#/components/schemas/TrackingEventDTO-Output'
          type: array
          title: Events
          description: >-
            Shipment tracking events. See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
          examples:
            - - event_key: H10
                event_name: DELIVERED
                event_strings:
                  event_status: Yippee! Your parcel was successfully delivered.
                  header_headline: DELIVERED
                  header_subtitle: ''
                  header_title: Home
                  list_label: 'Delivered: 2024-01-15T11:20:27+00:00'
                language: en
                location:
                  city: Berlin
                  country: DE
                  zip: '10115'
                phase: delivered
                time: '2024-01-15T10:00:00+00:00'
                timezone: Europe/Berlin
              - event_key: C20
                event_name: DISPATCHED_FROM_ORIGIN
                event_strings:
                  event_status: Your parcel info was sent to DHL.
                  header_headline: DISPATCHED
                  header_subtitle: ''
                  header_title: DHL received your order
                  list_label: Dispatched
                language: en
                location:
                  city: Berlin
                  country: DE
                phase: order_processed
                time: '2024-01-16T08:30:00+00:00'
                timezone: Europe/Berlin
        estimated_arrival:
          $ref: '#/components/schemas/TrackingEstimatedArrivalDTO-Output'
          nullable: true
          description: Expected delivery time information for the given locale
          examples:
            - language: en
              time_prediction: Tomorrow
            - language: de
              time_prediction: Today
            - null
        carrier:
          $ref: '#/components/schemas/CarrierDTO'
          nullable: true
          description: Carrier data
        flag:
          $ref: '#/components/schemas/FlagEnum'
          description: Karla shipment flag
          default: normal
        pickup:
          $ref: '#/components/schemas/TrackingPickUpDTO-Output'
          nullable: true
          description: Pickup data
        products:
          items:
            $ref: '#/components/schemas/ProductSchema-Output'
          type: array
          title: Products
          description: List of shipment products
          default: []
        direction:
          $ref: '#/components/schemas/ShipmentDirectionEnum'
          description: >-
            Shipment direction: `merchant_customer` (outbound to customer),
            `customer_merchant` (return from customer), `customer_partner`
            (customer to partner), `partner_customer` (partner to customer)
          default: merchant_customer
          examples:
            - merchant_customer
            - customer_merchant
            - customer_partner
            - partner_customer
        is_return:
          type: boolean
          nullable: true
          title: Is Return
          description: Indicates whether this is a return shipment
          examples:
            - true
            - false
            - null
        id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Id
          description: Shipment UUID (DEPRECATED, use uuid instead)
        merchant_id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Merchant Id
          description: Merchant UUID (DEPRECATED)
        merchant_slug:
          type: string
          title: Merchant Slug
          description: Merchant slug identifier (DEPRECATED, use shop_slug instead)
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug identifier
        order_id:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Order Id
          description: Order identifier within Karla
        order_number:
          type: string
          title: Order Number
          description: Order number communicated to the user by the Merchant
      type: object
      required:
        - uuid
        - events
        - id
        - merchant_id
        - merchant_slug
        - shop_slug
        - order_id
        - order_number
      title: TrackingDTO
      description: Tracking information with its relevant shipment events.
    TrackingEstimatedArrivalDTO-Input:
      properties:
        from:
          type: string
          format: date-time
          nullable: true
          title: From
          description: >-
            Start date for the ETA range (same as end if a range is not
            provided)
        to:
          type: string
          format: date-time
          nullable: true
          title: To
          description: Expected Delivery To
        time_prediction:
          type: string
          title: Time Prediction
          description: Estimated time of arrival for the shipment
        language:
          $ref: '#/components/schemas/LanguageEnum'
          description: The locale of the language
        source:
          type: string
          nullable: true
          title: Source
          description: >-
            Public-facing source of the estimated delivery time. Values:
            'carrier' (from shipping carrier), 'AI' (AI prediction), 'custom'
            (manual/custom entry), 'order' (from order data)
          examples:
            - carrier
            - AI
            - custom
            - order
      type: object
      required:
        - time_prediction
        - language
      title: TrackingEstimatedArrivalDTO
      description: Event strings for a specific language as defined in the language files.
    TrackingEstimatedArrivalDTO-Output:
      properties:
        from:
          type: string
          nullable: true
          title: From
          description: >-
            Start date for the ETA range (same as end if a range is not
            provided)
        to:
          type: string
          nullable: true
          title: To
          description: Expected Delivery To
        time_prediction:
          type: string
          title: Time Prediction
          description: Estimated time of arrival for the shipment
        language:
          $ref: '#/components/schemas/LanguageEnum'
          description: The locale of the language
        source:
          type: string
          nullable: true
          title: Source
          description: >-
            Public-facing source of the estimated delivery time. Values:
            'carrier' (from shipping carrier), 'AI' (AI prediction), 'custom'
            (manual/custom entry), 'order' (from order data)
          examples:
            - carrier
            - AI
            - custom
            - order
      type: object
      required:
        - time_prediction
        - language
      title: TrackingEstimatedArrivalDTO
      description: Event strings for a specific language as defined in the language files.
    TrackingEventDTO-Input:
      properties:
        event_key:
          type: string
          title: Event Key
          description: Event Key
          examples:
            - H10
            - C20
            - A12
            - A10
        time:
          type: string
          format: date-time
          nullable: true
          title: Time
          description: Event Time
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-16T09:15:00Z'
            - null
        timezone:
          type: string
          nullable: true
          title: Timezone
          description: Event Timezone
          examples:
            - Europe/Berlin
            - America/New_York
            - UTC
            - null
        location:
          additionalProperties: true
          type: object
          nullable: true
          title: Location
          description: Event Location
          examples:
            - city: Berlin
              country: DE
              zip: '10115'
            - city: Hamburg
              country: DE
              state: Hamburg
            - null
        additional_info:
          $ref: '#/components/schemas/EventAdditionalInfo'
          nullable: true
          description: Event Additional Info
          examples:
            - carrier_name: dhl
              mail_message: Package ready for pickup
              merchant_name: Example Shop
              pickup_opening_hours:
                Mon-Fri: 00:00-24:00
                Sat-Sun: 00:00-24:00
              pickup_point: DHL Packstation 123
              pickup_point_url: https://www.dhl.de/packstation/123
              pickup_time: '2024-01-20T18:00:00+00:00'
              preferred_delivery_date: '2024-01-18T12:00:00'
              tracking_company: DHL
              tracking_link: https://www.dhl.de/track?piececode=00340434298376542088
            - carrier_name: hermes
              mail_message: Delivery attempted - recipient not at home
              tracking_company: Hermes
            - null
        phase:
          $ref: '#/components/schemas/PhaseEnum'
          description: Phase of the shipment
        event_name:
          type: string
          title: Event Name
          description: >-
            Shipment event name.<br>See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
            for more details.<br><details><summary>Possible values</summary>-
            `ACCEPTED_BY_DESTINATION_OFFICE`<br>-
            `ACCEPTED_BY_ORIGIN_OFFICE`<br>-
            `ARRIVAL_AT_FINAL_DELIVERY_CENTER`<br>-
            `ARRIVAL_AT_TRANSPORT_HUB`<br>-
            `ARRIVAL_IN_DESTINATION_COUNTRY`<br>-
            `ARRIVED_AT_COMMUNITY_BOX`<br>- `ARRIVED_AT_PARCEL_LOCKER`<br>-
            `ARRIVED_AT_PARCEL_SHOP`<br>- `ARRIVED_AT_PICKUP_POINT`<br>-
            `ARRIVED_AT_POST_OFFICE`<br>- `ARRIVED_AT_SORTING_CENTER`<br>-
            `ASSIGNED_TO_TRANSPORT`<br>- `ATTEMPTED_DELIVERY_UNDELIVERABLE`<br>-
            `AT_SORTING_CENTER`<br>- `AT_TRANSPORT_HUB`<br>-
            `CARRIER_UNKNOWN`<br>- `COMPLETION_OF_CUSTOMS_PROCESSING`<br>-
            `COMPLETION_OF_EXPORT_PROCESSING`<br>- `CUSTOMS_PROCESSING`<br>-
            `DELAY_EXPECTED`<br>- `DELAY_IN_TRANSPORT`<br>-
            `DELAY_IN_TRANSPORT_MISROUTED_SHIPMENT`<br>-
            `DELAY_IN_TRANSPORT_OFFLOADED_SHIPMENT`<br>-
            `DELIVERY_ATTEMPTED`<br>- `DELIVERY_ATTEMPTED_ADDRESSEE_MOVED`<br>-
            `DELIVERY_ATTEMPTED_ADDRESSEE_NOT_KNOWN_AT_ADDRESS`<br>-
            `DELIVERY_ATTEMPTED_ADDRESS_COULD_NOT_BE_FOUND`<br>-
            `DELIVERY_ATTEMPTED_CASH_ON_DELIVERY_AMOUNT_NOT_READY`<br>-
            `DELIVERY_ATTEMPTED_FAILED_WILL_TRY_AGAIN`<br>-
            `DELIVERY_ATTEMPTED_FORWARDING_TO_PICKUP_LOCATION`<br>-
            `DELIVERY_ATTEMPTED_LAST_ATTEMPT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME_CARD_LEFT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_VERIFICATION_UNSUCCESSFUL`<br>-
            `DELIVERY_ATTEMPTED_REJECTED_BY_ADDRESSEE`<br>-
            `DELIVERY_FAILED_SHIPMENT_DESTROYED`<br>- `DELIVERY_LAPSED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_LOCKER`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_SHOP`<br>-
            `DELIVERY_OPTION_ALTERNATE_TIME_REQUESTED`<br>-
            `DELIVERY_OPTION_REQUESTED_BY_RECEIVER`<br>-
            `DELIVERY_SCHEDULED_IN_THE_FINAL_DELIVERY_DEPOT`<br>-
            `DEPARTURE_FROM_TRANSPORT_HUB`<br>-
            `DISPATCHED_FROM_DELIVERY_CENTER`<br>-
            `DISPATCHED_FROM_FORWARDING_DEPOT`<br>-
            `DISPATCHED_FROM_SORTING_CENTER`<br>-
            `DISPATCHING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `ENCODING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ERROR_IN_PARCEL_DATA_SUBMISSION`<br>-
            `ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `EXPORT_PROCESSING`<br>-
            `FAILED_TO_HAND_OVER_TO_DELIVERY_PARTNER`<br>-
            `HANDED_OVER_TO_DELIVERY_PARTNER`<br>- `HELD_AT_CUSTOMS`<br>-
            `HELD_AT_CUSTOMS_FOR_ADDITIONAL_PAYMENT`<br>-
            `HELD_AT_CUSTOMS_FOR_CLARIFICATIONS`<br>-
            `HELD_AT_EXPORT_PROCESSING`<br>- `INBOUND_FLIGHT_ARRIVED`<br>-
            `INBOUND_TRUCK_ARRIVED`<br>- `IN_DELIVERY`<br>-
            `ISSUES_IN_PROCESSING_BY_CUSTOMS_AUTHORITIES`<br>-
            `MISSING_SHIPMENT_INFORMATION`<br>-
            `MORE_INFO_ON_CARRIER_WEBSITE`<br>-
            `NOTIFICATION_SENT_TO_RECIPIENT`<br>-
            `NO_DELIVERY_ATTEMPT_ON_ROUTE`<br>- `ORDER_CANCELLED`<br>-
            `ORDER_CREATED`<br>- `ORDER_DELAYED`<br>- `ORDER_IN_PROCESSING`<br>-
            `ORDER_PROCESSED`<br>- `OUTBOUND_FLIGHT_DEPARTED`<br>-
            `OUTBOUND_TRUCK_DEPARTED`<br>- `OUT_FOR_DELIVERY`<br>-
            `PACKAGE_REROUTING_CANCELED_ROUTE_TO_HOME`<br>-
            `PARCEL_COLLECTED_FROM_DROP_OFF_LOCATION`<br>-
            `PARCEL_DATA_SUBMISSION_DELAYED`<br>-
            `PARCEL_DATA_SUBMITTED_TO_CARRIER`<br>- `PARCEL_DISPATCHED`<br>-
            `PARCEL_DROPPED_OFF_AT_PARCEL_LOCKER`<br>-
            `PARCEL_DROPPED_OFF_AT_POST_OFFICE`<br>-
            `PARCEL_DROPPED_OFF_IN_PARCEL_SHOP`<br>-
            `PARCEL_DROPPED_OFF_OVER_THE_COUNTER`<br>-
            `PARCEL_DROPPED_OFF_WITH_CARRIER`<br>-
            `PARCEL_READY_FOR_PICKUP`<br>-
            `PARCEL_TRANSFERRED_TO_THIRD_PARTY`<br>- `PATCHED`<br>-
            `PICKUP_ATTEMPTED`<br>- `PICKUP_DELAYED`<br>- `PICKUP_FAILED`<br>-
            `PICKUP_SUCCESSFUL`<br>- `PROCEEDING_TO_CARRIER_FACILITY`<br>-
            `PROCESSED_AT_DELIVERY_CENTER`<br>-
            `PROCESSING_AT_TRANSPORT_HUB`<br>-
            `RECEIPT_AT_FORWARDING_DEPOT`<br>- `RETURNED_TO_DELIVERY_DEPOT`<br>-
            `RETURN_IN_PROGRESS`<br>- `RETURN_TO_ORIGIN_COUNTRY_CANCELLED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_COMPLETED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_FAILED`<br>-
            `RETURN_TO_SENDER_COMPLETED`<br>- `RETURN_TO_SENDER_FAILED`<br>-
            `RETURN_TO_SENDER_FAILED_RECIPIENT_VERIFICATION`<br>-
            `SCANNED_AT_PROCESSING_CENTER`<br>-
            `SHIPMENT_AT_FINAL_DELIVERY_CENTER`<br>- `SHIPMENT_CANCELLED`<br>-
            `SHIPMENT_DAMAGED`<br>-
            `SHIPMENT_DELAYED_DUE_TO_CUSTOMER_REQUEST`<br>-
            `SHIPMENT_EN_ROUTE`<br>-
            `SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER`<br>-
            `SHIPMENT_LOST`<br>- `SHIPMENT_LOST_IN_DELIVERY`<br>-
            `SHIPMENT_LOST_IN_PROCESSING`<br>-
            `SHIPMENT_LOST_IN_SORTING_CENTER`<br>-
            `SHIPMENT_LOST_IN_TRANSIT`<br>- `SHIPMENT_LOST_IN_TRANSPORT`<br>-
            `SHIPMENT_LOST_UNKNOWN_REASON`<br>- `SHIPMENT_MISROUTED`<br>-
            `SHIPMENT_NEVER_ARRIVED`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_ON_HOLD_IN_DELIVERY_CENTER`<br>-
            `SHIPMENT_ON_ITS_WAY_TO_PICKUP_LOCATION`<br>-
            `SHIPMENT_REJECTED_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_SUCCESSFULLY_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_UPDATED_ETA`<br>- `SHIPMENT_UPDATED_PICKUP`<br>-
            `SORTING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `SORTING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `SORTING_STARTED_AT_PROCESSING_CENTER`<br>-
            `START_OF_CUSTOMS_PROCESSING`<br>- `START_OF_EXPORT_PROCESSING`<br>-
            `SUCCESSFULLY_COLLECTED`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_LOCKER`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_SHOP`<br>-
            `SUCCESSFULLY_COLLECTED_AT_POST_OFFICE`<br>-
            `SUCCESSFULLY_DELIVERED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_CASH_ON_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_DOOR`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_LETTER_BOX`<br>-
            `SUCCESSFULLY_DELIVERED_AND_PROOF_OF_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_TO_NEIGHBOR`<br>-
            `SUCCESSFULLY_DELIVERED_TO_THE_COMMUNITY_MAILBOX`<br>-
            `TRANSPORT_ARRIVED`<br>- `TRANSPORT_DEPARTED`<br>-
            `USER_SUCCESSFULLY_DELIVERED`<br></details>
        event_strings:
          $ref: '#/components/schemas/TrackingEventKeyTranslationsDTO'
          nullable: true
          description: Event translation strings
        language:
          $ref: '#/components/schemas/LanguageEnum'
          description: The locale of the language for the event
      type: object
      required:
        - event_key
        - phase
        - event_name
        - language
      title: TrackingEventDTO
      description: >-
        Event information for the delivery of a shipment.


        See [Shipment
        Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)

        for more information about events.
    TrackingEventDTO-Output:
      properties:
        event_key:
          title: Event Key
          description: Event Key
          examples:
            - H10
            - C20
            - A12
            - A10
        time:
          type: string
          nullable: true
          title: Time
          description: Event Time
          examples:
            - '2024-01-15T14:30:00Z'
            - '2024-01-16T09:15:00Z'
            - null
        timezone:
          title: Timezone
          description: Event Timezone
          examples:
            - Europe/Berlin
            - America/New_York
            - UTC
            - null
        location:
          title: Location
          description: Event Location
          examples:
            - city: Berlin
              country: DE
              zip: '10115'
            - city: Hamburg
              country: DE
              state: Hamburg
            - null
        additional_info:
          description: Event Additional Info
          examples:
            - carrier_name: dhl
              mail_message: Package ready for pickup
              merchant_name: Example Shop
              pickup_opening_hours:
                Mon-Fri: 00:00-24:00
                Sat-Sun: 00:00-24:00
              pickup_point: DHL Packstation 123
              pickup_point_url: https://www.dhl.de/packstation/123
              pickup_time: '2024-01-20T18:00:00+00:00'
              preferred_delivery_date: '2024-01-18T12:00:00'
              tracking_company: DHL
              tracking_link: https://www.dhl.de/track?piececode=00340434298376542088
            - carrier_name: hermes
              mail_message: Delivery attempted - recipient not at home
              tracking_company: Hermes
            - null
        phase:
          description: Phase of the shipment
        event_name:
          title: Event Name
          description: >-
            Shipment event name.<br>See [Shipment
            Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)
            for more details.<br><details><summary>Possible values</summary>-
            `ACCEPTED_BY_DESTINATION_OFFICE`<br>-
            `ACCEPTED_BY_ORIGIN_OFFICE`<br>-
            `ARRIVAL_AT_FINAL_DELIVERY_CENTER`<br>-
            `ARRIVAL_AT_TRANSPORT_HUB`<br>-
            `ARRIVAL_IN_DESTINATION_COUNTRY`<br>-
            `ARRIVED_AT_COMMUNITY_BOX`<br>- `ARRIVED_AT_PARCEL_LOCKER`<br>-
            `ARRIVED_AT_PARCEL_SHOP`<br>- `ARRIVED_AT_PICKUP_POINT`<br>-
            `ARRIVED_AT_POST_OFFICE`<br>- `ARRIVED_AT_SORTING_CENTER`<br>-
            `ASSIGNED_TO_TRANSPORT`<br>- `ATTEMPTED_DELIVERY_UNDELIVERABLE`<br>-
            `AT_SORTING_CENTER`<br>- `AT_TRANSPORT_HUB`<br>-
            `CARRIER_UNKNOWN`<br>- `COMPLETION_OF_CUSTOMS_PROCESSING`<br>-
            `COMPLETION_OF_EXPORT_PROCESSING`<br>- `CUSTOMS_PROCESSING`<br>-
            `DELAY_EXPECTED`<br>- `DELAY_IN_TRANSPORT`<br>-
            `DELAY_IN_TRANSPORT_MISROUTED_SHIPMENT`<br>-
            `DELAY_IN_TRANSPORT_OFFLOADED_SHIPMENT`<br>-
            `DELIVERY_ATTEMPTED`<br>- `DELIVERY_ATTEMPTED_ADDRESSEE_MOVED`<br>-
            `DELIVERY_ATTEMPTED_ADDRESSEE_NOT_KNOWN_AT_ADDRESS`<br>-
            `DELIVERY_ATTEMPTED_ADDRESS_COULD_NOT_BE_FOUND`<br>-
            `DELIVERY_ATTEMPTED_CASH_ON_DELIVERY_AMOUNT_NOT_READY`<br>-
            `DELIVERY_ATTEMPTED_FAILED_WILL_TRY_AGAIN`<br>-
            `DELIVERY_ATTEMPTED_FORWARDING_TO_PICKUP_LOCATION`<br>-
            `DELIVERY_ATTEMPTED_LAST_ATTEMPT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_NOT_AT_HOME_CARD_LEFT`<br>-
            `DELIVERY_ATTEMPTED_RECIPIENT_VERIFICATION_UNSUCCESSFUL`<br>-
            `DELIVERY_ATTEMPTED_REJECTED_BY_ADDRESSEE`<br>-
            `DELIVERY_FAILED_SHIPMENT_DESTROYED`<br>- `DELIVERY_LAPSED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_LOCKER`<br>-
            `DELIVERY_OPTION_ALTERNATE_LOCATION_REQUESTED_SHOP`<br>-
            `DELIVERY_OPTION_ALTERNATE_TIME_REQUESTED`<br>-
            `DELIVERY_OPTION_REQUESTED_BY_RECEIVER`<br>-
            `DELIVERY_SCHEDULED_IN_THE_FINAL_DELIVERY_DEPOT`<br>-
            `DEPARTURE_FROM_TRANSPORT_HUB`<br>-
            `DISPATCHED_FROM_DELIVERY_CENTER`<br>-
            `DISPATCHED_FROM_FORWARDING_DEPOT`<br>-
            `DISPATCHED_FROM_SORTING_CENTER`<br>-
            `DISPATCHING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `ENCODING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `ENCODING_STARTED_AT_PROCESSING_CENTER`<br>-
            `ERROR_IN_PARCEL_DATA_SUBMISSION`<br>-
            `ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `EXPORT_PROCESSING`<br>-
            `FAILED_TO_HAND_OVER_TO_DELIVERY_PARTNER`<br>-
            `HANDED_OVER_TO_DELIVERY_PARTNER`<br>- `HELD_AT_CUSTOMS`<br>-
            `HELD_AT_CUSTOMS_FOR_ADDITIONAL_PAYMENT`<br>-
            `HELD_AT_CUSTOMS_FOR_CLARIFICATIONS`<br>-
            `HELD_AT_EXPORT_PROCESSING`<br>- `INBOUND_FLIGHT_ARRIVED`<br>-
            `INBOUND_TRUCK_ARRIVED`<br>- `IN_DELIVERY`<br>-
            `ISSUES_IN_PROCESSING_BY_CUSTOMS_AUTHORITIES`<br>-
            `MISSING_SHIPMENT_INFORMATION`<br>-
            `MORE_INFO_ON_CARRIER_WEBSITE`<br>-
            `NOTIFICATION_SENT_TO_RECIPIENT`<br>-
            `NO_DELIVERY_ATTEMPT_ON_ROUTE`<br>- `ORDER_CANCELLED`<br>-
            `ORDER_CREATED`<br>- `ORDER_DELAYED`<br>- `ORDER_IN_PROCESSING`<br>-
            `ORDER_PROCESSED`<br>- `OUTBOUND_FLIGHT_DEPARTED`<br>-
            `OUTBOUND_TRUCK_DEPARTED`<br>- `OUT_FOR_DELIVERY`<br>-
            `PACKAGE_REROUTING_CANCELED_ROUTE_TO_HOME`<br>-
            `PARCEL_COLLECTED_FROM_DROP_OFF_LOCATION`<br>-
            `PARCEL_DATA_SUBMISSION_DELAYED`<br>-
            `PARCEL_DATA_SUBMITTED_TO_CARRIER`<br>- `PARCEL_DISPATCHED`<br>-
            `PARCEL_DROPPED_OFF_AT_PARCEL_LOCKER`<br>-
            `PARCEL_DROPPED_OFF_AT_POST_OFFICE`<br>-
            `PARCEL_DROPPED_OFF_IN_PARCEL_SHOP`<br>-
            `PARCEL_DROPPED_OFF_OVER_THE_COUNTER`<br>-
            `PARCEL_DROPPED_OFF_WITH_CARRIER`<br>-
            `PARCEL_READY_FOR_PICKUP`<br>-
            `PARCEL_TRANSFERRED_TO_THIRD_PARTY`<br>- `PATCHED`<br>-
            `PICKUP_ATTEMPTED`<br>- `PICKUP_DELAYED`<br>- `PICKUP_FAILED`<br>-
            `PICKUP_SUCCESSFUL`<br>- `PROCEEDING_TO_CARRIER_FACILITY`<br>-
            `PROCESSED_AT_DELIVERY_CENTER`<br>-
            `PROCESSING_AT_TRANSPORT_HUB`<br>-
            `RECEIPT_AT_FORWARDING_DEPOT`<br>- `RETURNED_TO_DELIVERY_DEPOT`<br>-
            `RETURN_IN_PROGRESS`<br>- `RETURN_TO_ORIGIN_COUNTRY_CANCELLED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_COMPLETED`<br>-
            `RETURN_TO_ORIGIN_COUNTRY_FAILED`<br>-
            `RETURN_TO_SENDER_COMPLETED`<br>- `RETURN_TO_SENDER_FAILED`<br>-
            `RETURN_TO_SENDER_FAILED_RECIPIENT_VERIFICATION`<br>-
            `SCANNED_AT_PROCESSING_CENTER`<br>-
            `SHIPMENT_AT_FINAL_DELIVERY_CENTER`<br>- `SHIPMENT_CANCELLED`<br>-
            `SHIPMENT_DAMAGED`<br>-
            `SHIPMENT_DELAYED_DUE_TO_CUSTOMER_REQUEST`<br>-
            `SHIPMENT_EN_ROUTE`<br>-
            `SHIPMENT_INFO_SENT_TO_LAST_MILE_SERVICE_PROVIDER`<br>-
            `SHIPMENT_LOST`<br>- `SHIPMENT_LOST_IN_DELIVERY`<br>-
            `SHIPMENT_LOST_IN_PROCESSING`<br>-
            `SHIPMENT_LOST_IN_SORTING_CENTER`<br>-
            `SHIPMENT_LOST_IN_TRANSIT`<br>- `SHIPMENT_LOST_IN_TRANSPORT`<br>-
            `SHIPMENT_LOST_UNKNOWN_REASON`<br>- `SHIPMENT_MISROUTED`<br>-
            `SHIPMENT_NEVER_ARRIVED`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_DEPOT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_LOCKER_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_PARCEL_SHOP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_FROM_POST_OFFICE_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_BASE`<br>-
            `SHIPMENT_NOT_PICKED_UP_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_ON_HOLD_IN_DELIVERY_CENTER`<br>-
            `SHIPMENT_ON_ITS_WAY_TO_PICKUP_LOCATION`<br>-
            `SHIPMENT_REJECTED_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_RETURNED_TO_ORIGIN_COUNTRY`<br>-
            `SHIPMENT_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_RETURNING_TO_SENDER`<br>-
            `SHIPMENT_SUCCESSFULLY_RETURNED_TO_SENDER`<br>-
            `SHIPMENT_UPDATED_ETA`<br>- `SHIPMENT_UPDATED_PICKUP`<br>-
            `SORTING_COMPLETED_AT_PROCESSING_CENTER`<br>-
            `SORTING_ERROR_IN_PROCESSING_AT_SORTING_CENTER`<br>-
            `SORTING_STARTED_AT_PROCESSING_CENTER`<br>-
            `START_OF_CUSTOMS_PROCESSING`<br>- `START_OF_EXPORT_PROCESSING`<br>-
            `SUCCESSFULLY_COLLECTED`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_LOCKER`<br>-
            `SUCCESSFULLY_COLLECTED_AT_PARCEL_SHOP`<br>-
            `SUCCESSFULLY_COLLECTED_AT_POST_OFFICE`<br>-
            `SUCCESSFULLY_DELIVERED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_CASH_ON_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_DOOR`<br>-
            `SUCCESSFULLY_DELIVERED_AND_LEFT_AT_LETTER_BOX`<br>-
            `SUCCESSFULLY_DELIVERED_AND_PROOF_OF_DELIVERY_COLLECTED`<br>-
            `SUCCESSFULLY_DELIVERED_TO_NEIGHBOR`<br>-
            `SUCCESSFULLY_DELIVERED_TO_THE_COMMUNITY_MAILBOX`<br>-
            `TRANSPORT_ARRIVED`<br>- `TRANSPORT_DEPARTED`<br>-
            `USER_SUCCESSFULLY_DELIVERED`<br></details>
        event_strings:
          description: Event translation strings
        language:
          description: The locale of the language for the event
      type: object
      required:
        - event_key
        - phase
        - event_name
        - language
      title: TrackingEventDTO
      description: >-
        Event information for the delivery of a shipment.


        See [Shipment
        Events](https://docs.gokarla.io/docs/api/entities/shipment#shipment-events)

        for more information about events.
    TrackingEventKeyTranslationsDTO:
      properties:
        event_status:
          type: string
          title: Event Status
          description: Event status translation
        list_label:
          type: string
          title: List Label
          description: Event list label translation
        header_headline:
          type: string
          title: Header Headline
          description: Event header headline translation
        header_title:
          type: string
          title: Header Title
          description: Event header title translation
        header_subtitle:
          type: string
          title: Header Subtitle
          description: Event header subtitle translation
      type: object
      required:
        - event_status
        - list_label
        - header_headline
        - header_title
        - header_subtitle
      title: TrackingEventKeyTranslationsDTO
      description: >-
        Tracking event strings for a specific language as defined in its lang
        files.
    TrackingEventsWidgetDTO:
      properties:
        colors:
          $ref: '#/components/schemas/WidgetColorSchemeDTO'
          nullable: true
          description: Color scheme using brand palette references
        show_order_number:
          type: boolean
          nullable: true
          title: Show Order Number
          description: Whether to show the order number
        show_powered_by_karla:
          type: boolean
          nullable: true
          title: Show Powered By Karla
          description: Whether to show 'Powered by Karla' branding
        disable_delay_alert:
          type: boolean
          nullable: true
          title: Disable Delay Alert
          description: Whether to disable delay alerts
      type: object
      title: TrackingEventsWidgetDTO
      description: Configuration for the tracking-events widget.
    TrackingPickUpDTO-Input:
      properties:
        type:
          $ref: '#/components/schemas/PickUpTypeEnum'
          nullable: true
          description: PickUp type
        name:
          type: string
          title: Name
          description: PickUp name
        address:
          $ref: '#/components/schemas/AddressDTO-Input'
          nullable: true
          description: PickUp address
        url:
          type: string
          nullable: true
          title: Url
          description: PickUp url
        opening_hours:
          type: string
          nullable: true
          title: Opening Hours
          description: PickUp opening hours
        date_to:
          type: string
          format: date-time
          nullable: true
          title: Date To
          description: PickUp date to
      type: object
      required:
        - name
      title: TrackingPickUpDTO
      description: PickUp information for the delivery of a shipment.
    TrackingPickUpDTO-Output:
      properties:
        type:
          $ref: '#/components/schemas/PickUpTypeEnum'
          nullable: true
          description: PickUp type
        name:
          type: string
          title: Name
          description: PickUp name
        address:
          $ref: '#/components/schemas/AddressDTO-Output'
          nullable: true
          description: PickUp address
        url:
          type: string
          nullable: true
          title: Url
          description: PickUp url
        opening_hours:
          type: string
          nullable: true
          title: Opening Hours
          description: PickUp opening hours
        date_to:
          type: string
          nullable: true
          title: Date To
          description: PickUp date to
      type: object
      required:
        - name
      title: TrackingPickUpDTO
      description: PickUp information for the delivery of a shipment.
    TrackingSchema-Input:
      properties:
        events:
          items:
            $ref: '#/components/schemas/Event'
          type: array
          nullable: true
          title: Events
          description: Shipment tracking events
          examples:
            - - event_key: H10
                time: '2024-01-15T10:00:00+00:00'
                timezone: Europe/Berlin
              - event_key: C20
                location:
                  city: Berlin
                  country: DE
                time: '2024-01-16T08:30:00+00:00'
                timezone: Europe/Berlin
              - event_key: A10
                location:
                  city: Munich
                  country: DE
                  zip: '80331'
                time: '2024-01-17T14:15:00+00:00'
                timezone: Europe/Berlin
            - null
        expected_delivery:
          anyOf:
            - $ref: '#/components/schemas/api__schema__shipment__ExpectedDelivery'
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Expected Delivery
          description: Expected delivery data
          examples:
            - end: '2024-01-18T18:00:00+00:00'
              source: pp
              start: '2024-01-18T08:00:00+00:00'
              updated_at: '2024-01-15T14:30:00+00:00'
            - null
        additional_info:
          $ref: '#/components/schemas/AdditionalInfo'
          nullable: true
          description: Event Additional Info
          examples:
            - carrier_name: dhl
              mail_message: Package delivered to pickup point
              merchant_name: Coffee Shop Berlin
              pickup_opening_hours:
                Mon-Fri: 06:00-22:00
                Sat: 08:00-20:00
              pickup_point: DHL Packstation 456
              pickup_point_url: https://www.dhl.de/packstation/456
              pickup_time: '2024-01-25T20:00:00+00:00'
              preferred_delivery_date: '2024-01-18T00:00:00'
              tracking_company: DHL Paket
              tracking_link: https://www.dhl.de/track?piececode=12345678901234567890
            - carrier_name: hermes
              mail_message: Package out for delivery
              tracking_link: https://tracking.hermes.de/123456789
            - null
        pickup_location:
          additionalProperties: true
          type: object
          nullable: true
          title: Pickup Location
          description: Pickup Location data
      type: object
      title: TrackingSchema
      description: |-
        Schema for a `Tracking` partial for the Karla `Shipment` object.

        This partial can represent **Any** Tracking DataSource.
    TrackingSchema-Output:
      properties:
        events:
          title: Events
          description: Shipment tracking events
          examples:
            - - event_key: H10
                time: '2024-01-15T10:00:00+00:00'
                timezone: Europe/Berlin
              - event_key: C20
                location:
                  city: Berlin
                  country: DE
                time: '2024-01-16T08:30:00+00:00'
                timezone: Europe/Berlin
              - event_key: A10
                location:
                  city: Munich
                  country: DE
                  zip: '80331'
                time: '2024-01-17T14:15:00+00:00'
                timezone: Europe/Berlin
            - null
        expected_delivery:
          title: Expected Delivery
          description: Expected delivery data
          examples:
            - end: '2024-01-18T18:00:00+00:00'
              source: pp
              start: '2024-01-18T08:00:00+00:00'
              updated_at: '2024-01-15T14:30:00+00:00'
            - null
        additional_info:
          description: Event Additional Info
          examples:
            - carrier_name: dhl
              mail_message: Package delivered to pickup point
              merchant_name: Coffee Shop Berlin
              pickup_opening_hours:
                Mon-Fri: 06:00-22:00
                Sat: 08:00-20:00
              pickup_point: DHL Packstation 456
              pickup_point_url: https://www.dhl.de/packstation/456
              pickup_time: '2024-01-25T20:00:00+00:00'
              preferred_delivery_date: '2024-01-18T00:00:00'
              tracking_company: DHL Paket
              tracking_link: https://www.dhl.de/track?piececode=12345678901234567890
            - carrier_name: hermes
              mail_message: Package out for delivery
              tracking_link: https://tracking.hermes.de/123456789
            - null
        pickup_location:
          title: Pickup Location
          description: Pickup Location data
      type: object
      title: TrackingSchema
      description: |-
        Schema for a `Tracking` partial for the Karla `Shipment` object.

        This partial can represent **Any** Tracking DataSource.
    TrackpagesBorderRadiusDTO:
      properties:
        widget_corner_px:
          type: integer
          enum:
            - 2
            - 4
            - 6
            - 8
            - 12
            - 16
            - 24
            - 32
          nullable: true
          title: Widget Corner Px
          description: Border radius for widgets in pixels
          examples:
            - 12
        button_corner_px:
          type: integer
          enum:
            - 2
            - 4
            - 6
            - 8
            - 12
            - 16
            - 24
            - 32
          nullable: true
          title: Button Corner Px
          description: Border radius for buttons in pixels
          examples:
            - 8
      type: object
      title: TrackpagesBorderRadiusDTO
      description: Border radius configuration for trackpages.
    TrackpagesFontDTO:
      properties:
        font:
          type: string
          title: Font
          description: Font family name (system font fallback if unavailable)
          examples:
            - Inter
            - Roboto
            - Sombra
      type: object
      required:
        - font
      title: TrackpagesFontDTO
      description: Font configuration for trackpages.
    TrackpagesMetadataDTO:
      properties:
        title:
          type: string
          nullable: true
          title: Title
          description: Page title
          examples:
            - Track Your Order
        description:
          type: string
          nullable: true
          title: Description
          description: Page meta description
          examples:
            - Track your package delivery status
        icons:
          type: string
          nullable: true
          title: Icons
          description: Favicon URL or path
          examples:
            - /favicon.ico
      type: object
      title: TrackpagesMetadataDTO
      description: Page metadata configuration for trackpages.
    TrackpagesThemeDTO:
      properties:
        theme:
          type: string
          enum:
            - theme_1
            - theme_2
          title: Theme
          description: The theme to apply to the tracking page
          examples:
            - theme_1
      type: object
      required:
        - theme
      title: TrackpagesThemeDTO
      description: Theme selection for trackpages.
    TriggerSettingsDTO:
      properties:
        klaviyo:
          type: boolean
          title: Klaviyo
          description: Karla to Klaviyo triggers status
          examples:
            - true
        shopify:
          type: boolean
          title: Shopify
          description: Karla to Shopify triggers status
        emarsys:
          type: boolean
          title: Emarsys
          description: Karla to Emarsys triggers status
          examples:
            - true
        brevo:
          type: boolean
          title: Brevo
          description: Karla to Brevo triggers status
          examples:
            - true
        inxmail:
          type: boolean
          title: Inxmail
          description: Karla to Inxmail triggers status
          examples:
            - true
        braze:
          type: boolean
          title: Braze
          description: Karla to Braze triggers status
          examples:
            - true
        hubspot:
          type: boolean
          title: Hubspot
          description: Karla to HubSpot triggers status
          examples:
            - true
      type: object
      required:
        - klaviyo
        - shopify
        - emarsys
        - brevo
        - inxmail
        - braze
        - hubspot
      title: TriggerSettingsDTO
      description: The trigger settings object to be exchanged with the HTTP clients.
    TriggerSettingsUpdateDTO:
      properties:
        klaviyo:
          type: boolean
          nullable: true
          title: Klaviyo
          description: Toggle sending triggers to Klaviyo
          examples:
            - true
        shopify:
          type: boolean
          nullable: true
          title: Shopify
          description: Toggle sending triggers to Shopify
        emarsys:
          type: boolean
          nullable: true
          title: Emarsys
          description: Toggle sending triggers to Emarsys
          examples:
            - true
        brevo:
          type: boolean
          nullable: true
          title: Brevo
          description: Toggle sending triggers to Brevo
          examples:
            - true
        inxmail:
          type: boolean
          nullable: true
          title: Inxmail
          description: Toggle sending triggers to Inxmail
          examples:
            - true
        braze:
          type: boolean
          nullable: true
          title: Braze
          description: Toggle sending triggers to Braze
          examples:
            - true
        hubspot:
          type: boolean
          nullable: true
          title: Hubspot
          description: Toggle sending triggers to HubSpot
          examples:
            - true
      type: object
      title: TriggerSettingsUpdateDTO
      description: >-
        The trigger settings update object to be exchanged with the HTTP
        clients.
    TriggerSettingsV1-Input:
      properties:
        klaviyo:
          $ref: '#/components/schemas/KlaviyoSettingsV1-Input'
        shopify:
          $ref: '#/components/schemas/ShopifySettingsV1-Input'
        emarsys:
          $ref: '#/components/schemas/EmarsysSettingsV1'
          nullable: true
        brevo:
          $ref: '#/components/schemas/BrevoSettingsV1'
          nullable: true
        inxmail:
          $ref: '#/components/schemas/InxmailSettingsV1'
          nullable: true
        braze:
          $ref: '#/components/schemas/BrazeSettingsV1'
          nullable: true
        hubspot:
          $ref: '#/components/schemas/HubSpotSettingsV1'
          nullable: true
        webhook:
          $ref: '#/components/schemas/WebhookSettingsV1'
          nullable: true
      type: object
      required:
        - klaviyo
        - shopify
      title: TriggerSettingsV1
      description: Schema for a Shop.TriggerSetting object.
    TriggerSettingsV1-Output:
      properties:
        klaviyo: {}
        shopify: {}
        emarsys: {}
        brevo: {}
        inxmail: {}
        braze: {}
        hubspot: {}
        webhook: {}
      type: object
      required:
        - klaviyo
        - shopify
      title: TriggerSettingsV1
      description: Schema for a Shop.TriggerSetting object.
    UpdateDealDTO:
      properties:
        discount_id:
          type: string
          format: uuid
          nullable: true
          title: Discount Id
          description: Discount UUID
        brand_image_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Brand Image Url
          description: Brand image URL
        brand_logo_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Brand Logo Url
          description: Brand logo URL
        cta_url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Cta Url
          description: CTA URL
        title:
          type: string
          nullable: true
          title: Title
          description: Title
        description:
          type: string
          nullable: true
          title: Description
          description: Description
        translations:
          items:
            $ref: '#/components/schemas/DealTranslations-Input'
          type: array
          nullable: true
          title: Translations
          description: Translations
      type: object
      title: UpdateDealDTO
      description: Update deal DTO.
    UpdateMappingRequestDTO:
      properties:
        event_key:
          type: string
          nullable: true
          title: Event Key
          description: Event key to map to (e.g., H10, E10). Set to approve mapping.
        message:
          type: string
          nullable: true
          title: Message
          description: >-
            Event message (null for partial, text for full, regex pattern for
            regex)
        match_type:
          $ref: '#/components/schemas/MatchType'
          nullable: true
          description: >-
            Match type: full (exact message), partial (no message), or regex
            (pattern)
        status:
          $ref: '#/components/schemas/MappingStatus'
          nullable: true
          description: Mapping status (pending/approved/rejected)
        updated_by:
          type: string
          title: Updated By
          description: Username/email of the person making the update
        reason:
          type: string
          nullable: true
          title: Reason
          description: Optional reason for rejection or status change
        confirm:
          type: boolean
          title: Confirm
          description: >-
            If true, confirms and executes the operation. If false (default),
            returns a preview of affected mappings without executing (dry-run
            mode).
          default: false
      type: object
      required:
        - updated_by
      title: UpdateMappingRequestDTO
      description: Request DTO for updating a mapping (approve, reject, or modify).
    UserByEmailDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: User email
          examples:
            - test@example.com
      type: object
      required:
        - email
      title: UserByEmailDTO
      description: User by email DTO.
    UserCreationDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: User email
          examples:
            - test@example.com
        name:
          type: string
          nullable: true
          title: Name
          description: User name
          examples:
            - John Doe
        picture:
          type: string
          nullable: true
          title: Picture
          description: User picture
          examples:
            - https://example.com/picture.png
        is_super_admin:
          type: boolean
          title: Is Super Admin
          description: Whether the user is a super admin
          default: false
        org_permissions:
          items:
            $ref: '#/components/schemas/UserOrgPermissionDTO'
          type: array
          title: Org Permissions
          description: User organization permissions
          default: []
          examples:
            - - org_slug: my-org
                role: viewer
        newsletter_opt_in:
          type: boolean
          title: Newsletter Opt In
          description: Whether the user has opted in to the newsletter
          default: false
        consultation_opt_in:
          type: boolean
          title: Consultation Opt In
          description: Whether the user has opted in to the consultation
          default: false
        create_org_permission:
          type: boolean
          title: Create Org Permission
          description: >-
            Whether to create organization-level permissions via SSO. When
            False, SSO auto-provisioning is disabled.
          default: false
      type: object
      required:
        - email
      title: UserCreationDTO
      description: User creation DTO.
    UserDTO-Input:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: User UUID
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
        email:
          type: string
          title: Email
          description: User email
          examples:
            - test@example.com
        name:
          type: string
          nullable: true
          title: Name
          description: User name
          examples:
            - John Doe
        picture:
          type: string
          nullable: true
          title: Picture
          description: User picture
          examples:
            - https://example.com/picture.png
        is_super_admin:
          type: boolean
          title: Is Super Admin
          description: Whether the user is a super admin
          default: false
        org_permissions:
          items:
            $ref: '#/components/schemas/UserOrgPermissionDTO'
          type: array
          title: Org Permissions
          description: Organizations the user has access to
          default: []
          examples:
            - - org_slug: my-org
                role: viewer
        shop_permissions:
          items:
            $ref: '#/components/schemas/UserShopPermissionDTO'
          type: array
          title: Shop Permissions
          description: >-
            Shops the user has access to. Either generated from the organization
            permissions (inherited) or granted specifically (specific).
          default: []
          examples:
            - - role: viewer
                shop_slug: my-shop
        last_login_at:
          type: string
          format: date-time
          nullable: true
          title: Last Login At
          description: User last login timestamp
          examples:
            - '2021-01-01T12:00:00Z'
        invitation_status:
          $ref: '#/components/schemas/UserInvitationStatus'
          nullable: true
          description: User invitation status
          examples:
            - pending
        feature_community:
          $ref: '#/components/schemas/FeatureCommunity'
          description: The feature community the user belongs to
          examples:
            - live
        newsletter_opt_in:
          type: boolean
          title: Newsletter Opt In
          description: Whether the user has opted in to the newsletter
          default: false
        consultation_opt_in:
          type: boolean
          title: Consultation Opt In
          description: Whether the user has opted in to the consultation
          default: false
      type: object
      required:
        - uuid
        - email
        - feature_community
      title: UserDTO
      description: User response DTO.
    UserDTO-Output:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: User UUID
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
        email:
          type: string
          title: Email
          description: User email
          examples:
            - test@example.com
        name:
          type: string
          nullable: true
          title: Name
          description: User name
          examples:
            - John Doe
        picture:
          type: string
          nullable: true
          title: Picture
          description: User picture
          examples:
            - https://example.com/picture.png
        is_super_admin:
          type: boolean
          title: Is Super Admin
          description: Whether the user is a super admin
          default: false
        org_permissions:
          items:
            $ref: '#/components/schemas/UserOrgPermissionDTO'
          type: array
          title: Org Permissions
          description: Organizations the user has access to
          default: []
          examples:
            - - org_slug: my-org
                role: viewer
        shop_permissions:
          items:
            $ref: '#/components/schemas/UserShopPermissionDTO'
          type: array
          title: Shop Permissions
          description: >-
            Shops the user has access to. Either generated from the organization
            permissions (inherited) or granted specifically (specific).
          default: []
          examples:
            - - role: viewer
                shop_slug: my-shop
        last_login_at:
          type: string
          format: date-time
          nullable: true
          title: Last Login At
          description: User last login timestamp
          examples:
            - '2021-01-01T12:00:00Z'
        invitation_status:
          $ref: '#/components/schemas/UserInvitationStatus'
          nullable: true
          description: User invitation status
          examples:
            - pending
        feature_community:
          $ref: '#/components/schemas/FeatureCommunity'
          description: The feature community the user belongs to
          examples:
            - live
        newsletter_opt_in:
          type: boolean
          title: Newsletter Opt In
          description: Whether the user has opted in to the newsletter
          default: false
        consultation_opt_in:
          type: boolean
          title: Consultation Opt In
          description: Whether the user has opted in to the consultation
          default: false
      type: object
      required:
        - uuid
        - email
        - feature_community
      title: UserDTO
      description: User response DTO.
    UserInput-Input:
      properties:
        input_type:
          $ref: '#/components/schemas/UserInputType'
          description: User input for the claim
          examples:
            - selected_answer
        input_value:
          type: string
          title: Input Value
          description: >-
            Value written by the user or id if the user selected an answer
            depending on input type
          examples:
            - 'yes'
        translated_question:
          type: string
          nullable: true
          title: Translated Question
          description: Question translated to the shop's language
          examples:
            - Was the product packaging damaged upon arrival?
        translated_answer:
          type: string
          nullable: true
          title: Translated Answer
          description: >-
            Answer translated to the shop's language (if answer is selected by
            the user)
          examples:
            - Yes, it was damaged
      type: object
      required:
        - input_type
        - input_value
      title: UserInput
      description: User input for a claim.
    UserInput-Output:
      properties:
        input_type:
          description: User input for the claim
          examples:
            - selected_answer
        input_value:
          title: Input Value
          description: >-
            Value written by the user or id if the user selected an answer
            depending on input type
          examples:
            - 'yes'
        translated_question:
          title: Translated Question
          description: Question translated to the shop's language
          examples:
            - Was the product packaging damaged upon arrival?
        translated_answer:
          title: Translated Answer
          description: >-
            Answer translated to the shop's language (if answer is selected by
            the user)
          examples:
            - Yes, it was damaged
      type: object
      required:
        - input_type
        - input_value
      title: UserInput
      description: User input for a claim.
    UserInputType:
      type: string
      enum:
        - selected_answer
        - user_answer
      title: UserInputType
      description: Enum for order reference types.
    UserInvitationStatus:
      type: string
      enum:
        - pending
        - accepted
      title: UserInvitationStatus
      description: User invitation status.
    UserInviteCreationDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: Email of the user to invite
          examples:
            - test@example.com
        org_permissions:
          items:
            $ref: '#/components/schemas/UserOrgPermissionDTO'
          type: array
          title: Org Permissions
          description: Organization permissions to grant to the user
          default: []
          examples:
            - - org_slug: my-org
                role: viewer
        is_super_admin:
          type: boolean
          title: Is Super Admin
          description: Whether the user is a super admin
          default: false
        create_org_permission:
          type: boolean
          title: Create Org Permission
          description: >-
            Whether to create organization-level permissions via SSO. When
            False, SSO auto-provisioning is disabled.
          default: false
      type: object
      required:
        - email
      title: UserInviteCreationDTO
      description: User invitation DTO.
    UserOrgPermissionDTO:
      properties:
        org_slug:
          type: string
          title: Org Slug
          description: Organization slug
          examples:
            - my-org
        role:
          $ref: '#/components/schemas/UserRole'
          description: User role in the organization
          examples:
            - viewer
      type: object
      required:
        - org_slug
        - role
      title: UserOrgPermissionDTO
      description: User organization permission DTO.
    UserRole:
      type: string
      enum:
        - admin
        - editor
        - viewer
      title: UserRole
      description: The token permission scopes.
    UserShopPermissionDTO:
      properties:
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug
          examples:
            - my-shop
        role:
          $ref: '#/components/schemas/UserRole'
          description: User role in the shop
          examples:
            - viewer
      type: object
      required:
        - shop_slug
        - role
      title: UserShopPermissionDTO
      description: User shop permission DTO.
    UserUpdateDTO:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: User email (immutable, required to select the user to update)
          examples:
            - test@example.com
        name:
          type: string
          nullable: true
          title: Name
          description: User name
          examples:
            - John Doe
        picture:
          type: string
          nullable: true
          title: Picture
          description: User picture
          examples:
            - https://example.com/picture.png
        is_login:
          type: boolean
          title: Is Login
          description: Whether the user is logging in
          default: false
          examples:
            - false
        newsletter_opt_in:
          type: boolean
          nullable: true
          title: Newsletter Opt In
          description: Whether the user has opted in to the newsletter
        consultation_opt_in:
          type: boolean
          nullable: true
          title: Consultation Opt In
          description: Whether the user has opted in to the consultation
      type: object
      required:
        - email
      title: UserUpdateDTO
      description: User update DTO.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    ValidationErrorDTO:
      properties:
        loc:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
            - type: 'null'
          title: Loc
          description: FastAPI loc validation error field
          examples:
            - - body
              - email
            - email
            - null
        msg:
          type: string
          nullable: true
          title: Msg
          description: FastAPI msg validation error field
          examples:
            - field required
            - invalid email format
            - null
        field:
          type: string
          nullable: true
          title: Field
          description: FastAPI field validation error field
          examples:
            - email
            - order_id
            - null
        type:
          type: string
          nullable: true
          title: Type
          description: FastAPI type validation error field
          examples:
            - value_error
            - type_error
            - missing
            - null
      type: object
      title: ValidationErrorDTO
      description: Unified validation errors schema.
    WebhookCreationDTO:
      properties:
        enabled_events:
          items:
            type: string
          type: array
          title: Enabled Events
          description: >-
            The list of events to enable for this endpoint. `['*']` (the
            default) indicates that all events are enabled.See
            [webhooks](https://docs.gokarla.io/docs/triggers/webhooks) for more
            details on how to subscribe to our different events.
          default:
            - '*'
          examples:
            - - shipments/in_delivery/DELIVERY_ATTEMPTED
              - shipments/delivered
              - claims/created
        secret:
          type: string
          maxLength: 64
          minLength: 16
          nullable: true
          title: Secret
          description: >-
            The secret used to generate webhook signatures. If undefined, we
            will generate one for you.See
            [webhooks](https://docs.gokarla.io/docs/triggers/webhooks) for more
            details on how to validate the webhook request.
          examples:
            - 41013bd9-9072-42cd-9902-66da38361be9
        description:
          type: string
          nullable: true
          title: Description
          description: An optional description for the endpoint
          examples:
            - null
        status:
          $ref: '#/components/schemas/WebhookStatus'
          description: The status of the webhook.
          default: active
          examples:
            - active
        url:
          type: string
          minLength: 1
          format: uri
          title: Url
          description: The URL of the webhook endpoint
          examples:
            - https://example.com/my-webhook-endpoint
      type: object
      required:
        - url
      title: WebhookCreationDTO
      description: The Webhook endpoint to be created.
    WebhookDTO:
      properties:
        enabled_events:
          items:
            type: string
          type: array
          title: Enabled Events
          description: >-
            The list of events to enable for this endpoint. `['*']` (the
            default) indicates that all events are enabled.See
            [webhooks](https://docs.gokarla.io/docs/triggers/webhooks) for more
            details on how to subscribe to our different events.
          default:
            - '*'
          examples:
            - - shipments/in_delivery/DELIVERY_ATTEMPTED
              - shipments/delivered
              - claims/created
        secret:
          type: string
          maxLength: 64
          minLength: 16
          nullable: true
          title: Secret
          description: >-
            The secret used to generate webhook signatures. If undefined, we
            will generate one for you.See
            [webhooks](https://docs.gokarla.io/docs/triggers/webhooks) for more
            details on how to validate the webhook request.
          examples:
            - 41013bd9-9072-42cd-9902-66da38361be9
        description:
          type: string
          nullable: true
          title: Description
          description: An optional description for the endpoint
          examples:
            - null
        status:
          $ref: '#/components/schemas/WebhookStatus'
          description: The status of the webhook.
          default: active
          examples:
            - active
        url:
          type: string
          minLength: 1
          format: uri
          title: Url
          description: The URL of the webhook endpoint
          examples:
            - https://example.com/my-webhook-endpoint
        created_at:
          type: string
          format: date-time
          title: Created At
          description: The date and time the webhook was created
          examples:
            - '2021-01-01T00:00:00Z'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: The date and time the webhook was last updated
          examples:
            - '2021-01-01T00:00:00Z'
        uuid:
          type: string
          format: uuid
          title: Uuid
          description: Unique identifier for the webhook
          examples:
            - 7022541c-62cd-4de3-9fb2-bfdc74bf7834
        shop_slug:
          type: string
          title: Shop Slug
          description: Shop slug that holds the endpoint
      type: object
      required:
        - url
        - created_at
        - updated_at
        - uuid
        - shop_slug
      title: WebhookDTO
      description: The Announcement object to be exchanged with the HTTP clients.
    WebhookSettingsV1:
      properties:
        status:
          $ref: '#/components/schemas/SettingStatus'
          description: Whether the integration is enabled
          default: disabled
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        shipment_group_key:
          $ref: '#/components/schemas/ShipmentGroupKey'
          description: The key to use for the shipment group
          default: shipment_id
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: >-
            Stale event threshold in hours (default: 24 for webhooks, unlike
            other integrations which default to 4)
          default: 24
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: Internal triggers
          default: []
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
      type: object
      title: WebhookSettingsV1
      description: >-
        Schema for webhook settings.


        Inherits status, trigger_delivered_all_events, shipment_group_key,

        stale_event_threshold, internal_triggers, and segments_enabled from
        base.

        Webhooks are always enabled if configured.
    WebhookStatus:
      type: string
      enum:
        - active
        - inactive
      title: WebhookStatus
      description: Webhook Status Type.
    WebhookTriggerSettingsDTO-Input:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: >-
            Stale event threshold in hours (default: 24 for webhooks, unlike
            other integrations which default to 4)
          default: 24
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Input'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: WebhookTriggerSettingsDTO
      description: |-
        Webhook-specific trigger settings for public API.

        Inherits status, trigger_delivered_all_events, stale_event_threshold,
        and segments_enabled from base. Overrides stale_event_threshold default
        from 4 to 24 hours for webhooks.
    WebhookTriggerSettingsDTO-Output:
      properties:
        status:
          type: boolean
          title: Status
          description: Integration enabled status
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          title: Trigger Delivered All Events
          description: Whether to trigger all events
          default: true
        stale_event_threshold:
          type: integer
          title: Stale Event Threshold
          description: >-
            Stale event threshold in hours (default: 24 for webhooks, unlike
            other integrations which default to 4)
          default: 24
        segments_enabled:
          type: boolean
          title: Segments Enabled
          description: Whether to fetch segments
          default: true
        internal_triggers:
          items:
            $ref: '#/components/schemas/InternalTrigger-Output'
          type: array
          title: Internal Triggers
          description: >-
            Internal triggers for this integration (read-only, use dedicated
            endpoints for CRUD operations)
          default: []
      type: object
      required:
        - status
      title: WebhookTriggerSettingsDTO
      description: |-
        Webhook-specific trigger settings for public API.

        Inherits status, trigger_delivered_all_events, stale_event_threshold,
        and segments_enabled from base. Overrides stale_event_threshold default
        from 4 to 24 hours for webhooks.
    WebhookTriggerSettingsUpdateDTO:
      properties:
        status:
          type: boolean
          nullable: true
          title: Status
          description: Toggle integration
          examples:
            - true
        trigger_delivered_all_events:
          type: boolean
          nullable: true
          title: Trigger Delivered All Events
          description: Whether to trigger all events
        stale_event_threshold:
          type: integer
          nullable: true
          title: Stale Event Threshold
          description: Stale event threshold in hours
        segments_enabled:
          type: boolean
          nullable: true
          title: Segments Enabled
          description: Whether to fetch segments
      type: object
      title: WebhookTriggerSettingsUpdateDTO
      description: >-
        Webhook-specific trigger settings update for public API.


        Inherits all optional update fields from base:

        status, trigger_delivered_all_events, stale_event_threshold,
        segments_enabled.
    WebhookUpdateDTO:
      properties:
        description:
          type: string
          nullable: true
          title: Description
          description: An optional description for the endpoint
          examples:
            - null
        status:
          $ref: '#/components/schemas/WebhookStatus'
          nullable: true
          description: The status of the webhook.
          examples:
            - active
        url:
          type: string
          minLength: 1
          format: uri
          nullable: true
          title: Url
          description: The URL of the webhook endpoint
          examples:
            - https://example.com/my-webhook-endpoint
      type: object
      title: WebhookUpdateDTO
      description: The Webhook endpoint to be updated.
    WidgetColorSchemeDTO:
      properties:
        background:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Background
          description: Background color reference from brand palette
        text:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Text
          description: Text color reference from brand palette
        accent:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Accent
          description: Accent color reference (highlights, icons, arrows)
        button_background:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Button Background
          description: Button background color reference
        button_text:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Button Text
          description: Button text color reference
        border:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Border
          description: Border color reference
        secondary_text:
          type: string
          enum:
            - primary_dark
            - primary_light
            - secondary_dark
            - secondary_light
            - background
            - surface
          nullable: true
          title: Secondary Text
          description: Secondary text color reference
      type: object
      title: WidgetColorSchemeDTO
      description: Unified color scheme for widgets using brand palette references.
    WooCommerceWebhookConfigDTO:
      properties:
        delivery_url:
          type: string
          title: Delivery Url
          description: The webhook delivery URL to configure in WooCommerce
          examples:
            - >-
              https://api.gokarla.io/api/woocommerce/orders/hook/create/550e8400-e29b-41d4-a716-446655440000
        webhook_secret:
          type: string
          maxLength: 68
          minLength: 68
          title: Webhook Secret
          description: >-
            The secret to use for HMAC signature verification. This should be
            entered in the 'Secret' field when creating the webhook in
            WooCommerce.
          examples:
            - >-
              wcs_a1b2c3d4e5f6789abcdef0123456789abcdef0123456789abcdef0123456789
      type: object
      required:
        - delivery_url
        - webhook_secret
      title: WooCommerceWebhookConfigDTO
      description: DTO for WooCommerce webhook configuration.
    api__schema__parcel_perform__ExpectedDelivery:
      properties:
        from:
          type: string
          nullable: true
          title: From
          description: The starting date & time of a shipment's expected delivery, if any.
        to:
          type: string
          nullable: true
          title: To
          description: The ending date & time of a shipment's expected delivery, if any.
      type: object
      title: ExpectedDelivery
      description: Expected delivery object schema.
    api__schema__shipment__ExpectedDelivery:
      properties:
        from:
          type: string
          format: date-time
          nullable: true
          title: From
          description: Expected Delivery From
        to:
          type: string
          format: date-time
          nullable: true
          title: To
          description: Expected Delivery To
        updated_at:
          type: string
          format: date-time
          nullable: true
          title: Updated At
          description: Expected Delivery last updated time
        source:
          $ref: '#/components/schemas/ExpectedDeliverySourceEnum'
          nullable: true
          description: Expected Delivery source
      type: object
      title: ExpectedDelivery
      description: Schema for a expected delivery.
    upload:
      properties:
        image:
          type: string
          format: binary
          title: Image
          description: The logo image to upload
      type: object
      required:
        - image
      title: Body_v1.shops.images.upload
  securitySchemes:
    HTTPBasic:
      type: http
      scheme: basic
x-tagGroups:
  - name: Account
    tags:
      - Shop
      - Shop Settings
      - Organization
      - User
  - name: Order & Shipment
    tags:
      - Order
      - Shipment
      - Claim
      - Product
  - name: Marketing
    tags:
      - Campaign
      - Discount
      - Deal
      - Announcement
      - ABTest
  - name: Integrations
    tags:
      - Webhook
      - Shopify
      - WooCommerce
