openapi: 3.1.0
info:
  title: API Documentation
  description: Swagger API documentation with Bearer Token authentication
  version: '1.0'
servers:
  - url: https://v2.api.caraer.com
    description: Production
security:
  - BearerAuthentication: []
tags:
  - name: Auth
    description: >-
      Auth endpoints handle user authentication and session management. They
      support login (email/password), registration, password reset (request and
      reset), email verification (verify and resend), logout, company selection,
      and user profile retrieval (/me). Authentication uses Bearer tokens and
      integrates with the multi-tenant company system, allowing users to access
      multiple companies. The auth system manages user sessions, email
      verification tokens, password reset tokens, and company access. Auth
      endpoints temporarily disable scope violation tracking during
      authentication operations to allow unauthenticated access to
      login/register endpoints.
  - name: Feeds
    description: >-
      Feed endpoints serve XML/RSS feeds for job boards and external
      integrations. Feeds enable syndication of Records (typically vacancies) to
      job aggregators and external systems. Feeds are generated from XML files
      stored on the server and can be accessed publicly or with authentication.
      The feed system enables companies to publish their job listings to
      external job boards, aggregators, and recruitment platforms, expanding the
      reach of their job postings and enabling automated job distribution.
  - name: Sync
    description: >-
      Sync configurations define automated data synchronization mappings between
      CaraerObjects. A Sync specifies how property values from source Records
      should be mapped to target Records, enabling automated data flow between
      different object types. Syncs use Mappings that define source and target
      properties, allowing data to be copied, transformed, or synchronized when
      source Records are created or updated. Syncs are used for data
      integration, automation workflows, and keeping related data in sync across
      the platform. They enable scenarios like automatically creating a Company
      Record when a User Record is created, or syncing Candidate data to an
      external system. Syncs support complex mapping rules and can trigger on
      various Record events.
  - name: Webhooks
    description: >-
      Webhooks are event-driven HTTP callbacks that notify external systems when
      Records are created, updated, deleted, archived, restored, or when
      specific events occur (e.g., FormSubmissionEvent, PropertyValueChanged,
      RelationCreated). Webhooks support filtering to only trigger on Records
      matching specific criteria, retry logic with configurable backoff,
      relation inclusion for sending related Record data, and multiple payload
      formats (LEGACY, structured). Webhooks enable integrations with external
      systems, automation workflows, and real-time data synchronization. They
      can be associated with Apps for third-party integrations and support
      secret-based authentication. Webhooks are essential for building
      event-driven architectures and connecting Caraer with external tools and
      services.
  - name: Relations
    description: >-
      Relations define typed connections between CaraerObjects, enabling
      graph-like data modeling. A Relation specifies how Records of one Object
      can connect to Records of another Object (e.g., "Candidate applies to
      Vacancy", "Company has Employees"). Relations create directed or
      bidirectional relationships between Records, allowing navigation and
      querying of related data. Relations support cardinality, directionality,
      and can be used in filtering, sorting, and querying Records. They enable
      complex data structures where Records reference each other, creating a
      graph database model on top of the object-oriented schema. Relations are
      essential for modeling real-world relationships between entities and
      enable powerful querying capabilities across connected Records.
  - name: WebMenus
    description: >-
      WebMenus define navigation structures for public-facing websites. They
      specify menu items with labels and URLs, locations (header, footer,
      sidebar), environments (production, preview), and can include custom URLs
      or links to Records and Webpages. WebMenus enable dynamic navigation that
      adapts based on published content, allowing websites to automatically
      reflect changes in the data model. Menus can be activated/deactivated,
      organized hierarchically, and support multiple environments for
      preview/testing before production deployment. WebMenus are essential for
      building dynamic, content-driven navigation in career sites and
      public-facing applications.
  - name: Forms
    description: >-
      Forms are dynamic data collection interfaces associated with
      CaraerObjects. They use a grid-based layout system with FormItems
      (GridItems) arranged in rows and columns that can render various field
      types based on Property definitions. Forms support multi-step wizards,
      lead scoring configurations, styling options (standard, underline, plain),
      and form submissions that create Records. Forms enable public-facing data
      collection (e.g., job applications, contact forms, candidate
      registrations) and can be embedded in Webpages. Forms validate input
      against Property validation rules and can include nested forms (inner
      forms) for complex data structures. Form submissions trigger
      FormSubmissionEvents and can create Relations between Records. Forms are
      essential for converting external user input into structured Records in
      the platform.
  - name: File Management
    description: >-
      File endpoints manage file uploads and downloads using S3-compatible
      storage. Files are used for attachments, images, documents, and media in
      Records and Webpages. Files support property format constraints (when used
      with file-type Properties) and access control through scopes. The file
      system provides pre-signed URLs for secure, time-limited access to files,
      supports bulk uploads, and can list files associated with specific
      Records. Files are stored with unique keys and can be deleted when no
      longer needed. The file system enables rich content management, allowing
      Records and Webpages to include images, documents, and other media assets.
  - name: Users
    description: >-
      Users represent authenticated individuals in the system. Users belong to
      one or more Companies and can switch between them. Users can be members of
      Teams, have roles (SUPER_ADMIN, DEVELOPER, etc.) and scopes that determine
      their permissions. Users can have associated Records (if the User trait is
      enabled on an object), enabling user profiles and authentication. Each
      User has access configurations (HAS_ACCESS_TO) per company that define
      scopes, filters, and permissions. Users can request additional
      permissions, reset their permissions to match their team's permissions,
      and manage their own profile data. The User system enables authentication,
      authorization, and user management across the multi-tenant platform.
  - name: Filter
    description: >-
      SavedFilters are reusable filter configurations that users can save and
      share. They encapsulate complex filter criteria for Records, enabling
      quick access to filtered data views without re-entering filter conditions.
      SavedFilters improve UX by allowing users to bookmark common queries
      (e.g., "Active Candidates", "Open Vacancies", "My Applications") and share
      them with team members. Filters can be soft-deleted and restored, and they
      support the same filter capabilities as Views but are stored separately
      for quick access. SavedFilters enable consistent data access patterns
      across teams and reduce the time needed to access frequently-used filtered
      views.
  - name: Views
    description: >-
      Views are saved configurations for displaying Records that define filters,
      sorting, visible properties (show), grouping, calculations, row heights,
      and display traits (table, flow). Views enable users to create custom
      perspectives on data (e.g., "My Active Candidates", "High Priority
      Vacancies", "Recent Applications"). Each View belongs to a CaraerObject
      and specifies how Records of that Object should be displayed. Views can be
      shared with other users, set as default views, and include query strings
      for search functionality. Views support different traits like Table
      (tabular display), Flow (kanban-style workflow), and can include
      calculations for aggregated data. Views improve UX by allowing users to
      bookmark common queries and share them with team members, ensuring
      consistent data presentation across the platform.
  - name: Partner
    description: >-
      Partner endpoints manage partner relationships and integrations. Partners
      may have special access, integrations, or white-label configurations.
      Partner endpoints enable reseller functionality, allowing partners to
      create companies, copy databases, and manage their partner relationships.
      Partners can have reseller relationships with companies, enabling
      multi-level partner structures. The partner system supports database
      copying for white-label deployments and partner-specific company
      management.
  - name: Teams
    description: >-
      Teams are user groups within a Company that enable role-based access
      control and collaboration. Teams can be assigned to Records, enabling
      team-based workflows and permissions. Teams help organize users and manage
      access to data and features. Team members inherit team permissions and
      scopes, allowing administrators to manage access at the team level rather
      than individually. Teams support member management (add/remove members),
      permission reset (applying team permissions to members), and can be used
      in filtering and access control. Teams enable collaborative workflows
      where groups of users work together on Records, with shared permissions
      and access patterns.
  - name: Records
    description: >-
      Records are actual data instances belonging to a CaraerObject. They
      contain property values that conform to the object's schema defined by
      Properties. Records support dynamic relationships via Relations, enabling
      graph-like data modeling where Records can reference and navigate to
      related Records. Records can be filtered, sorted, paginated, and displayed
      in various views (table, flow, page, preview). They support morphing
      (association with multiple objects), soft deletion with restore
      capability, and property parsing for formatted display. Records are the
      core data entities that users create, update, and manage. Each Record has
      a UUID, belongs to a primary Object, can have morph objects (making it
      visible in multiple object contexts), and maintains createdAt/updatedAt
      timestamps. Records enable the platform's dynamic, content-driven data
      management.
  - name: Traits
    description: >-
      Traits are behavioral features that can be added to CaraerObjects to
      extend their functionality without modifying the core schema. Common
      traits include Flow (kanban-style workflow management), Table (tabular
      data display with sorting and filtering), Page (enables Records to have
      public-facing Webpages), and User (enables user authentication and user
      profile Records). Traits are composable - an Object can have multiple
      traits enabled simultaneously. Traits extend object functionality by
      adding specific behaviors, UI components, and capabilities. For example,
      the Flow trait adds workflow state management, the Table trait adds list
      view capabilities, and the Page trait enables CMS functionality. Traits
      enable flexible feature composition where objects can be customized with
      different capabilities based on business needs.
  - name: ConfigController
    description: >-
      Config endpoints provide frontend configuration including branding,
      feature flags, and platform settings. Configuration is company-specific
      and enables customization of the platform UI and behavior. The config
      endpoint returns settings that the frontend needs to render the
      application correctly, including company branding, available features, and
      platform-specific configurations. Configuration values are determined at
      runtime based on the authenticated user's selected company and their
      access permissions.
  - name: Developer
    description: >-
      Dev endpoints provide developer utilities for testing, debugging, and
      development. These endpoints may include test data generation, error
      simulation, database query execution, progress tracking via Server-Sent
      Events (SSE), and development tools. Dev endpoints are typically
      restricted to users with DEVELOPER role and are intended for development
      and testing purposes only. They enable developers to test functionality,
      debug issues, and perform administrative tasks during development.
  - name: Webpages
    description: >-
      Webpages are CMS pages associated with Records that enable public-facing
      content. They support dynamic content layouts using PageContent
      structures, preview and production environments, scheduled publishing
      (publishAt/unpublishAt), SEO metadata (title, excerpt, slug, image),
      custom CSS and JavaScript, and sidebar previews. Webpages are used to
      create career sites, landing pages, job detail pages, and other
      public-facing content. They integrate with Forms for data collection and
      Previews for displaying related Records. Webpages can be
      published/unpublished, support environment-specific content (preview vs
      production), and maintain publication timestamps. The Webpage system
      enables dynamic, data-driven public websites where content is managed
      through Records and automatically rendered as HTML pages.
  - name: Property
    description: >-
      Properties define the schema and field definitions for CaraerObjects. A
      Property specifies the data type (string, number, date, boolean, etc.),
      format (text, email, select, multi-select, linked, file, etc.), validation
      rules (required, unique, character limits, etc.), and display options
      (label, description, icon, groups). Properties determine what data Records
      can store, how it's validated, how it's displayed in forms and views, and
      how it can be searched. Each Property belongs to a CaraerObject and
      defines one field in that object's schema. Properties support various
      formats including linked properties (relationships to other Records), file
      uploads, rich text, and custom option lists. Properties are immutable once
      created to maintain data integrity, and they can be organized into groups
      for better UX. The Property system enables dynamic, schema-on-read data
      modeling where object structures can be customized per company without
      code changes.
  - name: Applications
    description: >-
      Apps are third-party integrations and extensions that extend Caraer
      functionality. They can provide additional features, connect to external
      services, include Webhooks for event handling, and offer custom UI
      components through AppBars. Apps enable the platform ecosystem where
      companies can integrate with their existing tools and workflows. Apps can
      be public (available to all companies) or private (company-specific), have
      pricing models, descriptions, and settings schemas. Apps can include
      Webhooks with rate limiting and secret-based authentication. The App
      system enables extensibility and integration capabilities, allowing the
      platform to connect with external systems and provide additional
      functionality beyond the core platform features.
  - name: Modules
    description: >-
      Modules are reusable page content components (PageContent) that can be
      shared across Webpages. They enable content reusability, template systems,
      and consistent UI components. Modules can be public (shared across all
      companies in the platform) or private (company-specific). Public modules
      are managed by developers and provide common content templates, while
      private modules allow companies to create their own reusable content
      blocks. Modules use the same PageContent structure as Webpages, enabling
      complex layouts with sections, rows, columns, and various content types.
      Modules improve content management efficiency by allowing content creators
      to reuse common components across multiple pages, ensuring consistency and
      reducing duplication.
  - name: Company
    description: >-
      Companies represent multi-tenant organizations in Caraer. Each company has
      its own isolated database, users, objects, Records, and data. Companies
      enable SaaS multi-tenancy where each organization's data is completely
      isolated from others. Companies have settings (branding, configuration),
      subdomains for custom URLs, and can be customized with their own Objects,
      Properties, Forms, and Webpages. Users belong to one or more companies and
      can switch between them. Companies maintain their own access control,
      scopes, and permissions. The Company system enables the platform to serve
      multiple organizations while maintaining strict data isolation and
      allowing each company to customize the platform to their needs.
  - name: Objects
    description: >-
      CaraerObjects are schema definitions for dynamic domain entities (e.g.,
      "Candidate", "Vacancy", "Company"). They define the structure and behavior
      of Records through Properties (field definitions), Relations (connections
      to other objects), Views (display configurations), and Traits (behavioral
      features like Flow, Table, Webpage, User). Objects enable a flexible,
      schema-on-read data model where entities can be customized per company
      without code changes. Each Object has a name (lowercase identifier), label
      (display name), plural form, description, icon, and can be organized into
      groups. Objects can have traits that add specific behaviors: Flow enables
      kanban-style workflows, Table provides tabular data views, Webpage allows
      Records to have public-facing pages, and User enables authentication and
      user profiles. Objects are the foundation of the platform's dynamic data
      modeling system.
paths:
  /api/v2/webpages/{uuid}:
    get:
      tags:
        - Webpages
      summary: Get webpage details
      description: >-
        Retrieves detailed information for a webpage identified by its UUID.
        Optionally, the webpage title is 'smartened' if the smartened parameter
        is true.
      operationId: getWebpage
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: smartened
          in: query
          required: false
          schema:
            type: boolean
            default: false
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: preview
      responses:
        '200':
          description: Webpage retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebpageDTO'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
    put:
      tags:
        - Webpages
      summary: Update a webpage
      description: >-
        Updates an existing webpage identified by its UUID using the provided
        webpage details. Returns an UpdateResponse containing the updated
        webpage as a WebpageDTO. Validation: Webpage fields are validated
        according to the Webpage validation rules. Required fields and format
        constraints are enforced.
      operationId: updateWebpage
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: preview
      requestBody:
        description: Webpage details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebpageDTO'
        required: true
      responses:
        '200':
          description: Webpage updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/{uuid}/unpublish:
    put:
      tags:
        - Webpages
      summary: Unpublish a webpage
      description: >-
        Unpublishes a webpage by its UUID. Optionally, an unpublishAt timestamp
        (in seconds) may be provided. Returns an UpdateResponse containing the
        unpublished webpage details.
      operationId: unpublishWebpage
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: unpublishAt
          in: query
          required: false
          schema:
            type: string
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: production
      responses:
        '200':
          description: Webpage unpublished successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/{uuid}/publish:
    put:
      tags:
        - Webpages
      summary: Publish a webpage
      description: >-
        Publishes a webpage by its UUID. Optionally, a publishAt timestamp (in
        seconds) may be provided. Returns an UpdateResponse containing the
        published webpage details.
      operationId: publishWebpage
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: publishAt
          in: query
          required: false
          schema:
            type: string
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: production
      responses:
        '200':
          description: Webpage published successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webmenus/{uuid}:
    get:
      tags:
        - WebMenus
      summary: Show web menu
      description: Show web menu
      operationId: getWebMenu
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Web menu shown successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - WebMenus
      summary: Update web menu
      description: Update web menu
      operationId: updateWebMenu
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebMenuDTO'
        required: true
      responses:
        '200':
          description: Web menu updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - WebMenus
      summary: Delete web menu
      description: Delete web menu
      operationId: deleteWebMenu
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Web menu deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - WebMenus
      summary: Restore web menu
      description: Restore web menu
      operationId: patchWebMenu
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Web menu restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/sync/{uuid}:
    get:
      tags:
        - Sync
      summary: Get a sync
      description: >-
        Retrieves a sync by its UUID. Returns a SyncDTO containing the sync
        details.
      operationId: getSync
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Sync data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncDTO'
        required: true
      responses:
        '200':
          description: Sync fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncDTO'
        '400':
          description: Invalid sync data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Sync
      summary: Update a sync
      description: >-
        Updates an existing sync. Returns a UpdateResponse containing the
        updated sync details.
      operationId: updateSync
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Sync data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncDTO'
        required: true
      responses:
        '200':
          description: Sync updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid sync data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Sync
      summary: Delete a sync
      description: >-
        Deletes an existing sync. Returns a DeleteResponse containing the
        deleted sync details.
      operationId: deleteSync
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Sync data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncDTO'
        required: true
      responses:
        '200':
          description: Sync deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          description: Invalid sync data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/{relationUuid}/connection/{from}/{to}:
    put:
      tags:
        - Relations
      summary: Add a connection to a relation
      description: >-
        Creates a connection between two objects for a given relation. The
        'from' and 'to' UUIDs identify the objects to connect.
      operationId: addConnection
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
        - name: from
          in: path
          required: true
          schema:
            type: string
        - name: to
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Connection created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: One or more entities not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Relations
      summary: Delete a connection from a relation
      description: >-
        Deletes a connection between two objects for a given relation using the
        specified UUIDs.
      operationId: deleteConnection
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
        - name: from
          in: path
          required: true
          schema:
            type: string
        - name: to
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Connection deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: One or more entities not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/updateIndices:
    put:
      tags:
        - Relations
      summary: Update relation indices
      description: >-
        Updates the indices for relations. The request body should contain a
        mapping of relation UUIDs to their new index values. Returns a
        SuccessResponse containing the updated relation objects.
      operationId: updateIndices
      requestBody:
        description: Mapping of relation UUIDs to new index values
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Indices updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input provided
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{objectName}/{uuid}:
    put:
      tags:
        - Records
      summary: Update a record
      description: >-
        Updates a record's details identified by its UUID. The record data is
        provided as a RecordDTO. Optional parameters 'parse' and 'ignoreErrors'
        control additional processing. Returns an UpdateResponse with the
        updated record. Validation: Record properties are validated according to
        the property rules defined for the object. Each property may have
        validation rules such as required, type constraints, character limits,
        uniqueness, etc.
      operationId: update
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: objectName
          in: path
          required: true
          schema:
            type: string
        - name: parse
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: ignoreErrors
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Record data to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordDTO'
        required: true
      responses:
        '200':
          description: Record updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{uuid}:
    get:
      tags:
        - Objects
      summary: Get object by UUID
      description: >-
        Fetches a single object by its UUID. Optional parameters determine
        whether to include views, properties, and relations in the response.
      operationId: getObject
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: views
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: properties
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: relations
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      responses:
        '200':
          description: Object fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Object not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Objects
      summary: Update object by UUID
      description: >-
        Updates an existing object identified by its UUID with new details.
        Optional parameters determine if views, properties, and relations should
        be included in the response. Validation rules: label (required, must be
        a string, maximum 32 characters), plural (required, must be a string,
        maximum 32 characters), name (required, must be a string, must be
        lowercase, must be unique, must match name pattern (lowercase letters,
        numbers, underscores), cannot be changed after creation), description
        (optional, maximum 255 characters), groups (required, must be an array
        of string, no duplicate values allowed), showInMenu (required, must be a
        boolean).
      operationId: updateObject
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: views
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: properties
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: relations
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Updated details of the object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaraerObjectDTO'
        required: true
      responses:
        '200':
          description: Object updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Object not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Objects
      summary: Delete object by UUID
      description: Deletes a specific object identified by its UUID.
      operationId: deleteObject
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Object deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Object not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Objects
      summary: Restore object by UUID
      description: >-
        Restores a soft-deleted object identified by its UUID. Returns the
        restored object wrapped in a RestoreResponse.
      operationId: patchObject
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Object restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '404':
          description: Object not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/views/{viewUuid}:
    get:
      tags:
        - Views
      summary: Get view details
      description: >-
        Retrieves detailed information for a view identified by its UUID for the
        specified object. Returns a ShowResponse containing the ViewDTO.
      operationId: getView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: viewUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: View retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: View not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Views
      summary: Update an existing view
      description: >-
        Updates the details of an existing view identified by its UUID for the
        specified object. The request body must contain the updated view details
        as a ViewDTO. Returns an UpdateResponse with the updated view data.
      operationId: updateView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: viewUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Updated view details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewDTO'
        required: true
      responses:
        '200':
          description: View updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: View not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Views
      summary: Delete a view
      description: >-
        Deletes the view identified by its UUID from the specified object.
        Returns a DeleteResponse confirming the deletion.
      operationId: deleteView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: viewUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: View deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: View not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Views
      summary: Restore a deleted view
      description: >-
        Restores a soft-deleted view identified by its UUID for the specified
        object. Returns a RestoreResponse containing the restored view details.
      operationId: patchView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: viewUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: View restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '404':
          description: View not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/views/{viewUuid}/favorite:
    put:
      tags:
        - Views
      summary: Toggle view favorite status
      description: >-
        Toggles the favorite status of the specified view. Returns an
        UpdateResponse containing the updated view details.
      operationId: favoriteView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: viewUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: View favorite status updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '404':
          description: View not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/views/updateIndices:
    put:
      tags:
        - Views
      summary: Update view indices
      description: >-
        Updates the indices for views associated with the specified object. The
        request body must include a mapping of view UUIDs to their new index
        values. Returns a SuccessResponse with the updated view DTOs.
      operationId: updateIndices_1
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Mapping of view UUIDs to new index values
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: View indices updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input provided
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/properties/{propertyUuid}:
    get:
      tags:
        - Property
      summary: Fetch a specific property
      description: >-
        Retrieves details of a property by its UUID and associates it with its
        parent object. Returns a ShowResponse containing a PropertyDTO object
        with complete property details.
      operationId: getProperty
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: propertyUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Property not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Property
      summary: Update an existing property
      description: >-
        Updates the details of an existing property for a specific object. The
        property details are provided via SavePropertyDTO, and the property is
        identified by its UUID. Returns an UpdateResponse containing the updated
        property as a PropertyDTO. Validation rules: name (required, must be
        unique, must be lowercase, must match name pattern (lowercase letters,
        numbers, underscores), cannot be changed after creation), label
        (required), description (maximum 255 characters), type (required, must
        be one of valid PropertyTypes, cannot be changed after creation), format
        (required, must be one of valid PropertyFormats, cannot be changed after
        creation), rules (required, must be an array of string).
      operationId: updateProperty
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: propertyUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Updated property details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavePropertyDTO'
        required: true
      responses:
        '200':
          description: Property updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Property not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Property
      summary: Delete a property
      description: >-
        Deletes a property from the specified object, identified by the property
        UUID. Returns a DeleteResponse containing the deleted property's
        details.
      operationId: deleteProperty
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: propertyUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Property not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Property
      summary: Restore a deleted property
      description: >-
        Restores a soft-deleted property identified by its UUID. Returns a
        RestoreResponse containing the restored property's details as a
        PropertyDTO.
      operationId: patchProperty
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: propertyUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '404':
          description: Property not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/properties/updateIndices:
    put:
      tags:
        - Property
      summary: Update property indices
      description: >-
        Updates the indices for properties of a specific object. The request
        body should contain a mapping between property UUIDs and their new index
        values. Returns a SuccessResponse containing a list of updated
        PropertyDTO objects.
      operationId: updateIndices_2
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Mapping of property UUIDs to new index values
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Indices updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input provided
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/updateIndices:
    put:
      tags:
        - Objects
      summary: Update object indices
      description: >-
        Updates indices of objects based on the provided mapping. The request
        body should contain a mapping of object UUIDs to index values. Optional
        request parameters determine if views, properties, and relations should
        be included in the response.
      operationId: updateIndices_3
      parameters:
        - name: views
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: properties
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: relations
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Mapping of object indices
        content:
          application/json:
            schema:
              type: string
              example:
                uuid1: 1
                uuid2: 2
        required: true
      responses:
        '200':
          description: Indices updated successfully
          content:
            application/json: {}
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/{formUuid}:
    get:
      tags:
        - Forms
      summary: Get form by UUID
      description: >-
        Retrieves a specific form by its UUID. Returns the details of the form
        in a FormDTO object wrapped in a ShowResponse.
      operationId: getForm
      parameters:
        - name: formUuid
          in: path
          description: UUID of the form to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the form
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Form not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Forms
      summary: Update an existing form
      description: >-
        Updates an existing form identified by its UUID with the provided data.
        The request body should include the updated fields in a FormDTO. Returns
        the updated form wrapped in an UpdateResponse. Validation: Form fields
        are validated according to the Form validation rules. Required fields
        and format constraints are enforced.
      operationId: updateForm
      parameters:
        - name: formUuid
          in: path
          description: UUID of the form to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormDTO'
        required: true
      responses:
        '200':
          description: Form successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Form not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Forms
      summary: Delete a form
      description: >-
        Deletes a form identified by its UUID. On success, returns the deleted
        form's data wrapped in a DeleteResponse.
      operationId: deleteForm
      parameters:
        - name: formUuid
          in: path
          description: UUID of the form to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Form successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '401':
          description: Unauthorized access
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Form not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/filters/{filterUuid}:
    get:
      tags:
        - Filter
      summary: Fetch a specific saved filter
      description: Retrieves details of a saved filter by its UUID.
      operationId: getFilter
      parameters:
        - name: filterUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Filter retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Filter not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Filter
      summary: Update an existing saved filter
      description: Updates an existing saved filter identified by its UUID.
      operationId: updateFilter
      parameters:
        - name: filterUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Updated saved filter details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedFilterDTO'
        required: true
      responses:
        '200':
          description: Filter updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Filter not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Filter
      summary: Delete a saved filter
      description: Soft deletes a saved filter identified by its UUID.
      operationId: deleteFilter
      parameters:
        - name: filterUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Filter deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Filter not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Filter
      summary: Restore a deleted saved filter
      description: Restores a soft-deleted saved filter identified by its UUID.
      operationId: restoreFilter
      parameters:
        - name: filterUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Filter restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '404':
          description: Filter not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/{uuid}/settings:
    put:
      tags:
        - Applications
      summary: Save settings for an application
      description: >-
        Updates the application specified by its UUID with the provided
        configuration settings. Returns the updated application details as a
        ShowResponse wrapping an AppDTO.
      operationId: saveAppSettings
      parameters:
        - name: uuid
          in: path
          description: UUID of the application to save settings for
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppRequest'
            encoding:
              request:
                contentType: '*/*'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
      security:
        - BearerAuthentication: []
  /api/v2/apps/public/{uuid}:
    get:
      tags:
        - Applications
      summary: Get a public app (creator view)
      description: >-
        Gets the full app for the creator, including appPublish, appBars,
        details, and pricing. Returns AppCreatorDTO with everything under App.
      operationId: getPublicApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the public app to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the public app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Public app not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    put:
      tags:
        - Applications
      summary: Update a public app (creator edit)
      description: >-
        Updates a public app with the full creator payload (label, description,
        details, pricing, settingsSchema, appBars). Send the entire
        AppCreatorDTO as returned by GET. Returns the updated app as
        AppCreatorDTO.
      operationId: updatePublicApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the public app to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppCreatorDTO'
        required: true
      responses:
        '200':
          description: Successfully updated the public app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '403':
          description: You are not allowed to update this app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Public app not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/webpages/{uuid}/uploadFile:
    post:
      tags:
        - Webpages
      summary: Upload a file for a webpage
      description: >-
        Uploads a file to S3 storage under the specified webpage's attachments
        folder, sets the file's ACL to public, and returns the public URL for
        the file in a SuccessResponse.
      operationId: uploadFile
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: File to upload
        content:
          multipart/form-data:
            schema:
              type: string
              format: binary
        required: true
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid file provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/{uuid}/copy/{fromEnvironment}/{toEnvironment}:
    post:
      tags:
        - Webpages
      summary: Copy a webpage from one environment to another
      description: >-
        Copies a webpage by its UUID from one environment to another. Returns a
        CreateResponse containing the copied webpage as a WebpageDTO.
      operationId: copyWebpage
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: fromEnvironment
          in: path
          required: true
          schema:
            type: string
        - name: toEnvironment
          in: path
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Webpage copied successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/uploadFile:
    post:
      tags:
        - Webpages
      summary: Upload a file
      description: >-
        Uploads a file to S3 storage and returns the public URL for the file in
        a SuccessResponse.
      operationId: uploadFile_1
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
              required:
                - file
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid file provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/template/{objectName}/{environment}:
    get:
      tags:
        - Webpages
      summary: Get template webpage
      description: >-
        Retrieves the template webpage for the given object name by querying the
        TemplateWebpage associated with it. Returns a ShowResponse containing
        TemplateWebpageDTO data.
      operationId: getTemplateWebpage
      parameters:
        - name: objectName
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Template webpage retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Template webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
    post:
      tags:
        - Webpages
      summary: Create or update template webpage
      description: >-
        Creates a new or updates an existing template webpage for the specified
        object. An event is published after the template is changed. Returns an
        UpdateResponse or CreateResponse with the template webpage details.
      operationId: createOrUpdateTemplateWebpage
      parameters:
        - name: objectName
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Template webpage details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TemplateWebpageDTO'
        required: true
      responses:
        '200':
          description: Template webpage updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '201':
          description: Template webpage created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '404':
          description: Template webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/public/previews/{pageUuid}/{componentUuid}/{layout}:
    post:
      tags:
        - Webpages
      summary: Get previews for a public webpage
      description: >-
        Retrieves a list of previews for a public webpage identified by its
        UUID. Returns a PaginationResponse containing PreviewDTO objects.
      operationId: getPublicPreviews
      parameters:
        - name: X-Caraer-Subdomain
          in: header
          required: true
          schema:
            type: string
        - name: X-Caraer-Environment
          in: header
          required: false
          schema:
            type: string
            default: production
        - name: pageUuid
          in: path
          required: true
          schema:
            type: string
        - name: componentUuid
          in: path
          required: true
          schema:
            type: string
        - name: layout
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json: {}
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponsePreviewDTO'
  /api/v2/webpages/:
    post:
      tags:
        - Webpages
      summary: Create a new webpage
      description: >-
        Creates a new webpage using the provided webpage details. Returns a
        CreateResponse containing the newly created webpage as a WebpageDTO.
        Validation: Webpage fields are validated according to the Webpage
        validation rules. Required fields and format constraints are enforced.
      operationId: createWebpage
      parameters:
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: preview
      requestBody:
        description: Webpage details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebpageDTO'
        required: true
      responses:
        '201':
          description: Webpage created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webmenus:
    post:
      tags:
        - WebMenus
      summary: Create web menu
      description: Create web menu
      operationId: createWebMenu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebMenuDTO'
        required: true
      responses:
        '200':
          description: Web menu created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/webmenus/index:
    post:
      tags:
        - WebMenus
      summary: Index web menus
      description: Index web menus
      operationId: indexWebMenus
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Web menus indexed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/webhooks/index:
    post:
      tags:
        - Webhooks
      summary: Fetch webhooks for the current company
      description: >-
        Retrieves a paginated list of webhooks associated with the authenticated
        user's selected company. The list can be filtered and sorted using the
        provided pagination request.
      operationId: getWebhooks
      requestBody:
        description: Pagination request for webhooks
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Webhooks fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/webhooks/index/{topic}:
    post:
      tags:
        - Webhooks
      summary: Fetch webhooks by topic
      description: >-
        Retrieves a paginated list of webhooks that match the specified topic
        substring for the authenticated user's company.
      operationId: getWebhooks_1
      parameters:
        - name: topic
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Pagination request for webhooks
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Webhooks for the specified topic fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/webhooks/apps/{appUuid}:
    post:
      tags:
        - Webhooks
      summary: Create a webhook for an app
      description: >-
        Creates a new webhook for the specified app using normal bearer
        authentication. The app must be installed for the authenticated user's
        selected company. The request body must contain the webhook's secret,
        topic, and URL.
      operationId: createAppWebhook
      parameters:
        - name: appUuid
          in: path
          description: UUID of the app to create the webhook for
          required: true
          schema:
            type: string
      requestBody:
        description: Webhook details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscribeWebhookDTO'
        required: true
      responses:
        '200':
          description: Webhook created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input provided or app not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: App not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/webhooks/:
    post:
      tags:
        - Webhooks
      summary: Create a new webhook
      description: >-
        Creates a new webhook for the authenticated user's selected company. The
        request body must contain the webhook's secret, topic, and URL.
      operationId: createWebhook
      requestBody:
        description: Webhook details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscribeWebhookDTO'
        required: true
      responses:
        '200':
          description: Webhook created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/traits/{objectUuid}/{traitName}:
    get:
      tags:
        - Traits
      summary: Fetch a specific trait for an object
      description: >-
        Retrieves details of a specific trait associated with the specified
        object, identified by the trait name. Returns a ShowResponse containing
        the TraitDTO. If the trait is not found, a NotFoundError is thrown.
      operationId: getTrait
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: traitName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Trait retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Trait not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    post:
      tags:
        - Traits
      summary: Create or update a trait for an object
      description: >-
        Creates a new trait or updates an existing trait for the specified
        object. The trait name is provided in the URL, and trait details are
        supplied in the request body as a JSON map. If a trait with the
        specified name exists, it will be updated; otherwise, a new trait is
        created. Returns a CreateResponse containing the TraitDTO of the created
        or updated trait.
      operationId: createTrait
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: traitName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Trait details as a JSON map
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '201':
          description: Trait created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Trait type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    delete:
      tags:
        - Traits
      summary: Delete a trait from an object
      description: >-
        Removes a trait identified by its name from the specified object.
        Returns a DeleteResponse confirming that the trait has been removed.
      operationId: deleteTrait
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
        - name: traitName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Trait removed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Trait not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/sync/index:
    post:
      tags:
        - Sync
      summary: Fetch paginated syncs
      description: >-
        Retrieves a paginated list of syncs. Returns a PaginationResponse
        containing SyncDTO objects based on the provided pagination criteria.
      operationId: getSyncs
      requestBody:
        description: Pagination request for syncs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Syncs fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/sync/:
    post:
      tags:
        - Sync
      summary: Create a sync
      description: >-
        Creates a new sync. Returns a CreateResponse containing the created sync
        details.
      operationId: createSync
      requestBody:
        description: Sync data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncDTO'
        required: true
      responses:
        '200':
          description: Sync created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid sync data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/{objectUuid}:
    post:
      tags:
        - Relations
      summary: Create or update a relation
      description: >-
        Creates a new relation or updates an existing one for the specified
        object. If a relation with the same name exists, it is updated;
        otherwise, a new relation is created. Returns an UpdateResponse if
        updated or a CreateResponse if created.
      operationId: createRelationOrUpdate
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Relation data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RelationDTO'
        required: true
      responses:
        '200':
          description: Relation updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResponse'
        '201':
          description: Relation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/index:
    post:
      tags:
        - Relations
      summary: Fetch paginated relations
      description: >-
        Retrieves a paginated list of relations. Returns a PaginationResponse
        containing RelationDTO objects based on the provided pagination
        criteria.
      operationId: getRelations
      requestBody:
        description: Pagination request for relations
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Relations fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/index/{objectUuid}:
    post:
      tags:
        - Relations
      summary: Fetch relations for a specific object
      description: >-
        Retrieves a paginated list of relations associated with the specified
        object UUID. The relations are filtered using a custom Cypher query
        based on the object's name.
      operationId: getRelationsByObject
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Pagination request for relations
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Relations fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '404':
          description: Object not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/index/{fromObjectUuid}/{toObjectUuid}:
    post:
      tags:
        - Relations
      summary: Get all relations between two objects
      description: >-
        Retrieves all relations between two objects based on the provided object
        UUIDs.
      operationId: getRelationsBetweenObjects
      parameters:
        - name: fromObjectUuid
          in: path
          required: true
          schema:
            type: string
        - name: toObjectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Relations retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '404':
          description: One or more objects not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{uuid}/morph:
    post:
      tags:
        - Records
      summary: Morph a record
      description: >-
        Morphs a record identified by its UUID to one or more objects. You can
        use this to move a record or add it to another object so it'll be
        visible in the new object.Returns a SuccessResponse confirming that the
        record has been morphed.
      operationId: morph
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MorphRecordRequest'
        required: true
      responses:
        '200':
          description: Record morphed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: Record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{objectName}:
    post:
      tags:
        - Records
      summary: Create a new record
      description: >-
        Creates a new record for the specified object using the provided
        RecordDTO data. Optional parameters 'parse' and 'ignoreErrors' control
        additional processing. Returns a CreateResponse with the newly created
        record. Validation: Record properties are validated according to the
        property rules defined for the object. Each property may have validation
        rules such as required, type constraints, character limits, uniqueness,
        etc.
      operationId: create
      parameters:
        - name: objectName
          in: path
          required: true
          schema:
            type: string
        - name: parse
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: ignoreErrors
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Record data to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordDTO'
        required: true
      responses:
        '201':
          description: Record created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{objectName}/createOrUpdate:
    post:
      tags:
        - Records
      summary: Create or update a record
      description: >-
        Creates a new record or updates an existing one based on uniqueness
        criteria for the given object. If a matching record exists, it is
        updated; otherwise, a new record is created. Returns a CreateResponse or
        UpdateResponse with the record details. Validation: Record properties
        are validated according to the property rules defined for the object.
        Each property may have validation rules such as required, type
        constraints, character limits, uniqueness, etc.
      operationId: createOrUpdate
      parameters:
        - name: objectName
          in: path
          required: true
          schema:
            type: string
        - name: parse
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: ignoreErrors
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Record data to create or update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordDTO'
        required: true
      responses:
        '200':
          description: Record updated successfully
          content:
            application/json: {}
        '201':
          description: Record created successfully
          content:
            application/json: {}
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/search:
    post:
      tags:
        - Records
      summary: Search records
      description: >-
        Performs a search for records based on the specified criteria in the
        request body. Optional query parameters 'deleted' and 'parse' can modify
        the search behavior. Returns a PaginationResponse containing matching
        records.
      operationId: search
      parameters:
        - name: deleted
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: parse
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Search criteria
        content:
          application/json:
            schema:
              type: string
              example:
                query: ''
                limit: 3
                objectUuid: null
                recordUuid: null
                relationUuid: null
                deleted: false
                preview: null
                parse: false
        required: true
      responses:
        '200':
          description: Search completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid search parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/relations/{fromUuid}/{relationName}/{toUuid}:
    post:
      tags:
        - Records
      summary: Create a relation between records
      description: >-
        Creates a relation between two records identified by their UUIDs using
        the provided relation name. A 'primary' flag can be set to indicate if
        the relation is primary.
      operationId: createRelation
      parameters:
        - name: fromUuid
          in: path
          required: true
          schema:
            type: string
        - name: relationName
          in: path
          required: true
          schema:
            type: string
        - name: toUuid
          in: path
          required: true
          schema:
            type: string
        - name: primary
          in: query
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Relation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: One or more entities not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Records
      summary: Delete a relation between records
      description: >-
        Deletes a relation between two records identified by their UUIDs and the
        relation name.
      operationId: deleteRelation
      parameters:
        - name: fromUuid
          in: path
          required: true
          schema:
            type: string
        - name: relationName
          in: path
          required: true
          schema:
            type: string
        - name: toUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: One or more entities not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/index:
    post:
      tags:
        - Records
      summary: Fetch paginated records
      description: >-
        Retrieves a paginated list of records. If a preview type is specified in
        the request, returns records formatted for preview; otherwise, returns
        full record details. An optional 'parse' query parameter can affect the
        returned data.
      operationId: index
      parameters:
        - name: parse
          in: query
          required: false
          schema:
            type: string
      requestBody:
        description: Pagination request for records
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Records fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/index/table:
    post:
      tags:
        - Records
      summary: Fetch records for table view
      description: >-
        Retrieves records formatted for table display. Returns a
        PaginationResponse containing records formatted for table view.
      operationId: indexTable
      requestBody:
        description: Pagination request for table view
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Records for table view fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/index/page:
    post:
      tags:
        - Records
      summary: Fetch records for page view
      description: >-
        Retrieves a paginated list of webpages for page view. The search query
        is temporarily removed from the pagination request and passed
        separately. Returns a PaginationResponse containing WebpageDTO objects.
      operationId: indexPage
      parameters:
        - name: environment
          in: query
          required: false
          schema:
            type: string
            default: preview
      requestBody:
        description: Pagination request for page view
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Webpages fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/index/flow:
    post:
      tags:
        - Records
      summary: Fetch records for flow view
      description: >-
        Retrieves a list of records formatted for flow view based on a specific
        property. If the property is not provided in the request, defaults to
        the 'status' property of the main object. Returns a SuccessResponse
        containing the flow records.
      operationId: indexFlow
      requestBody:
        description: Pagination request for flow view
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Records for flow view fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Required property not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{uuid}/previews/{name}:
    get:
      tags:
        - Objects
      summary: Get specific preview by name
      description: >-
        Fetches a preview for an object by the object's UUID and the preview
        name. Returns the preview data wrapped in a ShowResponse.
      operationId: getPreview
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched preview
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Object or preview not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    post:
      tags:
        - Objects
      summary: Save object preview
      description: >-
        Creates or updates a preview for a specific object. The preview type is
        determined by the 'name' path variable. Depending on the preview type
        (e.g., 'detail', 'flow', 'pill', or 'page'), the request body will be
        mapped to the corresponding PreviewDTO and converted to the appropriate
        Preview model.
      operationId: savePreview
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Preview data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewDTO'
        required: true
      responses:
        '201':
          description: Successfully created or updated preview
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '404':
          description: Object or preview not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/views/index:
    post:
      tags:
        - Views
      summary: Fetch paginated views for an object
      description: >-
        Retrieves a paginated list of views for the specified object. A custom
        Cypher query is used to filter views based on the object's UUID. Returns
        a PaginationResponse containing ViewDTO objects.
      operationId: getViews
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Pagination request details (limit, page, filters, sort, query)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Views fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/views/:
    post:
      tags:
        - Views
      summary: Create a new view
      description: >-
        Creates a new view for the specified object. The request body must
        contain the view details as a ViewDTO. Returns a CreateResponse
        containing the newly created view as a ViewDTO.
      operationId: createView
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: View details to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewDTO'
        required: true
      responses:
        '201':
          description: View created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/properties/index:
    post:
      tags:
        - Property
      summary: Fetch paginated properties
      description: >-
        Retrieves a paginated list of properties for a given object. Depending
        on the object UUID format, a Cypher query is constructed to filter
        properties belonging to that object. Returns a PaginationResponse
        containing PropertyDTO objects.
      operationId: getProperties
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Pagination details (limit, page, filters, sort, query)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Properties fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid pagination request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/properties/:
    post:
      tags:
        - Property
      summary: Create a new property
      description: >-
        Creates a new property for a specific object using the provided property
        details. The SavePropertyDTO must include necessary details, and the
        object association is determined by the objectUuid path variable.
        Returns a CreateResponse containing the newly created property as a
        PropertyDTO. Validation rules: name (required, must be unique, must be
        lowercase, must match name pattern (lowercase letters, numbers,
        underscores)), label (required), description (maximum 255 characters),
        type (required, must be one of valid PropertyTypes, cannot be changed
        after creation), format (required, must be one of valid PropertyFormats,
        cannot be changed after creation), rules (required, must be an array of
        string).
      operationId: createProperty
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Property details for creation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavePropertyDTO'
        required: true
      responses:
        '201':
          description: Property created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/previews:
    post:
      tags:
        - Objects
      summary: Get all previews over all objects
      description: >-
        Fetches all previews over all objects. Returns a PaginationResponse
        containing a list of preview DTOs.
      operationId: getPreviews
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Successfully fetched previews
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/index:
    post:
      tags:
        - Objects
      summary: Fetch paginated objects
      description: >-
        Fetches a paginated list of objects, optionally including views,
        properties, and/or relations. The request body should contain pagination
        details such as limit, page, filters, sort, and query.
      operationId: getObjects
      parameters:
        - name: views
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: properties
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: relations
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Pagination request details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Objects fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/:
    post:
      tags:
        - Objects
      summary: Create new object
      description: >-
        Creates a new Caraer object using the provided details. Optional request
        parameters specify whether to include views, properties, and relations
        in the response. Validation rules: label (required, must be a string,
        maximum 32 characters), plural (required, must be a string, maximum 32
        characters), name (required, must be a string, must be lowercase, must
        be unique, must match name pattern (lowercase letters, numbers,
        underscores)), description (optional, maximum 255 characters), groups
        (required, must be an array of string, no duplicate values allowed),
        showInMenu (required, must be a boolean).
      operationId: createObject
      parameters:
        - name: views
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: properties
          in: query
          required: false
          schema:
            type: string
            default: 'false'
        - name: relations
          in: query
          required: false
          schema:
            type: string
            default: 'false'
      requestBody:
        description: Details of the object to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaraerObjectDTO'
        required: true
      responses:
        '201':
          description: Object successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/{objectUuid}/index:
    post:
      tags:
        - Forms
      summary: Get forms by object UUID
      description: >-
        Retrieves a paginated list of forms associated with a specific object
        UUID. The endpoint uses a custom Cypher query to match forms linked to
        the object.
      operationId: getFormsByObject
      parameters:
        - name: objectUuid
          in: path
          description: UUID of the object to get forms for
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Successfully retrieved forms for the given object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/public/{companyUuid}/{formUuid}/upload:
    post:
      tags:
        - Forms
      summary: Submit a file
      description: >-
        Submits a file with the provided data. Returns a SuccessResponse upon
        successful submission. 
      operationId: uploadFiles
      parameters:
        - name: companyUuid
          in: path
          required: true
          schema:
            type: string
        - name: formUuid
          in: path
          required: true
          schema:
            type: string
        - name: files
          in: query
          required: true
          schema:
            type: array
            items:
              type: string
              format: binary
      responses:
        '200':
          description: File successfully submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/public/{companyUuid}/{formUuid}/submit:
    post:
      tags:
        - Forms
      summary: Submit a form
      description: >-
        Submits a form with the provided data. Returns a SuccessResponse upon
        successful submission.
      operationId: submit
      parameters:
        - name: companyUuid
          in: path
          required: true
          schema:
            type: string
        - name: formUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormDTO'
        required: true
      responses:
        '200':
          description: Form successfully submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/public/{companyUuid}/index:
    post:
      tags:
        - Forms
      summary: Get all forms for a company
      operationId: getFormsPublic
      parameters:
        - name: companyUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Response'
      security:
        - BearerAuthentication: []
  /api/v2/forms/index:
    post:
      tags:
        - Forms
      summary: Get paginated list of forms
      description: >-
        Retrieves a paginated list of forms based on the provided filters,
        sorting, and search query. This endpoint returns a list of FormDTO
        objects wrapped in a PaginationResponse containing the current page,
        limit, total count, and the forms data.
      operationId: getForms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Successfully retrieved forms list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/:
    post:
      tags:
        - Forms
      summary: Create a new form
      description: >-
        Creates a new form with the provided data. The request body should
        contain a valid FormDTO object. On success, returns the created form as
        a FormDTO wrapped in a CreateResponse. Validation: Form fields are
        validated according to the Form validation rules. Required fields and
        format constraints are enforced.
      operationId: createForm
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormDTO'
        required: true
      responses:
        '201':
          description: Form successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/filters:
    post:
      tags:
        - Filter
      summary: Create a new saved filter
      description: Creates a new saved filter with the provided configuration.
      operationId: createFilter
      requestBody:
        description: Saved filter details for creation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedFilterDTO'
        required: true
      responses:
        '201':
          description: Filter created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/filters/index:
    post:
      tags:
        - Filter
      summary: Fetch paginated saved filters
      description: >-
        Fetches a paginated list of saved filters. The request body should
        contain pagination details such as limit, page, filters, and sort.
      operationId: getFilters
      requestBody:
        description: Pagination request details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Filters fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/files/:
    get:
      tags:
        - File Management
      summary: Download file
      description: >-
        Generates a pre-signed URL to download a file stored in S3-compatible
        storage. The URL expiry time and download behavior can be specified
        using the query parameters.
      operationId: downloadFile
      parameters:
        - name: key
          in: query
          description: The key of the file to download.
          required: true
          schema:
            type: string
            description: The key of the file to download.
            example: file12345
          example: file12345
        - name: expireAfter
          in: query
          description: The URL expiry period in seconds.
          required: false
          schema:
            type: integer
            format: int32
            default: 86400
            description: The URL expiry period in seconds.
            example: 86400
          example: 86400
        - name: download
          in: query
          description: Whether to download the file in the browser.
          required: false
          schema:
            type: boolean
            default: false
            description: Whether to download the file in the browser.
            example: false
          example: false
      responses:
        '200':
          description: File URL generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: File not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    post:
      tags:
        - File Management
      summary: Upload files
      description: >-
        Uploads multiple files to an S3-compatible storage and returns their
        unique keys. The request must contain one or more files in
        multipart/form-data format.
      operationId: uploadFile_2
      requestBody:
        description: List of files to upload.
        content:
          multipart/form-data:
            schema:
              type: array
              format: binary
        required: true
      responses:
        '200':
          description: Files uploaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid input, e.g., file size exceeds the limit.
          content:
            application/json: {}
        '500':
          description: Internal server error.
          content:
            application/json: {}
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - File Management
      summary: Delete file
      description: >-
        Deletes a file from the S3-compatible storage identified by its unique
        key.
      operationId: deleteFile
      parameters:
        - name: key
          in: query
          description: The key of the file to delete.
          required: true
          schema:
            type: string
            description: The key of the file to delete.
            example: file12345
          example: file12345
      responses:
        '200':
          description: File deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: File not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/dev/stream-test:
    post:
      tags:
        - Developer
      summary: Stream progress events
      description: >-
        Streams progress updates to the client using Server-Sent Events (SSE).
        The client must provide a 'count' parameter in the request body to
        indicate the number of events to emit. Each event includes a progress
        percentage, and the stream completes after emitting the specified number
        of events.
      operationId: streamTest
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
        required: true
      responses:
        '200':
          description: Successfully streaming progress events
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SseEmitter'
        '400':
          description: Invalid input provided by the client
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Server error occurred during progress streaming
          content:
            '*/*':
              schema:
                type: string
      security:
        - BearerAuthentication: []
  /api/v2/company/:
    post:
      tags:
        - Company
      summary: Create a new company
      description: >-
        Creates a new company using the provided company details. If a subdomain
        is provided in the request, it is used; otherwise, only the company name
        is used. On success, returns the newly created Company object.
      operationId: createCompany
      requestBody:
        description: The request body containing the company details.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCompanyRequest'
        required: true
      responses:
        '200':
          description: Successfully created the company.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
        '400':
          description: Invalid input provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaraerError'
        '500':
          description: An unexpected error occurred while creating the company.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaraerError'
      security:
        - BearerAuthentication: []
  /api/v2/apps/{uuid}/uninstall:
    post:
      tags:
        - Applications
      summary: Uninstall an application
      description: >-
        Removes the installed application specified by its UUID using the
        provided settings. The request body should contain an AppRequest with
        the uninstallation settings. Returns the updated application details as
        a ShowResponse wrapping an AppDTO.
      operationId: uninstallApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the application to uninstall
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppRequest'
        required: true
      responses:
        '200':
          description: Successfully uninstalled the application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Application not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/{uuid}/rotate:
    post:
      tags:
        - Applications
      summary: Rotate application configurations
      description: >-
        Rotates the configuration or settings for the specified application by
        UUID. On success, returns the updated application details as a
        ShowResponse wrapping an AppDTO.
      operationId: rotateApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the application to rotate configurations
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully rotated application configurations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Application not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/{uuid}/install:
    post:
      tags:
        - Applications
      summary: Install an application
      description: >-
        Installs the application specified by its UUID with optional initial
        configuration settings. Returns the updated application details as a
        ShowResponse wrapping an AppDTO.
      operationId: installApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the application to install
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallAppRequest'
      responses:
        '200':
          description: Successfully installed the application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Application not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/public:
    post:
      tags:
        - Applications
      summary: Create a public app
      description: >-
        Creates a new public app with the provided label and optional
        description. Public apps are automatically published for the creating
        user's company. Returns the created app details as a CreateResponse
        wrapping an AppDTO.
      operationId: createPublicApp
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppCreatorDTO'
        required: true
      responses:
        '200':
          description: Successfully created the public app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/public/{uuid}/submit:
    post:
      tags:
        - Applications
      summary: Submit a public app for review
      description: >-
        Submits a public app specified by its UUID for review. Returns the
        submitted app details as a ShowResponse wrapping an AppDTO.
      operationId: submitPublicApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the public app to submit for review
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully submitted the public app for review
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Public app not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/public/{uuid}/review:
    post:
      tags:
        - Applications
      summary: Review a public app
      description: >-
        Sets review outcome (approve/reject/changes requested), feedback, and
        optional reviewer notes. Returns the updated app details as a
        ShowResponse wrapping an AppDTO.
      operationId: reviewPublicApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the public app to review
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReviewRequest'
        required: true
      responses:
        '200':
          description: Successfully reviewed the public app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Public app not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/private:
    post:
      tags:
        - Applications
      summary: Create a private app
      description: >-
        Creates a new private app with the provided label and optional
        description. Private apps are automatically installed for the creating
        user's company. Returns the created app details as a CreateResponse
        wrapping an AppDTO.
      operationId: createPrivateApp
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePrivateAppRequest'
        required: true
      responses:
        '200':
          description: Successfully created the private app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/index:
    post:
      tags:
        - Applications
      summary: Retrieve a paginated list of applications
      description: >-
        Fetches a paginated and optionally filtered list of applications. The
        list is sorted alphabetically by category and name. On success, returns
        a PaginationResponse containing AppSummaryDTO objects.
      operationId: getApps
      parameters:
        - name: type
          in: query
          required: false
          schema:
            type: string
            default: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginationRequest'
        required: true
      responses:
        '200':
          description: Successfully retrieved the list of applications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/relations/{relationUuid}:
    get:
      tags:
        - Relations
      summary: Get relation details
      description: >-
        Retrieves the details of a relation by its UUID. Returns a ShowResponse
        containing a RelationDTO.
      operationId: getRelation
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Relation not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Relations
      summary: Delete a relation
      description: >-
        Deletes a relation specified by its UUID. Returns a DeleteResponse with
        the deleted relation details.
      operationId: deleteRelation_1
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Relation not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Relations
      summary: Restore a deleted relation
      description: >-
        Restores a soft-deleted relation identified by its UUID. Returns a
        RestoreResponse containing the restored relation details.
      operationId: patchRelation
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '404':
          description: Relation not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{uuid}:
    get:
      tags:
        - Records
      summary: Get record details
      description: >-
        Retrieves detailed information about a record by its UUID. Returns a
        ShowResponse containing the record details.
      operationId: show
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: object
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Record retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    delete:
      tags:
        - Records
      summary: Delete a record
      description: >-
        Deletes a record specified by its UUID. A 'mode' parameter can be
        provided to control the deletion behavior (e.g., archive or permanent).
      operationId: delete
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: mode
          in: query
          required: false
          schema:
            type: string
            default: archive
      responses:
        '200':
          description: Record deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: Record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
    patch:
      tags:
        - Records
      summary: Restore a deleted record
      description: >-
        Restores a soft-deleted record identified by its UUID. Returns a
        SuccessResponse confirming that the record has been restored.
      operationId: patch
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Record restored successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '404':
          description: Record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/webpages/public/{rootSlug}/{slug}:
    get:
      tags:
        - Webpages
      summary: Get a public webpage by slug
      description: >-
        Retrieves a published webpage based on the provided root slug and slug.
        Returns a ShowResponse containing WebpageDTO data.
      operationId: getPublicWebpage
      parameters:
        - name: X-Caraer-Subdomain
          in: header
          required: true
          schema:
            type: string
        - name: X-Caraer-Environment
          in: header
          required: false
          schema:
            type: string
            default: production
        - name: rootSlug
          in: path
          required: true
          schema:
            type: string
        - name: slug
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Webpage retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebpageDTO'
        '404':
          description: Webpage not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/public/getSlugs:
    get:
      tags:
        - Webpages
      summary: Get all public webpage slugs
      description: >-
        Retrieves a list of all webpage slugs for the public site. Returns a
        PaginationResponse containing WebpageMapItemDTO objects.
      operationId: getAllSlugs
      parameters:
        - name: X-Caraer-Subdomain
          in: header
          required: true
          schema:
            type: string
        - name: X-Caraer-Environment
          in: header
          required: false
          schema:
            type: string
            default: production
      responses:
        '200':
          description: Slugs retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/public/getMenus:
    get:
      tags:
        - Webpages
      summary: Fetch public web menus
      description: >-
        Retrieves a list of web menus for the public site. Returns a
        PaginationResponse containing WebMenuDTO objects.
      operationId: getMenus
      parameters:
        - name: X-Caraer-Subdomain
          in: header
          required: true
          schema:
            type: string
        - name: X-Caraer-Environment
          in: header
          required: false
          schema:
            type: string
            default: production
      responses:
        '200':
          description: Menus retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/public/companySettings:
    get:
      tags:
        - Webpages
      summary: Fetch public company settings
      description: >-
        Retrieves the public company configuration for the given subdomain.
        Returns a ShowResponse containing PublicCompanyDTO details.
      operationId: getCompanySettings
      parameters:
        - name: X-Caraer-Subdomain
          in: header
          required: true
          schema:
            type: string
        - name: X-Caraer-Environment
          in: header
          required: false
          schema:
            type: string
            default: production
      responses:
        '200':
          description: Company settings retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimplePublicCompanyDTO'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webpages/environments:
    get:
      tags:
        - Webpages
      summary: Get all environments
      description: Retrieves a list of all environments.
      operationId: getEnvironments
      responses:
        '200':
          description: Environments retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api/v2/webhooks/me:
    get:
      tags:
        - Webhooks
      summary: Get current user's company information
      description: >-
        Retrieves the company information of the authenticated user. The
        response includes public details of the user's selected company.
      operationId: getCompanyInformation
      responses:
        '200':
          description: Successfully retrieved company information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimplePublicCompanyDTO'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/webhooks/formats:
    get:
      tags:
        - Webhooks
      summary: Get available webhook formats
      description: Returns all supported webhook payload formats with their details.
      operationId: getWebhookFormats
      responses:
        '200':
          description: List of available webhook formats
          content:
            application/json: {}
  /api/v2/traits/{objectUuid}:
    get:
      tags:
        - Traits
      summary: Fetch all traits for an object
      description: >-
        Retrieves a list of traits associated with the specified object. Returns
        a paginated response containing TraitDTO objects. The page is set to 0
        by default, with a maximum limit of 100.
      operationId: getTraits
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Traits retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '404':
          description: Object or traits not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/relations/{relationUuid}/{objectUuid}:
    get:
      tags:
        - Relations
      summary: Get relation details for a specific object
      description: >-
        Retrieves a relation by its UUID and associates it with the specified
        object, returning a RelationDTO that includes details from the related
        object.
      operationId: getRelationForObject
      parameters:
        - name: relationUuid
          in: path
          required: true
          schema:
            type: string
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation for object retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Relation or object not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/records/{uuid}/previews/{name}:
    get:
      tags:
        - Records
      summary: Get record preview
      description: >-
        Retrieves a preview for a record specified by its UUID and preview name.
        Returns a ShowResponse containing the preview data.
      operationId: preview
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
        - name: object
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Preview retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Record or preview not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{uuid}/previews:
    get:
      tags:
        - Objects
      summary: Get all previews of an object
      description: >-
        Fetches all previews associated with a specific object. Returns a
        PaginationResponse containing a list of preview DTOs.
      operationId: getPreviews_1
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: false
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Successfully fetched previews
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '404':
          description: Object not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/objects/{objectUuid}/properties/formats:
    get:
      tags:
        - Property
      summary: Retrieve property formats
      description: >-
        Fetches a sorted list of available property formats. The formats are
        retrieved from the PropertyFormats enum and converted to PropertyFormat
        instances.
      operationId: getFormats
      parameters:
        - name: objectUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property formats retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginationResponse'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/forms/public/{companyUuid}/{formUuid}:
    get:
      tags:
        - Forms
      summary: Get form by UUID
      description: >-
        Retrieves a specific form by its UUID. Returns the details of the form
        in a FormDTO object wrapped in a ShowResponse.
      operationId: getFormPublic
      parameters:
        - name: companyUuid
          in: path
          required: true
          schema:
            type: string
        - name: formUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the form
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '401':
          description: Unauthorized access
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Form not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/files/list:
    get:
      tags:
        - File Management
      summary: List files
      description: >-
        Lists all files stored in the system or, if a record UUID is provided,
        lists the files related to that record.
      operationId: listFiles
      parameters:
        - name: recordUuid
          in: query
          description: An optional record UUID to filter files.
          required: false
          schema:
            type: string
            description: An optional record UUID to filter files.
            example: record12345
          example: record12345
      responses:
        '200':
          description: Files listed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/dev/db-status:
    get:
      tags:
        - Developer
      summary: Check Neo4j database status
      description: >-
        Performs a simple query to check if the Neo4j database is accessible and
        contains any data. Returns a status message indicating whether the
        database is OK or if an error occurred.
      operationId: dbStatus
      responses:
        '200':
          description: Database status message
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Error accessing the database
          content:
            '*/*':
              schema:
                type: string
      security:
        - BearerAuthentication: []
  /api/v2/dev/:
    get:
      tags:
        - Developer
      summary: Greet developers
      description: >-
        Returns a basic greeting message intended for developers to confirm that
        the developer API is reachable.
      operationId: dev
      responses:
        '200':
          description: Successful greeting response
          content:
            '*/*':
              schema:
                type: string
      security:
        - BearerAuthentication: []
  /api/v2/config:
    get:
      tags:
        - ConfigController
      summary: Fetch configuration details
      description: >-
        Retrieves configuration details required for the Caraer frontend,
        including branding, and other configuration values. On success, a
        SuccessResponse is returned containing the configuration data.
      operationId: getConfig
      responses:
        '200':
          description: Configurations fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/apps/{uuid}:
    get:
      tags:
        - Applications
      summary: Retrieve application details by UUID
      description: >-
        Fetches details about an application specified by its UUID. Returns the
        application details as a ShowResponse wrapping an AppDetailDTO.
      operationId: getApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the application to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved application details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShowResponse'
        '404':
          description: Application not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
  /api/v2/webhooks/{uuid}:
    delete:
      tags:
        - Webhooks
      summary: Delete a webhook
      description: Deletes a webhook identified by its unique key.
      operationId: deleteWebhook
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Webhook deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '404':
          description: Webhook not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v2/apps/private/{uuid}:
    delete:
      tags:
        - Applications
      summary: Delete a private app
      description: >-
        Deletes a private app specified by its UUID. This will also uninstall
        the app if it is currently installed. The app must be a private app and
        must belong to the caller's selected company.
      operationId: deletePrivateApp
      parameters:
        - name: uuid
          in: path
          description: UUID of the private app to delete
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppRequest'
      responses:
        '200':
          description: Successfully deleted the private app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          description: App is not a private app
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: App does not belong to your company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Private app not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuthentication: []
components:
  schemas:
    FilterGroup:
      type: object
      description: A DTO that defines a group of filter items used for record filtering.
      properties:
        items:
          $ref: '#/components/schemas/FilterItem'
          description: A set of filter items included in the group.
    FilterItem:
      type: object
      description: DTO representing a filter used in querying records.
      properties:
        object:
          type: string
          description: The name of the object to which this pagination item belongs.
          example: User
        relation:
          type: string
          description: The relationship between objects.
          example: hasProperty
        property:
          type: string
          description: The name of the property within the object.
          example: email
        relationIncluded:
          type: boolean
          description: Specifies whether the relation is included.
          example: true
        operator:
          type: string
          description: >-
            Defines the operator used in the filter. Available operators are
            defined in the API documentation.
          example: EQUALS
        value:
          description: Represents the value to filter against.
          example: 12345
    Calculation:
      type: object
      properties:
        property:
          $ref: '#/components/schemas/ShowItem'
        calculation:
          type: string
    CaraerObject:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        description:
          type: string
        groups:
          type: array
          items:
            type: string
        icon:
          type: string
        showInMenu:
          type: boolean
        hasFlow:
          type: boolean
        hasTable:
          type: boolean
        hasWebpage:
          type: boolean
        hasUser:
          type: boolean
        defaultTrait:
          type: string
        suites:
          type: array
          items:
            type: string
        page:
          $ref: '#/components/schemas/PageTrait'
        userTrait:
          $ref: '#/components/schemas/UserTrait'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    CaraerObjectDTO:
      type: object
      description: >-
        Data transfer object representing a Caraer object with its
        configuration, properties, relations, and views
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: Unique identifier name for the object
        label:
          type: string
          description: Display label for the object
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering objects
        plural:
          type: string
          description: Plural form of the object's name, used for display purposes
        description:
          type: string
          description: Detailed description of the object's purpose and usage
        groups:
          type: array
          description: Collection of group names this object belongs to
          items:
            type: string
        icon:
          type: string
          description: Icon identifier for visual representation of the object
        showInMenu:
          type: boolean
          description: Indicates if this object should be displayed in navigation menus
        defaultTrait:
          type: string
          description: Name of the default trait applied to this object
        traits:
          type: array
          description: List of trait names associated with this object
          items:
            type: string
        views:
          type: array
          description: List of view configurations for displaying this object
          items:
            $ref: '#/components/schemas/ViewDTO'
        properties:
          type: array
          description: List of properties defined for this object
          items:
            $ref: '#/components/schemas/PropertyDTO'
        relations:
          type: array
          description: List of relations this object has with other objects
          items:
            $ref: '#/components/schemas/RelationDTO'
        suites:
          type: array
          description: List of suite names this object belongs to
          items:
            type: string
      required:
        - uuid
    Currency:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    CurrencyRange:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    Date:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    Email:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    File:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    FilledProperty:
      type: object
      properties:
        label:
          type: string
        name:
          type: string
        value: {}
        type:
          type: string
        icon:
          type: string
    Filter:
      type: object
      description: >-
        DTO representing a filter composed of filter groups for querying
        records. The filter groups are combined using a logical OR operation.
        The filter items within each group are combined using a logical AND
        operation.
      properties:
        groups:
          type: array
          description: A collection of filter groups.
          items:
            $ref: '#/components/schemas/FilterGroup'
            description: A collection of filter groups.
          uniqueItems: true
    FormDTO:
      type: object
      description: >-
        Data transfer object representing a form with its associated properties
        and structure
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: The associated Caraer object that this form belongs to
        grids:
          type: array
          description: >-
            List of form items that make up the form's structure. Each grid
            represents a section or group of form elements
          items:
            $ref: '#/components/schemas/FormItemDTO'
        description:
          type: string
          description: Descriptive text providing additional information about the form
        styling:
          type: string
          description: The styling of the form. Can be 'standard', 'underline' or 'plain'
        leadscores:
          type: array
          description: >-
            List of lead scoring rules associated with this form. Used to
            evaluate and score form submissions
          items:
            $ref: '#/components/schemas/Leadscore'
        relations:
          type: array
          description: >-
            List of form relations that define the relationships between this
            form conversion record and other records in the system
          items:
            $ref: '#/components/schemas/FormRelationDTO'
        wizard:
          type: boolean
          description: >-
            Indicates if the form should be displayed as a step-by-step wizard
            interface
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Metadata associated with the form
        thankYouMessage:
          type: string
          description: Thank you message to be displayed after the form is submitted
        redirectUrl:
          type: string
          description: Redirect URL to be displayed after the form is submitted
      required:
        - name
        - uuid
    FormItemDTO:
      type: object
      description: >-
        Represents a section or group within a form, containing a grid of form
        elements
      properties:
        aiprompt:
          type: string
        title:
          type: string
          description: The title or heading of this form section
        description:
          type: string
          description: >-
            Additional descriptive text explaining the purpose or instructions
            for this section
        type:
          type: string
          description: The type of form section (e.g., 'grid', 'section', etc.)
        AIPrompt:
          type: string
          description: The AI prompt for the form section. Only applicable to steps.
        grid:
          type: array
          description: >-
            A two-dimensional array representing the layout of form elements.
            Each inner list represents a row of elements
          items:
            type: array
            items:
              $ref: '#/components/schemas/GridItemDTO'
    FormRelationDTO:
      type: object
      description: Data transfer object representing a form relation
      properties:
        type:
          type: string
          description: >-
            The type of the form relation. The options are:
            CONVERSION_PAGE_RECORD, RELATED_RECORD_TO_CONVERSION_PAGE_RECORD,
            STATIC
          example: CONVERSION_PAGE_RECORD
        relation:
          $ref: '#/components/schemas/RelationDTO'
          description: The relation to be created.
        relatedRelation:
          $ref: '#/components/schemas/RelationDTO'
          description: The related relation associated with conversion page record
        relatedObject:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: >-
            The related object associated with conversion page record or for
            static
        recordUuid:
          type: string
          description: UUID of the record for the static connection.
          example: fc453abc-123e-4567-890a-6789abcd1234
        relatedObjectConnection:
          type: string
          description: >-
            The connection type for the related object. The options are:
            PRIMARY, ALL
          example: PRIMARY
    GridItemDTO:
      type: object
      description: >-
        Represents a single cell within a form grid, which can contain a
        property, text, nested form, or other form elements
      properties:
        property:
          $ref: '#/components/schemas/PropertyDTO'
          description: >-
            The property associated with this grid item, typically representing
            a form field or input
        text:
          type: string
          description: Static text content to be displayed in this grid cell
        form:
          $ref: '#/components/schemas/FormDTO'
          description: A nested form that can be embedded within this grid cell
        submitButton:
          type: string
          description: The text of the submit button for this grid item
        settings:
          $ref: '#/components/schemas/GridItemSettingsDTO'
          description: >-
            Configuration settings for this grid item, including display and
            validation rules
        value:
          type: string
          description: The value of this grid item, used for form submissions
    GridItemSettingsDTO:
      type: object
      description: >-
        Configuration settings for a grid item in a form, including property
        settings and form-related settings
      properties:
        relation:
          $ref: '#/components/schemas/RelationDTO'
          description: >-
            Defines the relationship between this form field and other entities
            or forms
        record:
          $ref: '#/components/schemas/Record'
          description: UUID of a record to be pre-filled in this form field
        aiprompt:
          type: string
        label:
          type: string
          description: The display label for the form field
        defaultValue:
          type: string
          description: The default value to be pre-filled in the form field
        isRequired:
          type: boolean
          description: >-
            Indicates whether this field must be filled out before form
            submission
        hidden:
          type: boolean
          description: Indicates whether this field should be hidden from view
        placeholder:
          type: string
          description: The placeholder text for the form field
        helpText:
          type: string
          description: The help text for the form field
        AIPrompt:
          type: string
          description: The AI prompt for the form field. Only applicable to text fields.
        styling:
          type: string
          description: The styling for the form field. Can be 'dropdown', 'grid' or 'boxes'
        stretch:
          type: boolean
          description: >-
            Whether the form field should be stretched to the full width of the
            form
        align:
          type: string
          description: The alignment of the form field. Can be 'left', 'center' or 'right'
        rangeMin:
          type: integer
          format: int32
          description: The minimum value for the slider field
        rangeMax:
          type: integer
          format: int32
          description: The maximum value for the slider field
    HAS_PROPERTY:
      type: object
      properties:
        uuid:
          type: string
        object:
          $ref: '#/components/schemas/CaraerObject'
        property:
          $ref: '#/components/schemas/Property'
        index:
          type: integer
          format: int32
        hidden:
          type: boolean
        group:
          type: string
    Leadscore:
      type: object
      description: DTO representing a lead score rule
      properties:
        object:
          type: string
          description: The name of the object to which this pagination item belongs.
          example: User
        relation:
          type: string
          description: The relationship between objects.
          example: hasProperty
        property:
          type: string
          description: The name of the property within the object.
          example: email
        relationIncluded:
          type: boolean
          description: Specifies whether the relation is included.
          example: true
        operator:
          type: string
          description: >-
            Defines the operator used in the filter. Available operators are
            defined in the API documentation.
          example: EQUALS
        value:
          description: Represents the value to filter against.
          example: 12345
        smart_value:
          type: boolean
          description: Whether the value is a smart value
          example: true
        score:
          type: integer
          format: int32
          description: The score to assign if the rule is met
          example: 10
    LinkedProperty:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
        - type: object
          properties:
            property:
              $ref: '#/components/schemas/Property'
            linkedProperty:
              $ref: '#/components/schemas/PropertyDTO'
    MultiLine:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    MultiSelect:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    Number:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    NumberRange:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    PageContentDTO:
      type: object
      description: Data transfer object representing a webpage content
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        category:
          type: string
          description: Category of the content
        parentUuid:
          type: string
          description: Unique identifier for the parent content
        type:
          type: string
          description: Type of the content ('box' or 'component')
        display:
          type: string
          description: >-
            Display of the content for box ('column', 'row' or 'wrap') and for
            component ()
        text:
          type: string
          description: Text content of the content
        styling:
          $ref: '#/components/schemas/PageContentStylingDTO'
          description: Styling of the content
        settings:
          $ref: '#/components/schemas/PageContentSettingsDTO'
          description: Settings for the content
        children:
          type: array
          description: Children of the content
          items:
            $ref: '#/components/schemas/PageContentDTO'
      required:
        - name
        - uuid
    PageContentSettingsDTO:
      type: object
      description: Data transfer object representing the settings for a content
      properties:
        form:
          $ref: '#/components/schemas/FormDTO'
          description: The form associated with the content
        openIcon:
          type: string
          description: The icon to display when the accordion is open
        closeIcon:
          type: string
          description: The icon to display when the accordion is closed
        alt:
          type: string
          description: The alt text of the image
        key:
          type: string
          description: The key of the image
        playVideo:
          type: boolean
          description: Whether the video should play automatically
        startMuted:
          type: boolean
          description: Whether the image should start muted
        loopVideo:
          type: boolean
          description: Whether the video should loop
        startOffset:
          type: integer
          format: int32
          description: The start offset of the video
        link:
          type: string
          description: The link of the button
        style:
          type: string
          description: The style of the button. Primary, secondary, tertiary or custom
        openInNewWindow:
          type: boolean
          description: Whether the link should open in a new window
        sliderType:
          type: string
          description: The slider type. Dots, arrows and swipe
        carouselSpeed:
          type: number
          format: double
          description: The carousel speed.
        previewObject:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: The object of the previews
        previews:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PreviewDTO'
          description: The previews associated with the layouts
        previewLayoutOrder:
          type: array
          description: The order of preview layouts
          items:
            type: string
        filter:
          $ref: '#/components/schemas/Filter'
          description: The filter associated with the settings
        orderBy:
          $ref: '#/components/schemas/PropertyDTO'
          description: The order by property associated with the settings
        orderByDirection:
          type: string
          description: >-
            The order by direction associated with the settings. ASC or DESC,
            default is ASC
        asWebpages:
          type: boolean
          description: Whether the previews should be shown as webpages
        loop:
          type: boolean
          description: Whether the previews should loop
        limit:
          type: integer
          format: int32
          description: The limit associated with the settings
        groupBy:
          $ref: '#/components/schemas/PropertyDTO'
          description: The group by property associated with the settings
        filterType:
          type: string
          description: The type of the filter block. left_bar or top_search
        searchResultSingleString:
          type: string
          description: The single result string of the filter block
        searchResultPluralString:
          type: string
          description: The Plural result string of the filter block
        noResultsString:
          type: string
          description: The no results string of the filter block
        searchFieldEnabled:
          type: boolean
          description: Whether the search field should be enabled
        searchFieldPlaceholder:
          type: string
          description: The placeholder of the search field
        filterBlockEnabled:
          type: boolean
          description: Whether the filter block should be enabled
        filterTitle:
          type: string
          description: The title of the filter block
        filterSubtitle:
          type: string
          description: The subtitle of the filter block
        filterProperties:
          type: array
          description: The properties of the filter block
          items:
            $ref: '#/components/schemas/PropertyDTO'
        enableFilterTiles:
          type: boolean
          description: Whether the filter tiles should be enabled
        enableFilterQuery:
          type: boolean
          description: Whether the filter query should be enabled
        enableRemoveAllFiltersButton:
          type: boolean
          description: Whether the remove all filters button should be enabled
        ctaEnabled:
          type: boolean
          description: Whether the CTA should be enabled
        ctaTitle:
          type: string
          description: The title of the CTA
        ctaText:
          type: string
          description: The text of the CTA
        ctaButtonText:
          type: string
          description: The button text of the CTA
        ctaButtonLink:
          type: string
          description: The button link of the CTA
        platforms:
          type: array
          description: The platforms shown in the share component
          items:
            type: string
    PageContentStyling:
      type: object
      properties:
        all:
          $ref: '#/components/schemas/StyleSet'
        mobile:
          $ref: '#/components/schemas/StyleSet'
        tablet:
          $ref: '#/components/schemas/StyleSet'
        desktop:
          $ref: '#/components/schemas/StyleSet'
    PageContentStylingDTO:
      type: object
      properties:
        all:
          $ref: '#/components/schemas/StyleSetDTO'
          description: The style set for all devices
        mobile:
          $ref: '#/components/schemas/StyleSetDTO'
          description: The style set for the mobile device
        tablet:
          $ref: '#/components/schemas/StyleSetDTO'
          description: The style set for the tablet device
        desktop:
          $ref: '#/components/schemas/StyleSetDTO'
          description: The style set for the desktop device
    PageTrait:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        icon:
          type: string
        generateRule:
          type: string
        isMatchedToTemplate:
          type: boolean
        defaultLayout:
          type: string
        pageLimit:
          type: integer
          format: int32
        publishRule:
          type: string
        rootSlug:
          type: string
        title:
          type: string
        subTitle:
          type: string
        description:
          type: string
        image:
          type: string
        filterBlockEnabled:
          type: boolean
        searchFieldPlaceholder:
          type: string
        searchFieldEnabled:
          type: boolean
        filterTitle:
          type: string
        socialShareEnabled:
          type: boolean
        socialShareTitle:
          type: string
        socialShareButtons:
          type: array
          items:
            type: string
        backButtonTitle:
          type: string
        metaTitle:
          type: string
        metaDescription:
          type: string
        metaImage:
          type: string
        indexPreviewsString:
          type: string
        indexPreviews:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Preview'
        indexSingularTitle:
          type: string
        indexPluralTitle:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
        caraerObject:
          $ref: '#/components/schemas/CaraerObject'
      required:
        - uuid
    Phone:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    Preview:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        object:
          $ref: '#/components/schemas/CaraerObject'
        grid:
          type: array
          items:
            type: array
            items:
              $ref: '#/components/schemas/PreviewItem'
        recordUuid:
          type: string
        primary:
          type: boolean
        previewType:
          type: string
        customCss:
          type: string
        url:
          type: string
        profileImage:
          $ref: '#/components/schemas/Property'
        profileImageUuid:
          type: string
        profileImageValue:
          type: string
        profileImagePosition:
          type: string
        profileImageStylingString:
          type: string
        profileImageStyling:
          $ref: '#/components/schemas/PageContentStyling'
        firstInitialProperty:
          $ref: '#/components/schemas/Property'
        firstInitialPropertyUuid:
          type: string
        firstInitialPropertyValue:
          type: string
        secondInitialProperty:
          $ref: '#/components/schemas/Property'
        secondInitialPropertyUuid:
          type: string
        secondInitialPropertyValue:
          type: string
        whatsAppProperty:
          $ref: '#/components/schemas/Property'
        whatsAppPropertyUuid:
          type: string
        whatsAppPropertyValue:
          type: string
        phoneProperty:
          $ref: '#/components/schemas/Property'
        phonePropertyUuid:
          type: string
        phonePropertyValue:
          type: string
        emailProperty:
          $ref: '#/components/schemas/Property'
        emailPropertyUuid:
          type: string
        emailPropertyValue:
          type: string
        stylingString:
          type: string
        styling:
          $ref: '#/components/schemas/PageContentStyling'
        propertyValuesFromRecord:
          $ref: '#/components/schemas/Record'
          writeOnly: true
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    PreviewDTO:
      type: object
      description: Data transfer object representing a preview entity
      properties:
        description:
          type: string
          description: Description of the preview
          example: Preview description example
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: The Caraer object associated with this preview
        recordUuid:
          type: string
          description: UUID of the associated record
          example: abcdef12-3456-7890-abcd-ef1234567890
        primary:
          type: boolean
          description: Indicates whether this preview is the primary one
          example: true
        previewType:
          type: string
          description: Type of preview (detail, flow, pill, custom)
          example: detail
        grid:
          type: array
          description: Rows of the preview grid
          items:
            type: array
            description: Two-dimensional grid representing the layout of preview items
            items:
              $ref: '#/components/schemas/PreviewItemDTO'
          maxItems: 2147483647
        profileImage:
          $ref: '#/components/schemas/PropertyDTO'
          description: Profile image property
        profileImagePosition:
          type: string
          description: Profile image position (top, left, right, bottom, background)
          example: top
        profileImageStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
          description: Style set for the profile image
        firstInitialProperty:
          $ref: '#/components/schemas/PropertyDTO'
          description: First initial property
        secondInitialProperty:
          $ref: '#/components/schemas/PropertyDTO'
          description: Second initial property
        whatsAppProperty:
          $ref: '#/components/schemas/PropertyDTO'
          description: WhatsApp property
        phoneProperty:
          $ref: '#/components/schemas/PropertyDTO'
          description: Phone property
        emailProperty:
          $ref: '#/components/schemas/PropertyDTO'
          description: Email property
        profileImageValue:
          type: string
          description: Value of the profile image
        firstInitialPropertyValue:
          type: string
          description: Value of the first initial property
        secondInitialPropertyValue:
          type: string
          description: Value of the second initial property
        whatsAppPropertyValue:
          type: string
          description: Value of the whatsApp property
        phonePropertyValue:
          type: string
          description: Value of the phone property
        emailPropertyValue:
          type: string
          description: Value of the email property
        customCss:
          type: string
          description: Custom CSS styles for the preview
        url:
          type: string
          description: URL of the preview
        styling:
          $ref: '#/components/schemas/PageContentStylingDTO'
          description: The styling of the preview
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
      required:
        - name
        - uuid
    PreviewItem:
      type: object
      properties:
        property:
          required:
            - name
        text:
          type: string
        relatedObject:
          $ref: '#/components/schemas/PreviewRelatedObject'
        divider:
          type: string
        buttonText:
          type: string
        buttonUrl:
          type: string
        value: {}
        relatedObjectValue: {}
        buttonTextValue: {}
        buttonUrlValue: {}
        settings:
          $ref: '#/components/schemas/PreviewItemSettings'
        styling:
          $ref: '#/components/schemas/PageContentStyling'
    PreviewItemDTO:
      type: object
      description: >-
        Data Transfer Object for PreviewItem, used for transferring preview
        details.
      properties:
        property:
          $ref: '#/components/schemas/PropertyDTO'
          description: The property details associated with the preview item.
        text:
          type: string
          description: The text content associated with the preview item.
          example: Sample text
        value:
          description: >-
            The value associated with the preview item. This can hold custom
            data.
        relatedObject:
          $ref: '#/components/schemas/PreviewRelatedObjectDTO'
          description: The related object information for the preview item.
        relatedObjectValue:
          description: The related object value associated with this preview item.
        divider:
          type: string
          description: Whether the preview item is a divider. (solid, dashed, dotted)
          example: solid
        buttonText:
          type: string
          description: The button text associated with the preview item.
          example: Sample text
        buttonUrl:
          type: string
          description: The button url associated with the preview item.
          example: https://www.google.com
        buttonTextValue:
          description: The button text value associated with the preview item.
        buttonUrlValue:
          description: The button value associated with the preview item.
        settings:
          $ref: '#/components/schemas/PreviewItemSettingsDTO'
          description: The settings associated with the preview item.
        styling:
          $ref: '#/components/schemas/PageContentStylingDTO'
          description: The styling associated with the preview item.
    PreviewItemSettings:
      type: object
      properties:
        showIcon:
          type: boolean
        iconPadding:
          type: number
          format: double
        iconColor:
          type: string
        iconSize:
          type: number
          format: double
        defaultValue:
          type: string
        helpText:
          type: string
        paragraph:
          type: string
        showColor:
          type: boolean
        showBorder:
          type: boolean
        buttonType:
          type: string
    PreviewItemSettingsDTO:
      type: object
      description: >-
        Data Transfer Object for PreviewItemSettings, used for transferring
        preview item settings.
      properties:
        showIcon:
          type: boolean
          description: Whether the preview item should show the icon.
        iconPadding:
          type: number
          format: double
          description: The padding of the icon.
        iconColor:
          type: string
          description: The color of the icon.
        iconSize:
          type: number
          format: double
          description: The size of the icon.
        defaultValue:
          type: string
          description: The default value of the preview item.
        helpText:
          type: string
          description: The help text of the preview item.
        paragraph:
          type: string
          description: The paragraph of the preview item p, h1, h2, h3, h4, h5, h6.
        showColor:
          type: boolean
          description: Whether the preview item should show the color of the select option.
        showBorder:
          type: boolean
          description: >-
            Whether the preview item should show the border around the select
            option.
        buttonType:
          type: string
          description: What type the button should be (primary, secondary or tertiary)
    PreviewRelatedObject:
      type: object
      properties:
        object:
          $ref: '#/components/schemas/CaraerObject'
        relation:
          $ref: '#/components/schemas/Relation'
    PreviewRelatedObjectDTO:
      type: object
      description: >-
        Data transfer object representing a PreviewRelatedObject, constructed
        using related object and relation data.
      properties:
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: The related object data.
        relation:
          $ref: '#/components/schemas/RelationDTO'
          description: The type of relation between objects.
    Property:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        description:
          type: string
        type:
          type: string
        options:
          type: array
          items:
            $ref: '#/components/schemas/PropertyOption'
        format:
          type: string
        rules:
          type: array
          items:
            type: string
        immutable:
          type: boolean
        nonPublic:
          type: boolean
        indexed:
          type: boolean
        editable:
          type: boolean
        required:
          type: boolean
        unique:
          type: boolean
        icon:
          type: string
        webpagePublic:
          type: boolean
        embeddable:
          type: boolean
        objects:
          type: array
          items:
            $ref: '#/components/schemas/HAS_PROPERTY'
        propertyType:
          $ref: '#/components/schemas/PropertyType'
        propertyFormat:
          oneOf:
            - $ref: '#/components/schemas/Currency'
            - $ref: '#/components/schemas/CurrencyRange'
            - $ref: '#/components/schemas/Date'
            - $ref: '#/components/schemas/Email'
            - $ref: '#/components/schemas/File'
            - $ref: '#/components/schemas/LinkedProperty'
            - $ref: '#/components/schemas/MultiLine'
            - $ref: '#/components/schemas/MultiSelect'
            - $ref: '#/components/schemas/Number'
            - $ref: '#/components/schemas/NumberRange'
            - $ref: '#/components/schemas/Phone'
            - $ref: '#/components/schemas/SingleCheckbox'
            - $ref: '#/components/schemas/SingleLine'
            - $ref: '#/components/schemas/SingleSelect'
            - $ref: '#/components/schemas/Structure'
            - $ref: '#/components/schemas/Tag'
            - $ref: '#/components/schemas/Url'
        formatSettings:
          type: object
          additionalProperties: {}
        usedIn:
          $ref: '#/components/schemas/UsedInResult'
        minAndMaxValue:
          $ref: '#/components/schemas/Tuple2LongLong'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    PropertyDTO:
      type: object
      description: >-
        Data transfer object representing a property with its configuration and
        metadata
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name identifier of the property
        label:
          type: string
          description: Display label for the property
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        description:
          type: string
          description: Detailed description of the property's purpose and usage
        type:
          type: string
          description: >-
            The data type of the property (e.g., 'string', 'number', 'date',
            etc.)
        options:
          type: array
          description: List of predefined options for properties that support selection
          items:
            $ref: '#/components/schemas/PropertyOption'
        group:
          type: string
          description: Group name for organizing related properties
        format:
          description: Format configuration for the property's display and validation
          oneOf:
            - $ref: '#/components/schemas/Currency'
            - $ref: '#/components/schemas/CurrencyRange'
            - $ref: '#/components/schemas/Date'
            - $ref: '#/components/schemas/Email'
            - $ref: '#/components/schemas/File'
            - $ref: '#/components/schemas/LinkedProperty'
            - $ref: '#/components/schemas/MultiLine'
            - $ref: '#/components/schemas/MultiSelect'
            - $ref: '#/components/schemas/Number'
            - $ref: '#/components/schemas/NumberRange'
            - $ref: '#/components/schemas/Phone'
            - $ref: '#/components/schemas/SingleCheckbox'
            - $ref: '#/components/schemas/SingleLine'
            - $ref: '#/components/schemas/SingleSelect'
            - $ref: '#/components/schemas/Structure'
            - $ref: '#/components/schemas/Tag'
            - $ref: '#/components/schemas/Url'
        rules:
          type: array
          description: Collection of validation rules applied to the property
          items:
            type: string
        immutable:
          type: boolean
          description: >-
            Indicates if the property value cannot be modified after initial
            creation
        hidden:
          type: boolean
          description: Indicates if the property should be hidden from view
        nonPublic:
          type: boolean
          description: Indicates if the property should be excluded from public APIs
        indexed:
          type: boolean
          description: Indicates if the property should be indexed for searching
        editable:
          type: boolean
          description: Indicates if the property value can be modified
        formatSettings:
          type: object
          additionalProperties: {}
          description: Additional format-specific settings for the property
        usedIn:
          $ref: '#/components/schemas/UsedInResult'
          description: Information about where this property is used in the system
        icon:
          type: string
          description: Icon identifier for visual representation of the property
        webpagePublic:
          type: boolean
          description: Indicates if the property can be used in webpages
        embeddable:
          type: boolean
          description: Indicates if the property can be embedded in other properties
        minAndMaxValue:
          $ref: '#/components/schemas/Tuple2LongLong'
          description: The minimum and maximum value of the property
      required:
        - uuid
    PropertyFormat:
      type: object
      discriminator:
        propertyName: name
      properties:
        label:
          type: string
        name:
          type: string
        icon:
          type: string
        type:
          type: string
        settings:
          type: array
          items:
            $ref: '#/components/schemas/SettingField'
        filters:
          type: array
          items:
            type: string
        rules:
          type: array
          items:
            type: string
    PropertyOption:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        icon:
          type: string
        color:
          type: string
        disabled:
          type: boolean
        usedIn:
          $ref: '#/components/schemas/UsedInResult'
    PropertyType:
      type: object
      properties:
        rules:
          type: array
          items:
            type: string
        aiformat:
          type: string
        name:
          type: string
    PublicUserDTO:
      type: object
      properties:
        uuid:
          type: string
        email:
          type: string
        firstname:
          type: string
        lastname:
          type: string
        initials:
          type: string
        scopes:
          type: array
          items:
            type: string
        filters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Filter'
        role:
          type: string
        record:
          $ref: '#/components/schemas/Record'
    Record:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
        objects:
          type: object
          additionalProperties: {}
        properties:
          type: array
          items:
            $ref: '#/components/schemas/FilledProperty'
        user:
          $ref: '#/components/schemas/PublicUserDTO'
      required:
        - name
        - uuid
    Relation:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        description:
          type: string
        origin:
          $ref: '#/components/schemas/CaraerObject'
        objects:
          type: array
          items:
            $ref: '#/components/schemas/CaraerObject'
          uniqueItems: true
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    RelationDTO:
      type: object
      description: Data transfer object representing a relation between Caraer objects
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: Unique identifier name for the relation
        label:
          type: string
          description: Display label for the relation
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        description:
          type: string
          description: Detailed description of the relation's purpose and usage
        objects:
          type: array
          description: Set of Caraer objects that are part of this relation
          items:
            $ref: '#/components/schemas/CaraerObjectDTO'
          uniqueItems: true
      required:
        - uuid
    SettingField:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        helpText:
          type: string
        type:
          type: string
          enum:
            - STRING
            - NUMBER
            - SINGLE_SELECT
            - MULTI_SELECT
            - DATE
            - FILE
        required:
          type: boolean
        dynamic:
          type: boolean
        hidden:
          type: boolean
        disabled:
          type: boolean
        options:
          type: array
          items:
            $ref: '#/components/schemas/SettingOption'
        defaultValue: {}
        value: {}
    SettingOption:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        helpText:
          type: string
    ShowItem:
      type: object
      description: >-
        DTO representing an item with properties defined for displaying and
        handling in UI related operations.
      properties:
        object:
          type: string
          description: The name of the object to which this pagination item belongs.
          example: User
        relation:
          type: string
          description: The relationship between objects.
          example: hasProperty
        property:
          type: string
          description: The name of the property within the object.
          example: email
        separator:
          type: string
          description: Separator string used to visually separate this item.
          example: '|'
        sticky:
          type: boolean
          default: false
          description: >-
            Flag indicating whether this item is sticky and will stay fixed in
            the list.
    SingleCheckbox:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    SingleLine:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    SingleSelect:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    SortItem:
      type: object
      description: >-
        Represents a sortable item, including object, relation, property, and
        sort direction.
      properties:
        object:
          type: string
          description: The name of the object to which this pagination item belongs.
          example: User
        relation:
          type: string
          description: The relationship between objects.
          example: hasProperty
        property:
          type: string
          description: The name of the property within the object.
          example: email
        direction:
          type: string
          description: >-
            The direction for sorting. Can be ASC (ascending) or DESC
            (descending).
          enum:
            - ASC
            - DESC
          example: ASC
    Structure:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    StyleSet:
      type: object
      properties:
        hide:
          type: boolean
        customID:
          type: string
        customClass:
          type: string
        customAnchor:
          type: string
        spacing:
          type: number
          format: double
        directionLTR:
          type: boolean
        alignContent:
          type: string
        alignItems:
          type: string
        justifyContent:
          type: string
        alignSelf:
          type: string
        flexWrap:
          type: string
        flexDirection:
          type: string
        overflow:
          type: string
        topMargin:
          type: number
          format: double
        bottomMargin:
          type: number
          format: double
        leftMargin:
          type: number
          format: double
        rightMargin:
          type: number
          format: double
        topPadding:
          type: number
          format: double
        bottomPadding:
          type: number
          format: double
        leftPadding:
          type: number
          format: double
        rightPadding:
          type: number
          format: double
        fullWidthEnabled:
          type: boolean
        maxWidth:
          type: number
          format: double
        minWidth:
          type: number
          format: double
        width:
          type: number
          format: double
        flex:
          type: integer
          format: int32
        minHeight:
          type: number
          format: double
        maxHeight:
          type: number
          format: double
        height:
          type: number
          format: double
        borderRadiusTopLeft:
          type: number
          format: double
        borderRadiusTopRight:
          type: number
          format: double
        borderRadiusBottomLeft:
          type: number
          format: double
        borderRadiusBottomRight:
          type: number
          format: double
        borderWidthTop:
          type: number
          format: double
        borderWidthBottom:
          type: number
          format: double
        borderWidthLeft:
          type: number
          format: double
        borderWidthRight:
          type: number
          format: double
        borderColorTop:
          type: string
        borderColorBottom:
          type: string
        borderColorLeft:
          type: string
        borderColorRight:
          type: string
        borderStyleTop:
          type: string
        borderStyleBottom:
          type: string
        borderStyleLeft:
          type: string
        borderStyleRight:
          type: string
        backgroundVideo:
          type: string
        backgroundImage:
          type: string
        backgroundMediaRepeat:
          type: string
        backgroundMediaFit:
          type: string
        backgroundMediaSizeWidth:
          type: number
          format: double
        backgroundMediaSizeHeight:
          type: number
          format: double
        backgroundMediaPosition:
          type: string
        backgroundMediaScroll:
          type: string
        backgroundMediaParallax:
          type: boolean
        backgroundMediaAutoPlay:
          type: boolean
        backgroundMediaMuted:
          type: boolean
        backgroundMediaLoop:
          type: boolean
        backgroundColorOverlayColor:
          type: string
        backgroundColorOverlayOpacity:
          type: number
          format: double
        backgroundGradientOverlayColors:
          type: array
          items:
            type: string
        backgroundGradientOverlayOpacity:
          type: number
          format: double
        backgroundGradientOverlayDirection:
          type: string
        backgroundColor:
          type: string
        backgroundColorOffsetBottom:
          type: number
          format: double
        backgroundColorOffsetLeft:
          type: number
          format: double
        backgroundColorOffsetRight:
          type: number
          format: double
        backgroundColorOffsetTop:
          type: number
          format: double
        backgroundGradientColors:
          type: array
          items:
            type: string
        backgroundGradientOpacity:
          type: number
          format: double
        backgroundGradientDirection:
          type: string
        animationDelay:
          type: number
          format: double
        animationDuration:
          type: number
          format: double
        animationIn:
          type: string
        animationOut:
          type: string
        animationRepeat:
          type: string
        animationDirection:
          type: string
        animationTimingFunction:
          type: string
        animationFillMode:
          type: string
        mediaHover:
          type: string
        mediaAlignment:
          type: string
        mediaFit:
          type: string
        mediaPosition:
          type: string
        enlargeOnClickBorderRadiusTopLeft:
          type: number
          format: double
        enlargeOnClickBorderRadiusTopRight:
          type: number
          format: double
        enlargeOnClickBorderRadiusBottomLeft:
          type: number
          format: double
        enlargeOnClickBorderRadiusBottomRight:
          type: number
          format: double
        enlargeOnClickBorderWidthTop:
          type: number
          format: double
        enlargeOnClickBorderWidthBottom:
          type: number
          format: double
        enlargeOnClickBorderWidthLeft:
          type: number
          format: double
        enlargeOnClickBorderWidthRight:
          type: number
          format: double
        enlargeOnClickBorderColorTop:
          type: string
        enlargeOnClickBorderColorBottom:
          type: string
        enlargeOnClickBorderColorLeft:
          type: string
        enlargeOnClickBorderColorRight:
          type: string
        enlargeOnClickBorderStyleTop:
          type: string
        enlargeOnClickBorderStyleBottom:
          type: string
        enlargeOnClickBorderStyleLeft:
          type: string
        enlargeOnClickBorderStyleRight:
          type: string
        enlargeOnClickShadowOffsetX:
          type: number
          format: double
        enlargeOnClickShadowOffsetY:
          type: number
          format: double
        enlargeOnClickShadowBlur:
          type: number
          format: double
        enlargeOnClickShadowColor:
          type: string
        enlargeOnClickShadowSpread:
          type: number
          format: double
        enlargeOnClickShadowInset:
          type: boolean
        enlargeOnClickShadowOpacity:
          type: number
          format: double
        enlargeOnClickScale:
          type: number
          format: double
        shadowOffsetX:
          type: number
          format: double
        shadowOffsetY:
          type: number
          format: double
        shadowBlur:
          type: number
          format: double
        shadowBorderRadiusTopLeft:
          type: number
          format: double
        shadowBorderRadiusTopRight:
          type: number
          format: double
        shadowBorderRadiusBottomLeft:
          type: number
          format: double
        shadowBorderRadiusBottomRight:
          type: number
          format: double
        shadowColor:
          type: string
        shadowSpread:
          type: number
          format: double
        shadowInset:
          type: boolean
        shadowOpacity:
          type: number
          format: double
        textGradientOverlayColors:
          type: array
          items:
            type: string
        textGradientOverlayOpacity:
          type: number
          format: double
        textGradientOverlayDirection:
          type: string
        darkTextEnabled:
          type: boolean
        textAlign:
          type: string
        transitionScrollSpeed:
          type: number
          format: double
        autoRotate:
          type: boolean
        autoRotateInterval:
          type: number
          format: double
        sidebar:
          type: boolean
        sidebarPosition:
          type: string
        sidebarAnimation:
          type: string
        sidebarAnimationDuration:
          type: number
          format: double
        sidebarAnimationTimingFunction:
          type: string
        buttonIcon:
          type: string
        buttonIconPosition:
          type: string
        buttonIconColor:
          type: string
        openInNewWindow:
          type: boolean
        fontFamily:
          type: string
        fontSize:
          type: number
          format: double
        fontWeight:
          type: string
        fontDecoration:
          type: string
        fontTextTransform:
          type: string
        fontLineHeight:
          type: number
          format: double
        fontLetterSpacing:
          type: number
          format: double
        fontColorLight:
          type: string
        fontColorDark:
          type: string
        h1FontFamily:
          type: string
        h1FontSize:
          type: number
          format: double
        h1FontWeight:
          type: string
        h1FontDecoration:
          type: string
        h1TextTransform:
          type: string
        h1LineHeight:
          type: number
          format: double
        h1LetterSpacing:
          type: number
          format: double
        h1ColorLight:
          type: string
        h1ColorDark:
          type: string
        h2FontFamily:
          type: string
        h2FontSize:
          type: number
          format: double
        h2FontWeight:
          type: string
        h2FontDecoration:
          type: string
        h2TextTransform:
          type: string
        h2LineHeight:
          type: number
          format: double
        h2LetterSpacing:
          type: number
          format: double
        h2ColorLight:
          type: string
        h2ColorDark:
          type: string
        h3FontFamily:
          type: string
        h3FontSize:
          type: number
          format: double
        h3FontWeight:
          type: string
        h3FontDecoration:
          type: string
        h3TextTransform:
          type: string
        h3LineHeight:
          type: number
          format: double
        h3LetterSpacing:
          type: number
          format: double
        h3ColorLight:
          type: string
        h3ColorDark:
          type: string
        h4FontFamily:
          type: string
        h4FontSize:
          type: number
          format: double
        h4FontWeight:
          type: string
        h4FontDecoration:
          type: string
        h4TextTransform:
          type: string
        h4LineHeight:
          type: number
          format: double
        h4LetterSpacing:
          type: number
          format: double
        h4ColorLight:
          type: string
        h4ColorDark:
          type: string
        h5FontFamily:
          type: string
        h5FontSize:
          type: number
          format: double
        h5FontWeight:
          type: string
        h5FontDecoration:
          type: string
        h5TextTransform:
          type: string
        h5LineHeight:
          type: number
          format: double
        h5LetterSpacing:
          type: number
          format: double
        h5ColorLight:
          type: string
        h5ColorDark:
          type: string
        h6FontFamily:
          type: string
        h6FontSize:
          type: number
          format: double
        h6FontWeight:
          type: string
        h6FontDecoration:
          type: string
        h6TextTransform:
          type: string
        h6LineHeight:
          type: number
          format: double
        h6LetterSpacing:
          type: number
          format: double
        h6ColorLight:
          type: string
        h6ColorDark:
          type: string
        navigationFontFamily:
          type: string
        navigationFontSize:
          type: number
          format: double
        navigationFontWeight:
          type: string
        navigationFontDecoration:
          type: string
        navigationTextTransform:
          type: string
        navigationLineHeight:
          type: number
          format: double
        navigationLetterSpacing:
          type: number
          format: double
        navigationColorLight:
          type: string
        navigationColorDark:
          type: string
        subNavigationFontFamily:
          type: string
        subNavigationFontSize:
          type: number
          format: double
        subNavigationFontWeight:
          type: string
        subNavigationFontDecoration:
          type: string
        subNavigationTextTransform:
          type: string
        subNavigationLineHeight:
          type: number
          format: double
        subNavigationLetterSpacing:
          type: number
          format: double
        subNavigationColorLight:
          type: string
        subNavigationColorDark:
          type: string
        bodyFontFamily:
          type: string
        bodyFontSize:
          type: number
          format: double
        bodyFontWeight:
          type: string
        bodyFontDecoration:
          type: string
        bodyTextTransform:
          type: string
        bodyLineHeight:
          type: number
          format: double
        bodyLetterSpacing:
          type: number
          format: double
        bodyColorLight:
          type: string
        bodyColorDark:
          type: string
        hyperlinkFontFamily:
          type: string
        hyperlinkFontSize:
          type: number
          format: double
        hyperlinkFontWeight:
          type: string
        hyperlinkFontDecoration:
          type: string
        hyperlinkTextTransform:
          type: string
        hyperlinkLineHeight:
          type: number
          format: double
        hyperlinkLetterSpacing:
          type: number
          format: double
        hyperlinkColorLight:
          type: string
        hyperlinkColorDark:
          type: string
    StyleSetDTO:
      type: object
      properties:
        hide:
          type: boolean
        customID:
          type: string
        customClass:
          type: string
        customAnchor:
          type: string
        spacing:
          type: number
          format: double
        directionLTR:
          type: boolean
        alignContent:
          type: string
        alignItems:
          type: string
        justifyContent:
          type: string
        alignSelf:
          type: string
        flexWrap:
          type: string
        flexDirection:
          type: string
        overflow:
          type: string
        topMargin:
          type: number
          format: double
        bottomMargin:
          type: number
          format: double
        leftMargin:
          type: number
          format: double
        rightMargin:
          type: number
          format: double
        topPadding:
          type: number
          format: double
        bottomPadding:
          type: number
          format: double
        leftPadding:
          type: number
          format: double
        rightPadding:
          type: number
          format: double
        fullWidthEnabled:
          type: boolean
        maxWidth:
          type: number
          format: double
        minWidth:
          type: number
          format: double
        width:
          type: number
          format: double
        flex:
          type: integer
          format: int32
        minHeight:
          type: number
          format: double
        maxHeight:
          type: number
          format: double
        height:
          type: number
          format: double
        borderRadiusTopLeft:
          type: number
          format: double
        borderRadiusTopRight:
          type: number
          format: double
        borderRadiusBottomLeft:
          type: number
          format: double
        borderRadiusBottomRight:
          type: number
          format: double
        borderWidthTop:
          type: number
          format: double
        borderWidthBottom:
          type: number
          format: double
        borderWidthLeft:
          type: number
          format: double
        borderWidthRight:
          type: number
          format: double
        borderColorTop:
          type: string
        borderColorBottom:
          type: string
        borderColorLeft:
          type: string
        borderColorRight:
          type: string
        borderStyleTop:
          type: string
        borderStyleBottom:
          type: string
        borderStyleLeft:
          type: string
        borderStyleRight:
          type: string
        backgroundVideo:
          type: string
        backgroundImage:
          type: string
        backgroundMediaRepeat:
          type: string
        backgroundMediaFit:
          type: string
        backgroundMediaSizeWidth:
          type: number
          format: double
        backgroundMediaSizeHeight:
          type: number
          format: double
        backgroundMediaPosition:
          type: string
        backgroundMediaScroll:
          type: string
        backgroundMediaParallax:
          type: boolean
        backgroundMediaAutoPlay:
          type: boolean
        backgroundMediaMuted:
          type: boolean
        backgroundMediaLoop:
          type: boolean
        backgroundColorOverlayColor:
          type: string
        backgroundColorOverlayOpacity:
          type: number
          format: double
        backgroundGradientOverlayColors:
          type: array
          items:
            type: string
        backgroundGradientOverlayOpacity:
          type: number
          format: double
        backgroundGradientOverlayDirection:
          type: string
        backgroundColor:
          type: string
        backgroundColorOffsetBottom:
          type: number
          format: double
        backgroundColorOffsetLeft:
          type: number
          format: double
        backgroundColorOffsetRight:
          type: number
          format: double
        backgroundColorOffsetTop:
          type: number
          format: double
        backgroundGradientColors:
          type: array
          items:
            type: string
        backgroundGradientOpacity:
          type: number
          format: double
        backgroundGradientDirection:
          type: string
        animationDelay:
          type: number
          format: double
        animationDuration:
          type: number
          format: double
        animationIn:
          type: string
        animationOut:
          type: string
        animationRepeat:
          type: string
        animationDirection:
          type: string
        animationTimingFunction:
          type: string
        animationFillMode:
          type: string
        mediaHover:
          type: string
        mediaAlignment:
          type: string
        mediaFit:
          type: string
        mediaPosition:
          type: string
        enlargeOnClickBorderRadiusTopLeft:
          type: number
          format: double
        enlargeOnClickBorderRadiusTopRight:
          type: number
          format: double
        enlargeOnClickBorderRadiusBottomLeft:
          type: number
          format: double
        enlargeOnClickBorderRadiusBottomRight:
          type: number
          format: double
        enlargeOnClickBorderWidthTop:
          type: number
          format: double
        enlargeOnClickBorderWidthBottom:
          type: number
          format: double
        enlargeOnClickBorderWidthLeft:
          type: number
          format: double
        enlargeOnClickBorderWidthRight:
          type: number
          format: double
        enlargeOnClickBorderColorTop:
          type: string
        enlargeOnClickBorderColorBottom:
          type: string
        enlargeOnClickBorderColorLeft:
          type: string
        enlargeOnClickBorderColorRight:
          type: string
        enlargeOnClickBorderStyleTop:
          type: string
        enlargeOnClickBorderStyleBottom:
          type: string
        enlargeOnClickBorderStyleLeft:
          type: string
        enlargeOnClickBorderStyleRight:
          type: string
        enlargeOnClickShadowOffsetX:
          type: number
          format: double
        enlargeOnClickShadowOffsetY:
          type: number
          format: double
        enlargeOnClickShadowBlur:
          type: number
          format: double
        enlargeOnClickShadowColor:
          type: string
        enlargeOnClickShadowSpread:
          type: number
          format: double
        enlargeOnClickShadowInset:
          type: boolean
        enlargeOnClickShadowOpacity:
          type: number
          format: double
        enlargeOnClickScale:
          type: number
          format: double
        shadowOffsetX:
          type: number
          format: double
        shadowOffsetY:
          type: number
          format: double
        shadowBlur:
          type: number
          format: double
        shadowBorderRadiusTopLeft:
          type: number
          format: double
        shadowBorderRadiusTopRight:
          type: number
          format: double
        shadowBorderRadiusBottomLeft:
          type: number
          format: double
        shadowBorderRadiusBottomRight:
          type: number
          format: double
        shadowColor:
          type: string
        shadowSpread:
          type: number
          format: double
        shadowInset:
          type: boolean
        shadowOpacity:
          type: number
          format: double
        textGradientOverlayColors:
          type: array
          items:
            type: string
        textGradientOverlayOpacity:
          type: number
          format: double
        textGradientOverlayDirection:
          type: string
        darkTextEnabled:
          type: boolean
        textAlign:
          type: string
        transitionScrollSpeed:
          type: number
          format: double
        autoRotate:
          type: boolean
        autoRotateInterval:
          type: number
          format: double
        buttonIcon:
          type: string
        buttonIconPosition:
          type: string
        buttonIconColor:
          type: string
        openInNewWindow:
          type: boolean
        sidebar:
          type: boolean
        sidebarPosition:
          type: string
        sidebarAnimation:
          type: string
        sidebarAnimationDuration:
          type: number
          format: double
        sidebarAnimationTimingFunction:
          type: string
        fontFamily:
          type: string
        fontSize:
          type: number
          format: double
        fontWeight:
          type: string
        fontDecoration:
          type: string
        fontTextTransform:
          type: string
        fontLineHeight:
          type: number
          format: double
        fontLetterSpacing:
          type: number
          format: double
        fontColorLight:
          type: string
        fontColorDark:
          type: string
        h1FontFamily:
          type: string
        h1FontSize:
          type: number
          format: double
        h1FontWeight:
          type: string
        h1FontDecoration:
          type: string
        h1TextTransform:
          type: string
        h1LineHeight:
          type: number
          format: double
        h1LetterSpacing:
          type: number
          format: double
        h1ColorLight:
          type: string
        h1ColorDark:
          type: string
        h2FontFamily:
          type: string
        h2FontSize:
          type: number
          format: double
        h2FontWeight:
          type: string
        h2FontDecoration:
          type: string
        h2TextTransform:
          type: string
        h2LineHeight:
          type: number
          format: double
        h2LetterSpacing:
          type: number
          format: double
        h2ColorLight:
          type: string
        h2ColorDark:
          type: string
        h3FontFamily:
          type: string
        h3FontSize:
          type: number
          format: double
        h3FontWeight:
          type: string
        h3FontDecoration:
          type: string
        h3TextTransform:
          type: string
        h3LineHeight:
          type: number
          format: double
        h3LetterSpacing:
          type: number
          format: double
        h3ColorLight:
          type: string
        h3ColorDark:
          type: string
        h4FontFamily:
          type: string
        h4FontSize:
          type: number
          format: double
        h4FontWeight:
          type: string
        h4FontDecoration:
          type: string
        h4TextTransform:
          type: string
        h4LineHeight:
          type: number
          format: double
        h4LetterSpacing:
          type: number
          format: double
        h4ColorLight:
          type: string
        h4ColorDark:
          type: string
        h5FontFamily:
          type: string
        h5FontSize:
          type: number
          format: double
        h5FontWeight:
          type: string
        h5FontDecoration:
          type: string
        h5TextTransform:
          type: string
        h5LineHeight:
          type: number
          format: double
        h5LetterSpacing:
          type: number
          format: double
        h5ColorLight:
          type: string
        h5ColorDark:
          type: string
        h6FontFamily:
          type: string
        h6FontSize:
          type: number
          format: double
        h6FontWeight:
          type: string
        h6FontDecoration:
          type: string
        h6TextTransform:
          type: string
        h6LineHeight:
          type: number
          format: double
        h6LetterSpacing:
          type: number
          format: double
        h6ColorLight:
          type: string
        h6ColorDark:
          type: string
        navigationFontFamily:
          type: string
        navigationFontSize:
          type: number
          format: double
        navigationFontWeight:
          type: string
        navigationFontDecoration:
          type: string
        navigationTextTransform:
          type: string
        navigationLineHeight:
          type: number
          format: double
        navigationLetterSpacing:
          type: number
          format: double
        navigationColorLight:
          type: string
        navigationColorDark:
          type: string
        subNavigationFontFamily:
          type: string
        subNavigationFontSize:
          type: number
          format: double
        subNavigationFontWeight:
          type: string
        subNavigationFontDecoration:
          type: string
        subNavigationTextTransform:
          type: string
        subNavigationLineHeight:
          type: number
          format: double
        subNavigationLetterSpacing:
          type: number
          format: double
        subNavigationColorLight:
          type: string
        subNavigationColorDark:
          type: string
        bodyFontFamily:
          type: string
        bodyFontSize:
          type: number
          format: double
        bodyFontWeight:
          type: string
        bodyFontDecoration:
          type: string
        bodyTextTransform:
          type: string
        bodyLineHeight:
          type: number
          format: double
        bodyLetterSpacing:
          type: number
          format: double
        bodyColorLight:
          type: string
        bodyColorDark:
          type: string
        hyperlinkFontFamily:
          type: string
        hyperlinkFontSize:
          type: number
          format: double
        hyperlinkFontWeight:
          type: string
        hyperlinkFontDecoration:
          type: string
        hyperlinkTextTransform:
          type: string
        hyperlinkLineHeight:
          type: number
          format: double
        hyperlinkLetterSpacing:
          type: number
          format: double
        hyperlinkColorLight:
          type: string
        hyperlinkColorDark:
          type: string
    Tag:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    Tuple2LongLong:
      type: object
      properties:
        t1:
          type: integer
          format: int64
        t2:
          type: integer
          format: int64
    Url:
      allOf:
        - $ref: '#/components/schemas/PropertyFormat'
    UsedInResult:
      type: object
      properties:
        recordUuids:
          type: array
          items:
            type: string
        count:
          type: integer
          format: int64
    UserTrait:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        icon:
          type: string
        defaultTeam:
          $ref: '#/components/schemas/Record'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
        caraerObject:
          $ref: '#/components/schemas/CaraerObject'
      required:
        - uuid
    ViewDTO:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        favorite:
          type: boolean
        team:
          type: boolean
        shared:
          type: boolean
        personal:
          type: boolean
        trait:
          type: string
        filters:
          $ref: '#/components/schemas/Filter'
        shows:
          type: array
          items:
            $ref: '#/components/schemas/ShowItem'
        sorts:
          type: array
          items:
            $ref: '#/components/schemas/SortItem'
        limit:
          type: integer
          format: int32
        showIcons:
          type: boolean
        groupProperty:
          $ref: '#/components/schemas/SortItem'
        rowHeight:
          type: string
        calculations:
          type: array
          items:
            $ref: '#/components/schemas/Calculation'
        query:
          type: string
        icon:
          type: string
        flowProperty:
          type: string
        defaultView:
          type: boolean
        isInternallyPublic:
          type: boolean
      required:
        - uuid
    WebpageDTO:
      type: object
      description: >-
        Data transfer object representing a webpage with its various states,
        properties, and associated form/versions
      properties:
        environment:
          type: string
          description: The environment of the webpage.
        uuid:
          type: string
          description: The UUID of the webpage.
        title:
          type: string
          description: The title of the webpage.
          example: Homepage
        excerpt:
          type: string
          description: Short summary or excerpt displayed for the webpage.
          example: This is a summary of the webpage.
        slug:
          type: string
          description: URL-friendly identifier for the webpage.
          example: homepage
        image:
          type: string
          description: URL or identifier of the image associated with the webpage.
          example: https://example.com/image.jpg
        customCss:
          type: string
          description: Custom CSS for the webpage.
        customJsHead:
          type: string
          description: Custom JS for the webpage.
        customJsBody:
          type: string
          description: Custom JS for the webpage.
        content:
          $ref: '#/components/schemas/PageContentDTO'
          description: Content of the webpage
        sidebar:
          $ref: '#/components/schemas/PreviewDTO'
          description: Preview of the sidebar
        sidebarRelation:
          $ref: '#/components/schemas/RelationDTO'
          description: Relation of the sidebar
        sidebarObject:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: Object of the sidebar
        record:
          $ref: '#/components/schemas/Record'
          description: >-
            The Record object associated with the webpage, representing
            application data.
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: >-
            The Object object associated with the webpage, representing
            application data.
        options:
          $ref: '#/components/schemas/WebpageOptionsDTO'
          description: Custom options and configurations specific to the webpage.
        metaData:
          type: object
          additionalProperties: {}
          description: Map of additional metadata and attributes for the webpage.
          example:
            author: John Doe
            category: blog
        publishedBy:
          type: string
          description: Identifier of the user or process that published the webpage
        publishedAt:
          type: integer
          format: int64
          description: Timestamp representing when the webpage was published
          example: 1686582457000
        unpublishedBy:
          type: string
          description: Identifier of the user or process that unpublished the webpage
        unpublishedAt:
          type: integer
          format: int64
          description: Timestamp representing when the webpage was unpublished
          example: 1686592457000
        publishAt:
          type: integer
          format: int64
          description: Scheduled timestamp for when the webpage will be published
          example: 1686602457000
        unpublishAt:
          type: integer
          format: int64
          description: Scheduled timestamp for when the webpage will be unpublished
          example: 1686702457000
        isPublished:
          type: boolean
          default: false
          description: Flag indicating whether the webpage is currently published
    WebpageOptionsDTO:
      type: object
      description: Data Transfer Object representing options for a webpage.
      properties:
        relatedToTemplate:
          type: boolean
          description: Indicates if the webpage is related to a template.
          example: true
      required:
        - relatedToTemplate
    UpdateResponse:
      type: object
      description: Represents the response returned after a successful update operation.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
    CaraerErrorType:
      type: object
      properties:
        correctionSuggestion:
          type: string
          description: A suggestion on how to correct the error.
          example: Try uploading a different file type.
        message:
          type: string
          description: The error message providing details about the failure.
          example: Invalid file type.
        type:
          type: string
          description: The type of error.
          enum:
            - VALIDATION
            - NOT_FOUND
            - TEST
            - RELATION_NOT_ALLOWED
            - INVALID_VALUE
            - GENERAL
            - INVALID_FILE_TYPE
            - INTERNAL_SERVER_ERROR
            - CARAER_ERROR
            - INVALID_EMAIL
            - INVALID_DATE
          example: INVALID_FILE_TYPE
      required:
        - correctionSuggestion
        - message
        - type
    NotFoundError:
      type: object
      properties:
        cause:
          type: object
          properties:
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  methodName:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  nativeMethod:
                    type: boolean
                  className:
                    type: string
            message:
              type: string
            localizedMessage:
              type: string
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              nativeMethod:
                type: boolean
              className:
                type: string
        errors:
          type: array
          description: The error message providing details about the failure.
          example: Resource not found.
          items:
            $ref: '#/components/schemas/CaraerErrorType'
        code:
          type: integer
          format: int32
          description: The HTTP status code associated with the error.
          example: 404
        suppressed:
          type: array
          items:
            type: object
            properties:
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    nativeMethod:
                      type: boolean
                    className:
                      type: string
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string
        correctionSuggestion:
          type: string
          description: A suggestion on how to correct the error.
          example: Try uploading a different file type.
        message:
          type: string
          description: The error message providing details about the failure.
          example: Invalid file type.
        uuid:
          type: string
      required:
        - correctionSuggestion
        - message
    WebMenuDTO:
      type: object
      description: Data transfer object representing the structure of a web menu
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        title:
          type: string
          description: The title of the web menu
          example: Main Menu
        active:
          type: boolean
          description: Indicates whether the web menu is active
          example: true
        environments:
          type: array
          description: The environments of the web menu
          example:
            - production
            - development
          items:
            type: string
        location:
          type: string
          description: >-
            The location of the web menu in the UI, e.g., 'footer_block_1' or
            'header'
          example: header
        urls:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
            description: A list of URLs represented as maps with labels and links
        items:
          type: array
          items:
            $ref: '#/components/schemas/WebMenuItem'
            description: A list of items represented as maps with labels and links
        text:
          type: string
          description: The text of the web menu
          example: Welcome to our website
      required:
        - name
        - uuid
    WebMenuItem:
      type: object
      properties:
        label:
          type: string
        url:
          type: string
        icon:
          type: string
        image:
          type: string
    ErrorResponse:
      type: object
      description: Defines the structure of error responses returned by the API.
      properties:
        message:
          type: string
          description: The error message providing details about the failure.
          example: Resource not found.
        errors:
          $ref: '#/components/schemas/CaraerErrorType'
          description: A list of error types providing further details about the error.
          example:
            - field: name
              message: Name is required.
              correctionSuggestion: Please provide a name.
        status:
          type: integer
          format: int32
          description: The HTTP status code associated with the error.
          example: 400
        stackTrace:
          type: string
        roles:
          type: array
          items:
            type: string
            enum:
              - USER
              - ADMIN
              - RESELLER
              - DEVELOPER
              - SUPER_ADMIN
        scopes:
          type: array
          items:
            type: string
    RecordDTO:
      type: object
      description: Data Transfer Object for representing a record with dynamic properties.
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        properties:
          type: object
          additionalProperties: {}
          description: >-
            A map of property names to their corresponding values for this
            record.
          example:
            key1: value1
            key2: 123
        user:
          $ref: '#/components/schemas/PublicUserDTO'
          description: The user of the record if the user trait is enabled.
      required:
        - name
        - uuid
    Response: {}
    Team:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        description:
          type: string
        scopes:
          type: array
          items:
            type: string
        filtersString:
          type: string
        filters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Filter'
        members:
          type: array
          items:
            $ref: '#/components/schemas/Record'
        memberCount:
          type: integer
          format: int64
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    MappingDTO:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        sourceUrl:
          type: string
        syncRate:
          type: integer
          format: int32
        active:
          type: boolean
        mappingItems:
          type: array
          items:
            $ref: '#/components/schemas/MappingItemDTO'
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
        unpublishWhenNotInSource:
          type: boolean
      required:
        - name
        - uuid
    MappingItemDTO:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        sourceField:
          type: string
        targetObject:
          $ref: '#/components/schemas/CaraerObjectDTO'
        targetProperty:
          $ref: '#/components/schemas/PropertyDTO'
        conversionFunction:
          type: string
      required:
        - name
        - uuid
    SyncDTO:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/MappingDTO'
      required:
        - name
        - uuid
    SuccessResponse:
      type: object
      description: >-
        Represents a standard successful response with a message and optional
        data.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
    ViewShareRequest:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/Record'
        teams:
          type: array
          items:
            $ref: '#/components/schemas/Record'
        isInternallyPublic:
          type: boolean
    SavePropertyDTO:
      type: object
      description: DTO representing a property to be saved
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The internal name of the property
          example: property_name
        label:
          type: string
          description: The display label of the property
          example: Property Label
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        description:
          type: string
          description: A brief description of the property
          example: This is a sample property description
        type:
          type: string
          description: The data type of the property
          example: string
        options:
          type: array
          description: List of available options for the property
          items:
            $ref: '#/components/schemas/PropertyOption'
        group:
          type: string
          description: The group to which this property belongs
          example: General
        format:
          type: string
          description: Property format type
          example: single-line
        rules:
          type: array
          description: Collection of rules applied to the property
          items:
            type: string
        hidden:
          type: boolean
          description: Indicates if the property is hidden by default
          example: false
        nonPublic:
          type: boolean
          description: Indicates if the property is not accessible publicly
          example: false
        indexed:
          type: boolean
          description: Indicates if the property is indexed
          example: false
        formatSettings:
          type: object
          additionalProperties: {}
          description: Settings to configure the format of the property
        immutable:
          type: boolean
          description: Indicates if the property is immutable
          example: false
        editable:
          type: boolean
          description: Indicates if the property can be edited
          example: true
        icon:
          type: string
          description: The icon associated with the property
          example: icon_name
        webpagePublic:
          type: boolean
          description: Indicates if the property is webpage public
          example: false
        embeddable:
          type: boolean
          description: Indicates if the property is embeddable
          example: false
      required:
        - uuid
    SavedFilterDTO:
      type: object
      description: Data transfer object representing a saved filter configuration
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name identifier of the saved filter
          minLength: 1
        label:
          type: string
          description: Display label for the saved filter
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        description:
          type: string
          description: Description of what this saved filter is used for
        mainObject:
          type: string
          description: The main object for the saved filter
        filter:
          $ref: '#/components/schemas/Filter'
          description: The filter definition used when querying records
      required:
        - name
        - uuid
    BillingSettingsDTO:
      type: object
      description: The billing settings of the company.
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        billingEmail:
          type: string
          description: The email address of the billing contact.
        address:
          type: string
          description: The address of the billing contact.
        city:
          type: string
          description: The city of the billing contact.
        state:
          type: string
          description: The state of the billing contact.
        zip:
          type: string
          description: The zip code of the billing contact.
        country:
          type: string
          description: The country of the billing contact.
      required:
        - name
        - uuid
    CompanyDTO:
      type: object
      description: A DTO representing a company with its various settings and details.
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        details:
          $ref: '#/components/schemas/CompanyDetailsDTO'
          description: The details of the company.
        digitalIdentity:
          $ref: '#/components/schemas/DigitalIdentityDTO'
          description: The digital identity of the company.
        websiteSettings:
          $ref: '#/components/schemas/WebsiteSettingsDTO'
          description: The website settings of the company.
        billingSettings:
          $ref: '#/components/schemas/BillingSettingsDTO'
          description: The billing settings of the company.
      required:
        - name
        - uuid
    CompanyDetailsDTO:
      type: object
      description: A DTO representing the details of a company.
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        twitter:
          type: string
          description: The twitter/X url of the company.
        linkedIn:
          type: string
          description: The linkedin url of the company.
        facebook:
          type: string
          description: The facebook url of the company.
        youtube:
          type: string
          description: The youtube url of the company.
        instagram:
          type: string
          description: The instagram url of the company.
        address:
          type: string
          description: The address of the company.
        city:
          type: string
          description: The city of the company.
        state:
          type: string
          description: The state of the company.
        zip:
          type: string
          description: The zip code of the company.
        country:
          type: string
          description: The country of the company.
        phone:
          type: string
          description: The phone number of the company.
        email:
          type: string
          description: The email of the company.
        website:
          type: string
          description: The website of the company.
        unsubscribeLink:
          type: string
          description: The unsubscribe link of the company.
        cookiePolicy:
          type: string
          description: The cookie policy of the company.
        privacyPolicy:
          type: string
          description: The privacy policy of the company.
        termsAndConditions:
          type: string
          description: The terms and conditions of the company.
        disclaimer:
          type: string
          description: The disclaimer of the company.
      required:
        - name
        - uuid
    DigitalIdentityDTO:
      type: object
      description: A DTO representing the digital identity of a company.
      properties:
        lightPrimaryColor:
          type: string
          description: The primary color of the company in light mode.
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        lightFontColor:
          type: string
          description: The font color of the company in light mode.
        lightSecondaryColor:
          type: string
          description: The secondary color of the company in light mode.
        lightPrimary100Color:
          type: string
          description: The primary 100 color of the company in light mode.
        lightAccentColor:
          type: string
          description: The accent color of the company in light mode.
        lightBlackColor:
          type: string
          description: The black color of the company in light mode.
        lightGray900Color:
          type: string
          description: The gray 900 color of the company in light mode.
        lightGray800Color:
          type: string
          description: The gray 800 color of the company in light mode.
        lightGray700Color:
          type: string
          description: The gray 700 color of the company in light mode.
        lightGray600Color:
          type: string
          description: The gray 600 color of the company in light mode.
        lightGray500Color:
          type: string
          description: The gray 500 color of the company in light mode.
        lightGray400Color:
          type: string
          description: The gray 400 color of the company in light mode.
        lightGray300Color:
          type: string
          description: The gray 300 color of the company in light mode.
        lightGray200Color:
          type: string
          description: The gray 200 color of the company in light mode.
        lightGray100Color:
          type: string
          description: The gray 100 color of the company in light mode.
        lightGray50Color:
          type: string
          description: The gray 50 color of the company in light mode.
        lightWhiteColor:
          type: string
          description: The white color of the company in light mode.
        lightBackgroundColor:
          type: string
          description: The background color of the company in light mode.
        lightDestructiveColor:
          type: string
          description: The destructive color of the company in light mode.
        darkFontColor:
          type: string
          description: The font color of the company in dark mode.
        darkPrimaryColor:
          type: string
          description: The primary color of the company in dark mode.
        darkSecondaryColor:
          type: string
          description: The secondary color of the company in dark mode.
        darkPrimary100Color:
          type: string
          description: The primary 100 color of the company in dark mode.
        darkAccentColor:
          type: string
          description: The accent color of the company in dark mode.
        darkBlackColor:
          type: string
          description: The black color of the company in dark mode.
        darkGray900Color:
          type: string
          description: The gray 900 color of the company in dark mode.
        darkGray800Color:
          type: string
          description: The gray 800 color of the company in dark mode.
        darkGray700Color:
          type: string
          description: The gray 700 color of the company in dark mode.
        darkGray600Color:
          type: string
          description: The gray 600 color of the company in dark mode.
        darkGray500Color:
          type: string
          description: The gray 500 color of the company in dark mode.
        darkGray400Color:
          type: string
          description: The gray 400 color of the company in dark mode.
        darkGray300Color:
          type: string
          description: The gray 300 color of the company in dark mode.
        darkGray200Color:
          type: string
          description: The gray 200 color of the company in dark mode.
        darkGray100Color:
          type: string
          description: The gray 100 color of the company in dark mode.
        darkGray50Color:
          type: string
          description: The gray 50 color of the company in dark mode.
        darkWhiteColor:
          type: string
          description: The white color of the company in dark mode.
        darkBackgroundColor:
          type: string
          description: The background color of the company in dark mode.
        darkDestructiveColor:
          type: string
          description: The destructive color of the company in dark mode.
      required:
        - name
        - uuid
    WebsiteSettingsDTO:
      type: object
      description: The website settings of the company.
      properties:
        subdomain:
          type: string
        customDomain:
          type: string
        recordType:
          type: string
        recordValue:
          type: string
        favicon:
          type: string
        logo:
          type: string
        logoDark:
          type: string
        logoLight:
          type: string
        logoUrl:
          type: string
        logoWidth:
          type: number
          format: float
        logoHeight:
          type: number
          format: float
        headerLayout:
          type: string
        headerminHeight:
          type: number
          format: float
        headerMaxHeight:
          type: number
          format: float
        headerMinWidth:
          type: number
          format: float
        headerMaxWidth:
          type: number
          format: float
        headerMarginTop:
          type: number
          format: float
        headerMarginBottom:
          type: number
          format: float
        headerMarginLeft:
          type: number
          format: float
        headerMarginRight:
          type: number
          format: float
        headerTop:
          type: number
          format: float
        headerBottom:
          type: number
          format: float
        headerLeft:
          type: number
          format: float
        headerRight:
          type: number
          format: float
        headerPaddingTop:
          type: number
          format: float
        headerPaddingBottom:
          type: number
          format: float
        headerPaddingLeft:
          type: number
          format: float
        headerPaddingRight:
          type: number
          format: float
        headerBorderRadiusTopLeft:
          type: number
          format: float
        headerBorderRadiusTopRight:
          type: number
          format: float
        headerBorderRadiusBottomLeft:
          type: number
          format: float
        headerBorderRadiusBottomRight:
          type: number
          format: float
        headerBorderWidthTop:
          type: number
          format: float
        headerBorderWidthBottom:
          type: number
          format: float
        headerBorderWidthLeft:
          type: number
          format: float
        headerBorderWidthRight:
          type: number
          format: float
        headerBorderColorTop:
          type: string
        headerBorderColorBottom:
          type: string
        headerBorderColorLeft:
          type: string
        headerBorderColorRight:
          type: string
        headerBorderStyleTop:
          type: string
        headerBorderStyleBottom:
          type: string
        headerBorderStyleLeft:
          type: string
        headerBorderStyleRight:
          type: string
        stickyHeader:
          type: boolean
        stickyHeaderOnMobile:
          type: boolean
        headerItemSpacing:
          type: number
          format: float
        defaultLightHeader:
          type: boolean
        headerShrinkOnScroll:
          type: boolean
        headerShrinkOnScrollOffset:
          type: number
          format: float
        headerShrinkOnScrollSpeed:
          type: number
          format: float
        headerShrinkOnScrollEasing:
          type: boolean
        headerShrinkOnScrollEasingDuration:
          type: number
          format: float
        headerShrinkOnScrollEasingDelay:
          type: number
          format: float
        headerShrinkOnScrollEasingFunction:
          type: string
        headerBackgroundColor:
          type: string
        headerForegroundColor:
          type: string
        headerBlur:
          type: boolean
        headerBlurAmount:
          type: number
          format: float
        headerOpacity:
          type: number
          format: float
        headerShadow:
          type: boolean
        headerButtonStyle:
          type: string
        headerButtonText:
          type: string
        headerButtonTextColor:
          type: string
        headerButtonLink:
          type: string
        headerButtonIcon:
          type: string
        headerButtonIconPosition:
          type: string
        headerButtonIconColor:
          type: string
        headerSecondaryButtonStyle:
          type: string
        headerSecondaryButtonText:
          type: string
        headerSecondaryButtonTextColor:
          type: string
        headerSecondaryButtonLink:
          type: string
        headerSecondaryButtonIcon:
          type: string
        headerSecondaryButtonIconPosition:
          type: string
        headerSecondaryButtonIconColor:
          type: string
        headerTertiaryButtonStyle:
          type: string
        headerTertiaryButtonText:
          type: string
        headerTertiaryButtonTextColor:
          type: string
        headerTertiaryButtonLink:
          type: string
        headerTertiaryButtonIcon:
          type: string
        headerTertiaryButtonIconPosition:
          type: string
        headerTertiaryButtonIconColor:
          type: string
        cookieText:
          type: string
        cookieAgreementText:
          type: string
        cssStyles:
          type: string
        headJsScript:
          type: string
        bodyJsScript:
          type: string
        footerImage:
          type: string
        footerImagePosition:
          type: string
        footerImageSize:
          type: string
        footerImageRepeat:
          type: string
        footerImageOpacity:
          type: number
          format: double
        footerCopyrightText:
          type: string
        footerCompanyName:
          type: string
        footerCompanyLink:
          type: string
        footerCompanyText:
          type: string
        backToTopButton:
          type: boolean
        backToTopButtonPosition:
          type: string
        backToTopButtonIcon:
          type: string
        backToTopButtonIconPosition:
          type: string
        backToTopButtonText:
          type: string
        backToTopButtonColor:
          type: string
        backToTopButtonBackgroundColor:
          type: string
        backToTopButtonBorderColor:
          type: string
        backToTopButtonOnMobile:
          type: boolean
        animatedAnchorLinks:
          type: boolean
        maxWebsiteContainerWidth:
          type: number
          format: float
        disableAnimationsOnMobile:
          type: boolean
        mainStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        rowStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        columnStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        sectionStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        textStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        primaryButtonStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        secondaryButtonStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        tertiaryButtonStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        imageStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        videoStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        formStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        sliderStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        accordionStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        previewStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        iconStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        codeStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        shareStyling:
          $ref: '#/components/schemas/PageContentStylingDTO'
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
      required:
        - name
        - uuid
    AppRequest:
      type: object
      description: DTO representing an application request with configurable settings
      properties:
        settings:
          type: array
          description: >-
            A map of configuration settings. The keys are strings representing
            the setting names, and the values represent the setting values,
            which can be different types.
          example:
            theme: dark
            notifications: true
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
    AppSettingFieldSchema:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        type:
          type: string
        required:
          type: boolean
        helpText:
          type: string
        options:
          type: array
          items:
            $ref: '#/components/schemas/SettingOption'
        defaultValue: {}
        hidden:
          type: boolean
        sourceFieldKey:
          type: string
        targetFieldKey:
          type: string
        objectName:
          type: string
        value: {}
    ApiToken:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        token:
          type: string
        expiresAt:
          type: integer
          format: int64
        user:
          $ref: '#/components/schemas/User'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    App:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        privateApp:
          type: boolean
        webhookSecret:
          type: string
        description:
          $ref: '#/components/schemas/AppDescription'
        details:
          $ref: '#/components/schemas/AppDetails'
        pricing:
          $ref: '#/components/schemas/AppPricing'
        appBars:
          type: array
          items:
            $ref: '#/components/schemas/AppBar'
        hasApp:
          $ref: '#/components/schemas/HAS_APP'
        webhookRateLimitPerMinute:
          type: integer
          format: int32
        settingsSchema:
          type: string
        appPublish:
          $ref: '#/components/schemas/AppPublish'
        creator:
          $ref: '#/components/schemas/Company'
        settingsSchemaList:
          type: array
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppBar:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        app:
          $ref: '#/components/schemas/App'
        location:
          type: string
          enum:
            - PREVIEW
            - OVERVIEW
            - WEBPAGE
        settingsSchema:
          type: string
        settingsValues:
          type: string
        actionType:
          type: string
        actionUrl:
          type: string
        actionMethod:
          type: string
        actionHeaders:
          type: string
        settingsSchemaList:
          type: array
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppBarDTO:
      type: object
      description: >-
        Data transfer object for an app bar (location-specific settings and
        action config)
      properties:
        uuid:
          type: string
          description: Unique identifier for the app bar
        location:
          type: string
          description: 'Bar location: PREVIEW, OVERVIEW, WEBPAGE'
          enum:
            - PREVIEW
            - OVERVIEW
            - WEBPAGE
        settingsSchema:
          type: array
          description: JSON array of AppSettingFieldSchema (field definitions)
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
        actionType:
          type: string
          description: 'Action type: e.g. WEBHOOK, SERVERLESS'
        actionUrl:
          type: string
          description: URL to invoke (webhook or serverless)
        actionMethod:
          type: string
          description: HTTP method (e.g. POST)
        actionHeaders:
          type: string
          description: JSON map of HTTP headers
    AppCreatorDTO:
      type: object
      description: Full app payload (AppCreatorDTO) to apply
      properties:
        uuid:
          type: string
          description: Unique identifier for the application
        name:
          type: string
          description: Internal name identifier for the application
        label:
          type: string
          description: Display label for the application
        privateApp:
          type: boolean
          description: Whether the app is private to the company
        description:
          $ref: '#/components/schemas/AppDescription'
          description: Detailed description of the application
        details:
          $ref: '#/components/schemas/AppDetails'
          description: >-
            Additional details and specifications (title, subtitle, image, url,
            category)
        pricing:
          $ref: '#/components/schemas/AppPricing'
          description: Pricing information and plans
        settingsSchema:
          type: array
          description: App-level setting field definitions
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
        appPublish:
          $ref: '#/components/schemas/AppPublishDTO'
          description: Publish and review state (creator-only)
        appBars:
          type: array
          description: App bars (location-specific settings and actions)
          items:
            $ref: '#/components/schemas/AppBarDTO'
        hasApp:
          $ref: '#/components/schemas/HasAppDTO'
          description: Installation link when app is installed for creator's company
        image:
          type: string
          description: 'Convenience: image URL from details'
        url:
          type: string
          description: 'Convenience: app URL from details'
        category:
          type: string
          description: 'Convenience: category from details'
    AppDescription:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        app:
          $ref: '#/components/schemas/App'
        title:
          type: string
        text:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppDetails:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        app:
          $ref: '#/components/schemas/App'
        title:
          type: string
        subtitle:
          type: string
        description:
          type: string
        image:
          type: string
        url:
          type: string
        category:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppPlan:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        pricing:
          $ref: '#/components/schemas/AppPricing'
        title:
          type: string
        price:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppPricing:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        app:
          $ref: '#/components/schemas/App'
        plans:
          type: array
          items:
            $ref: '#/components/schemas/AppPlan'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppPublish:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        app:
          $ref: '#/components/schemas/App'
        publishState:
          type: string
        submittedAt:
          type: integer
          format: int64
        reviewedAt:
          type: integer
          format: int64
        publishedAt:
          type: integer
          format: int64
        feedback:
          type: string
        reviewerNotes:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    AppPublishDTO:
      type: object
      description: Publish and review state for a public app in the marketplace
      properties:
        uuid:
          type: string
          description: Unique identifier for the publish record
        publishState:
          type: string
          description: >-
            Publish state: DRAFT, SUBMITTED, IN_REVIEW, APPROVED, PUBLISHED,
            REJECTED, CHANGES_REQUESTED
        submittedAt:
          type: integer
          format: int64
          description: Timestamp when developer submitted for review
        reviewedAt:
          type: integer
          format: int64
          description: Timestamp when review was completed
        publishedAt:
          type: integer
          format: int64
          description: Timestamp when app went live in marketplace
        feedback:
          type: string
          description: Feedback shown to developer (e.g. rejection reason)
        reviewerNotes:
          type: string
          description: Internal reviewer notes (admin only, not exposed to developer)
    BillingSettings:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        company:
          $ref: '#/components/schemas/Company'
        billingEmail:
          type: string
        address:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        country:
          type: string
        stripeCustomerId:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    Company:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        repoId:
          type: integer
          format: int64
        projectId:
          type: string
        resellerType:
          type: string
        subdomain:
          $ref: '#/components/schemas/Subdomain'
        details:
          $ref: '#/components/schemas/CompanyDetails'
        websiteSettings:
          $ref: '#/components/schemas/WebsiteSettings'
        digitalIdentity:
          $ref: '#/components/schemas/DigitalIdentity'
        billingSettings:
          $ref: '#/components/schemas/BillingSettings'
        users:
          type: array
          items:
            $ref: '#/components/schemas/User'
        subdomainName:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    CompanyDetails:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        company:
          $ref: '#/components/schemas/Company'
        twitterUrl:
          type: string
        linkedInUrl:
          type: string
        facebookUrl:
          type: string
        youtubeUrl:
          type: string
        instagramUrl:
          type: string
        address:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        country:
          type: string
        phone:
          type: string
        email:
          type: string
        website:
          type: string
        unsubscribeLink:
          type: string
        cookiePolicy:
          type: string
        privacyPolicy:
          type: string
        termsAndConditions:
          type: string
        disclaimer:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    DigitalIdentity:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        company:
          $ref: '#/components/schemas/Company'
        lightFontColor:
          type: string
        lightPrimaryColor:
          type: string
        lightSecondaryColor:
          type: string
        lightPrimary100Color:
          type: string
        lightAccentColor:
          type: string
        lightBlackColor:
          type: string
        lightGray900Color:
          type: string
        lightGray800Color:
          type: string
        lightGray700Color:
          type: string
        lightGray600Color:
          type: string
        lightGray500Color:
          type: string
        lightGray400Color:
          type: string
        lightGray300Color:
          type: string
        lightGray200Color:
          type: string
        lightGray100Color:
          type: string
        lightGray50Color:
          type: string
        lightWhiteColor:
          type: string
        lightBackgroundColor:
          type: string
        lightDestructiveColor:
          type: string
        darkFontColor:
          type: string
        darkPrimaryColor:
          type: string
        darkSecondaryColor:
          type: string
        darkPrimary100Color:
          type: string
        darkAccentColor:
          type: string
        darkBlackColor:
          type: string
        darkGray900Color:
          type: string
        darkGray800Color:
          type: string
        darkGray700Color:
          type: string
        darkGray600Color:
          type: string
        darkGray500Color:
          type: string
        darkGray400Color:
          type: string
        darkGray300Color:
          type: string
        darkGray200Color:
          type: string
        darkGray100Color:
          type: string
        darkGray50Color:
          type: string
        darkWhiteColor:
          type: string
        darkBackgroundColor:
          type: string
        darkDestructiveColor:
          type: string
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    GrantedAuthority:
      type: object
      properties:
        authority:
          type: string
    HAS_ACCESS_TO:
      type: object
      properties:
        uuid:
          type: string
        user:
          $ref: '#/components/schemas/User'
        company:
          $ref: '#/components/schemas/Company'
        scopes:
          type: array
          items:
            type: string
        filtersString:
          type: string
        filters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Filter'
    HAS_APP:
      type: object
      properties:
        uuid:
          type: string
        company:
          $ref: '#/components/schemas/Company'
        app:
          $ref: '#/components/schemas/App'
        token:
          type: string
        scopes:
          type: array
          items:
            type: string
        settingsValues:
          type: string
    HasAppDTO:
      type: object
      description: >-
        Installation link between a company and an app (per-installation
        settings and token)
      properties:
        uuid:
          type: string
          description: Unique identifier for the installation relationship
        token:
          type: string
          description: Installation token
        scopes:
          type: array
          description: Scopes granted to this installation
          items:
            type: string
        settingsValues:
          type: string
          description: >-
            Per-installation app setting values (JSON object keyed by setting
            name)
    Subdomain:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    User:
      type: object
      properties:
        uuid:
          type: string
        email:
          type: string
        password:
          type: string
        firstname:
          type: string
        lastname:
          type: string
        lastLogin:
          type: integer
          format: int64
        emailVerifiedAt:
          type: integer
          format: int64
        picture:
          type: string
        locale:
          type: string
        hasAccessTo:
          type: array
          items:
            $ref: '#/components/schemas/HAS_ACCESS_TO'
        apiToken:
          $ref: '#/components/schemas/ApiToken'
        emailToken:
          type: string
        resetPasswordToken:
          type: string
        globalRole:
          type: string
        selectedCompany:
          $ref: '#/components/schemas/Company'
        selectedCompanyAccess:
          $ref: '#/components/schemas/HAS_ACCESS_TO'
        record:
          $ref: '#/components/schemas/Record'
        team:
          $ref: '#/components/schemas/Team'
        credentialsNonExpired:
          type: boolean
        accountNonExpired:
          type: boolean
        accountNonLocked:
          type: boolean
        enabled:
          type: boolean
        database:
          type: string
        username:
          type: string
        initials:
          type: string
        companies:
          type: array
          items:
            $ref: '#/components/schemas/Company'
          uniqueItems: true
        authorities:
          type: array
          items:
            $ref: '#/components/schemas/GrantedAuthority'
    WebsiteSettings:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        label:
          type: string
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        deletedAt:
          type: integer
          format: int64
        createdByUuid:
          type: string
        updatedByUuid:
          type: string
        deletedByUuid:
          type: string
        index:
          type: integer
          format: int32
        company:
          $ref: '#/components/schemas/Company'
        customDomain:
          type: string
        recordType:
          type: string
        recordValue:
          type: string
        favicon:
          type: string
        logo:
          type: string
        logoDark:
          type: string
        logoLight:
          type: string
        logoUrl:
          type: string
        logoWidth:
          type: number
          format: float
        logoHeight:
          type: number
          format: float
        headerLayout:
          type: string
        headerminHeight:
          type: number
          format: float
        headerMaxHeight:
          type: number
          format: float
        headerMinWidth:
          type: number
          format: float
        headerMaxWidth:
          type: number
          format: float
        headerMarginTop:
          type: number
          format: float
        headerMarginBottom:
          type: number
          format: float
        headerMarginLeft:
          type: number
          format: float
        headerMarginRight:
          type: number
          format: float
        headerTop:
          type: number
          format: float
        headerBottom:
          type: number
          format: float
        headerLeft:
          type: number
          format: float
        headerRight:
          type: number
          format: float
        headerPaddingTop:
          type: number
          format: float
        headerPaddingBottom:
          type: number
          format: float
        headerPaddingLeft:
          type: number
          format: float
        headerPaddingRight:
          type: number
          format: float
        headerBorderRadiusTopLeft:
          type: number
          format: float
        headerBorderRadiusTopRight:
          type: number
          format: float
        headerBorderRadiusBottomLeft:
          type: number
          format: float
        headerBorderRadiusBottomRight:
          type: number
          format: float
        headerBorderWidthTop:
          type: number
          format: float
        headerBorderWidthBottom:
          type: number
          format: float
        headerBorderWidthLeft:
          type: number
          format: float
        headerBorderWidthRight:
          type: number
          format: float
        headerBorderColorTop:
          type: string
        headerBorderColorBottom:
          type: string
        headerBorderColorLeft:
          type: string
        headerBorderColorRight:
          type: string
        headerBorderStyleTop:
          type: string
        headerBorderStyleBottom:
          type: string
        headerBorderStyleLeft:
          type: string
        headerBorderStyleRight:
          type: string
        stickyHeader:
          type: boolean
        stickyHeaderOnMobile:
          type: boolean
        headerItemSpacing:
          type: number
          format: float
        defaultLightHeader:
          type: boolean
        headerShrinkOnScroll:
          type: boolean
        headerShrinkOnScrollOffset:
          type: number
          format: float
        headerShrinkOnScrollSpeed:
          type: number
          format: float
        headerShrinkOnScrollEasing:
          type: boolean
        headerShrinkOnScrollEasingDuration:
          type: number
          format: float
        headerShrinkOnScrollEasingDelay:
          type: number
          format: float
        headerShrinkOnScrollEasingFunction:
          type: string
        headerBackgroundColor:
          type: string
        headerForegroundColor:
          type: string
        headerBlur:
          type: boolean
        headerBlurAmount:
          type: number
          format: float
        headerOpacity:
          type: number
          format: float
        headerShadow:
          type: boolean
        notificationBarText:
          type: string
        headerButtonStyle:
          type: string
        headerButtonText:
          type: string
        headerButtonTextColor:
          type: string
        headerButtonLink:
          type: string
        headerButtonIcon:
          type: string
        headerButtonIconPosition:
          type: string
        headerButtonIconColor:
          type: string
        headerSecondaryButtonStyle:
          type: string
        headerSecondaryButtonText:
          type: string
        headerSecondaryButtonTextColor:
          type: string
        headerSecondaryButtonLink:
          type: string
        headerSecondaryButtonIcon:
          type: string
        headerSecondaryButtonIconPosition:
          type: string
        headerSecondaryButtonIconColor:
          type: string
        headerTertiaryButtonStyle:
          type: string
        headerTertiaryButtonText:
          type: string
        headerTertiaryButtonTextColor:
          type: string
        headerTertiaryButtonLink:
          type: string
        headerTertiaryButtonIcon:
          type: string
        headerTertiaryButtonIconPosition:
          type: string
        headerTertiaryButtonIconColor:
          type: string
        cookieText:
          type: string
        cookieAgreementText:
          type: string
        cssStyles:
          type: string
        headJsScript:
          type: string
        bodyJsScript:
          type: string
        footerImage:
          type: string
        footerImagePosition:
          type: string
        footerImageSize:
          type: string
        footerImageRepeat:
          type: string
        footerImageOpacity:
          type: number
          format: double
        footerCopyrightText:
          type: string
        footerCompanyName:
          type: string
        footerCompanyLink:
          type: string
        footerCompanyText:
          type: string
        backToTopButton:
          type: boolean
        backToTopButtonPosition:
          type: string
        backToTopButtonIcon:
          type: string
        backToTopButtonIconPosition:
          type: string
        backToTopButtonText:
          type: string
        backToTopButtonColor:
          type: string
        backToTopButtonBackgroundColor:
          type: string
        backToTopButtonBorderColor:
          type: string
        backToTopButtonOnMobile:
          type: boolean
        animatedAnchorLinks:
          type: boolean
        maxWebsiteContainerWidth:
          type: number
          format: float
        disableAnimationsOnMobile:
          type: boolean
        mainStylingString:
          type: string
        mainStyling:
          $ref: '#/components/schemas/PageContentStyling'
        rowStylingString:
          type: string
        rowStyling:
          $ref: '#/components/schemas/PageContentStyling'
        columnStylingString:
          type: string
        columnStyling:
          $ref: '#/components/schemas/PageContentStyling'
        sectionStylingString:
          type: string
        sectionStyling:
          $ref: '#/components/schemas/PageContentStyling'
        textStylingString:
          type: string
        textStyling:
          $ref: '#/components/schemas/PageContentStyling'
        primaryButtonStylingString:
          type: string
        primaryButtonStyling:
          $ref: '#/components/schemas/PageContentStyling'
        secondaryButtonStylingString:
          type: string
        secondaryButtonStyling:
          $ref: '#/components/schemas/PageContentStyling'
        tertiaryButtonStylingString:
          type: string
        tertiaryButtonStyling:
          $ref: '#/components/schemas/PageContentStyling'
        imageStylingString:
          type: string
        imageStyling:
          $ref: '#/components/schemas/PageContentStyling'
        videoStylingString:
          type: string
        videoStyling:
          $ref: '#/components/schemas/PageContentStyling'
        formStylingString:
          type: string
        formStyling:
          $ref: '#/components/schemas/PageContentStyling'
        sliderStylingString:
          type: string
        sliderStyling:
          $ref: '#/components/schemas/PageContentStyling'
        accordionStylingString:
          type: string
        accordionStyling:
          $ref: '#/components/schemas/PageContentStyling'
        previewStylingString:
          type: string
        previewStyling:
          $ref: '#/components/schemas/PageContentStyling'
        iconStylingString:
          type: string
        iconStyling:
          $ref: '#/components/schemas/PageContentStyling'
        codeStylingString:
          type: string
        codeStyling:
          $ref: '#/components/schemas/PageContentStyling'
        shareStylingString:
          type: string
        shareStyling:
          $ref: '#/components/schemas/PageContentStyling'
        complete:
          type: boolean
        deleted:
          type: boolean
        uuid:
          type: string
          minLength: 1
      required:
        - name
        - uuid
    ShowResponse:
      type: object
      description: Represents the response for viewing or showing a specific resource.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
    CreateResponse:
      type: object
      description: Response for a successful resource creation operation.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
    TemplateWebpageDTO:
      type: object
      description: DTO for Template Webpage
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        environment:
          type: string
          description: The environment of the webpage.
        title:
          type: string
          description: The title of the webpage.
          example: Homepage
        excerpt:
          type: string
          description: Short summary or excerpt displayed for the webpage.
          example: This is a summary of the webpage.
        slug:
          type: string
          description: URL-friendly identifier for the webpage.
          example: homepage
        image:
          type: string
          description: URL or identifier of the image associated with the webpage.
          example: https://example.com/image.jpg
        customCss:
          type: string
          description: Custom CSS for the webpage.
        customJsHead:
          type: string
          description: Custom JS for the webpage.
        customJsBody:
          type: string
          description: Custom JS for the webpage.
        content:
          $ref: '#/components/schemas/PageContentDTO'
          description: Content of the webpage
        sidebar:
          $ref: '#/components/schemas/PreviewDTO'
          description: Preview of the sidebar
        sidebarRelation:
          $ref: '#/components/schemas/RelationDTO'
          description: Relation of the sidebar
        sidebarObject:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: Object of the sidebar
        options:
          $ref: '#/components/schemas/WebpageOptionsDTO'
          description: Custom options and configurations specific to the webpage.
        metaData:
          type: object
          additionalProperties: {}
          description: Map of additional metadata and attributes for the webpage.
          example:
            author: John Doe
            category: blog
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: Represents the associated Caraer object
      required:
        - name
        - uuid
    PaginationResponsePreviewDTO:
      type: object
      description: Response object for paginated data.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          type: array
          description: The data returned in the current page of the pagination.
          example:
            - id: 1
              name: Item1
            - id: 2
              name: Item2
          items:
            $ref: '#/components/schemas/PreviewDTO'
        total:
          type: integer
          format: int32
          description: The total number of items available.
          example: 100
        page:
          type: integer
          format: int32
          description: The current page number (starts from 1).
          example: 1
        perPage:
          type: integer
          format: int32
          description: The number of items displayed per page.
          example: 10
        lastPage:
          type: integer
          format: int32
          description: The last page number available for the pagination.
          example: 10
    PaginationRequest:
      description: Pagination and filtering options for the request
      example:
        filters:
          - key: name
            operator: contains
            value: example_value
          - key: deletedAt
            operator: isnull
        sort:
          - key: createdAt
            direction: desc
        show:
          - id
          - name
          - status
          - dateCreated
        limit: 25
        page: 1
        query: searchText
    PaginationResponse:
      type: object
      description: Response object for paginated data.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          type: array
          description: The data returned in the current page of the pagination.
          example:
            - id: 1
              name: Item1
            - id: 2
              name: Item2
          items: {}
        total:
          type: integer
          format: int32
          description: The total number of items available.
          example: 100
        page:
          type: integer
          format: int32
          description: The current page number (starts from 1).
          example: 1
        perPage:
          type: integer
          format: int32
          description: The number of items displayed per page.
          example: 10
        lastPage:
          type: integer
          format: int32
          description: The last page number available for the pagination.
          example: 10
    SubscribeWebhookDTO:
      type: object
      description: >-
        Data Transfer Object for subscribing to a webhook. This DTO represents
        the details required to configure a webhook subscription.
      properties:
        url:
          type: string
          description: The URL of the webhook where requests will be sent.
          example: https://example.com/webhook
        secret:
          type: string
          description: The secret used for webhook validation.
          example: abcd1234
        topic:
          type: string
          description: The topic for which the webhook is subscribed.
          example: user.created
        webhookFormat:
          type: string
          description: Webhook payload format (LEGACY, USER_FRIENDLY)
          example: LEGACY
        filter:
          $ref: '#/components/schemas/Filter'
          description: Filter criteria for webhook triggers
        includeRelations:
          type: array
          description: Records to include in webhook payload
          example:
            - candidate
            - vacancy
          items:
            type: string
        relationFilters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Filter'
          description: Filter criteria for relations
        relationLimit:
          type: integer
          format: int32
          description: Maximum number of relations to include
          example: 10
        retryEnabled:
          type: boolean
          description: Whether retry is enabled
          example: false
        maxRetries:
          type: integer
          format: int32
          description: Maximum number of retries
          example: 3
        retryBackoffMs:
          type: integer
          format: int64
          description: Retry backoff in milliseconds
          example: 1000
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
      required:
        - name
        - uuid
    MorphRecordRequest:
      type: object
      description: Request to morph a record
      properties:
        objects:
          type: array
          description: The objects to morph the record into
          items:
            $ref: '#/components/schemas/CaraerObjectDTO'
          uniqueItems: true
    CreateCompanyRequest:
      type: object
      description: >-
        DTO representing a request to create a new company, including the
        company's name and subdomain.
      properties:
        name:
          type: string
          description: The name of the company to be created.
          example: Tech Solutions
        subdomain:
          type: string
          description: >-
            The desired subdomain for the company. This will be used for
            company-specific URLs.
          example: tech-solutions
        companyName:
          type: string
          description: The company name.
          example: Tech Solutions
        copyDatabaseId:
          type: string
          description: The copy database id.
          example: caraer
        includeRecords:
          type: boolean
          description: Whether to include records in the company.
          example: true
    JsonNode: {}
    McpRequest:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/JsonNode'
        method:
          type: string
        params:
          $ref: '#/components/schemas/JsonNode'
        notification:
          type: boolean
        jsonrpc:
          type: string
    FormWithAiPromptDTO:
      type: object
      description: >-
        Data transfer object representing a form with its associated properties
        and structure
      properties:
        uuid:
          type: string
          description: Unique identifier for the entity
          minLength: 1
        name:
          type: string
          description: The name of the entity
          minLength: 1
        label:
          type: string
          description: Display label for the entity, can be different from name
        createdAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was created
        createdBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who created the entity
        updatedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was last updated
        updatedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who last updated the entity
        deletedAt:
          type: integer
          format: int64
          description: Unix timestamp when the entity was deleted (null if not deleted)
        deletedBy:
          $ref: '#/components/schemas/Record'
          description: Identifier of the user who deleted the entity
        index:
          type: integer
          format: int32
          description: Index number for ordering entities
        object:
          $ref: '#/components/schemas/CaraerObjectDTO'
          description: The associated Caraer object that this form belongs to
        grids:
          type: array
          description: >-
            List of form items that make up the form's structure. Each grid
            represents a section or group of form elements
          items:
            $ref: '#/components/schemas/FormItemDTO'
        description:
          type: string
          description: Descriptive text providing additional information about the form
        styling:
          type: string
          description: The styling of the form. Can be 'standard', 'underline' or 'plain'
        leadscores:
          type: array
          description: >-
            List of lead scoring rules associated with this form. Used to
            evaluate and score form submissions
          items:
            $ref: '#/components/schemas/Leadscore'
        relations:
          type: array
          description: >-
            List of form relations that define the relationships between this
            form conversion record and other records in the system
          items:
            $ref: '#/components/schemas/FormRelationDTO'
        wizard:
          type: boolean
          description: >-
            Indicates if the form should be displayed as a step-by-step wizard
            interface
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Metadata associated with the form
        thankYouMessage:
          type: string
          description: Thank you message to be displayed after the form is submitted
        redirectUrl:
          type: string
          description: Redirect URL to be displayed after the form is submitted
        aiPrompt:
          type: string
          description: AI prompt to be used for the form
      required:
        - name
        - uuid
    SseEmitter:
      type: object
      properties:
        timeout:
          type: integer
          format: int64
    CaraerError:
      type: object
      description: Defines the structure of error responses returned by the API.
      properties:
        cause:
          type: object
          properties:
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  methodName:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  nativeMethod:
                    type: boolean
                  className:
                    type: string
            message:
              type: string
            localizedMessage:
              type: string
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              nativeMethod:
                type: boolean
              className:
                type: string
        errors:
          type: array
          description: The error message providing details about the failure.
          example: Resource not found.
          items:
            $ref: '#/components/schemas/CaraerErrorType'
        code:
          type: integer
          format: int32
          description: The HTTP status code associated with the error.
          example: 404
        correctionSuggestion:
          type: string
          description: A suggestion on how to correct the error.
          example: Try uploading a different file type.
        message:
          type: string
          description: The error message providing details about the failure.
          example: Invalid file type.
        suppressed:
          type: array
          items:
            type: object
            properties:
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    nativeMethod:
                      type: boolean
                    className:
                      type: string
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string
      required:
        - correctionSuggestion
        - message
    ResetPasswordRequest:
      type: object
      properties:
        email:
          type: string
        token:
          type: string
        password:
          type: string
    RegisterRequest:
      type: object
      properties:
        email:
          type: string
          format: email
          minLength: 1
        password:
          type: string
          maxLength: 2147483647
          minLength: 8
        firstname:
          type: string
          minLength: 1
        lastname:
          type: string
          minLength: 1
      required:
        - email
        - firstname
        - lastname
        - password
    LoginRequest:
      type: object
      properties:
        email:
          type: string
          minLength: 1
        password:
          type: string
          minLength: 1
      required:
        - email
        - password
    InstallAppRequest:
      type: object
      description: Optional initial configuration settings
      properties:
        settings:
          type: array
          description: >-
            Optional initial configuration settings (key-value via
            AppSettingFieldSchema name/value).
          items:
            $ref: '#/components/schemas/AppSettingFieldSchema'
    ReviewRequest:
      type: object
      description: Review request with feedback, reviewer notes, and publish state
      properties:
        feedback:
          type: string
          description: Feedback shown to the developer.
          example: Please add screenshots to the app details.
        reviewerNotes:
          type: string
          description: Internal notes for reviewers (not shown to the developer).
        publishState:
          type: string
          description: 'Publish state after review: APPROVED, REJECTED, CHANGES_REQUESTED.'
          example: APPROVED
    CreatePrivateAppRequest:
      type: object
      description: Private app creation request with label and optional description
      properties:
        label:
          type: string
          description: The display label for the private app.
          example: My Custom App
        description:
          type: string
          description: Optional description text for the app.
          example: A custom app for internal use
      required:
        - label
    RestoreResponse:
      type: object
      description: >-
        Represents the response returned when a restore operation is performed
        successfully.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
    SimplePublicCompanyDTO:
      type: object
      description: Data Transfer Object representing a public-facing view of a company
      properties:
        uuid:
          type: string
          description: Unique identifier of the company
        updatedAt:
          type: integer
          format: int64
          description: Timestamp of the last update (in milliseconds since epoch)
        website:
          type: string
          description: The website URL of the company
        cookiePolicy:
          type: string
          description: Cookie policy URL of the company
        favicon:
          type: string
          description: Path to the company's favicon
        privacyPolicy:
          type: string
          description: Privacy policy URL of the company
        accentColor:
          type: string
          description: The accent color used by the company
        twitterUrl:
          type: string
          description: Twitter URL of the company's social media page
        primaryColor:
          type: string
          description: The company's primary color used in branding
        termsAndConditions:
          type: string
          description: Terms and conditions URL of the company
        facebookUrl:
          type: string
          description: URL to the company's Facebook page
        youtubeUrl:
          type: string
          description: URL to the company's YouTube page
        companyColor:
          type: string
          description: Company's branding color
        name:
          type: string
          description: Name of the company
        logo:
          type: string
          description: Path to the company's logo image
        instagramUrl:
          type: string
          description: URL to the company's Instagram page
        fontColor:
          type: string
          description: Font color used in company's branding
        secondaryColor:
          type: string
          description: Secondary color used in company's branding
        rightNavBarButtonEnabled:
          type: boolean
          description: >-
            Boolean flag indicating if the right navigation bar button is
            enabled
        rightNavBarButtonTitle:
          type: string
          description: Title of the right navigation bar button
        rightNavBarButtonLink:
          type: string
          description: Link for the right navigation bar button
        cssScript:
          type: string
          description: CSS scripts added by the company
        jsHeadScript:
          type: string
          description: JavaScript code injected into the head tag of the HTML page
        jsBodyScript:
          type: string
          description: JavaScript code injected into the body tag of the HTML page
        customDomain:
          type: string
          description: Custom domain name used by the company
    DeleteResponse:
      type: object
      description: Response class representing the result of a delete operation.
      properties:
        message:
          type: string
          description: A message detailing the result of the operation.
          example: Success
        data:
          description: The data payload of the response, if any.
  securitySchemes:
    BearerAuthentication:
      type: http
      scheme: bearer
      bearerFormat: Opaque
