DoiT API

Programmatic access to the DoiT Cloud Intelligence platform: Cloud Analytics reports and queries, allocations, dimensions, budgets, alerts, annotations, labels, anomalies, invoices, assets, contracts, DataHub ingestion, CloudFlow automation, cloud diagrams, cloud incidents, support requests, users, roles, organizations, insights, commitment manager, service quotas and the Ava AI assistant. 166 operations across 37 tags, authenticated with a bearer API token or OAuth 2.0 authorization code.

OpenAPI Specification

doit-openapi-original.yml Raw ↑
openapi: 3.0.1
info:
  title: DoiT API
  description: Programmatic access to DoiT Platform
  version: v1
servers:
  - url: https://api.doit.com
security:
  - api_key: []
  - tenantId: []
    api_key: []
tags:
  - name: Alerts
    description: Notifications triggered when cloud costs exceed defined thresholds or meet specific conditions.
  - name: Annotations
    description: Custom notes added to cost data to provide contextual information.
  - name: Labels
    description: Create and manage labels to organize and categorize your cloud resources.
  - name: Reports Settings
    description: Configure presentation settings for Cloud Analytics reports, including custom color themes.
  - name: Allocations
    description: Define how costs are distributed across your organization.
  - name: Folders
    description: Organize Cloud Analytics resources (reports, allocations) into folders.
  - name: Budgets
    description: Track actual cloud spend against planned spend.
  - name: Budget Suggestions
    description: AI-generated budget recommendations you can accept (link to a budget you created) or dismiss.
  - name: Dimensions
    description: View available dimensions for analysis.
  - name: Reports
    description: Manage Cloud Analytics reports and get reports data in JSON format.
  - name: Sharing
    description: Manage permissions associated with specified Cloud Analytics resources.
  - name: Anomalies
    description: Monitor cost spikes in your cloud environment.
  - name: Auth
    description: User authentication.
  - name: Assets
    description: Manage cloud resources or services in your cloud environment.
  - name: DataHub
    description: Ingest third-party cost, usage, and metric-based data for analysis.
  - name: Invoices
    description: Access your current and historical billing documents.
  - name: Cloud Incidents
    description: Service disruptions and outages from cloud providers.
  - name: Cloud Diagrams
    description: Cloud Diagrams visualize your cloud infrastructure and resource relationships.
  - name: AccountTeam
    description: Find DoiT account managers assigned to your organization.
  - name: Contract Templates
    description: Manage contract templates for PartnerOps resellers (T1/T2).
  - name: Users
    description: Manage users who have access to the DoiT platform.
  - name: Roles
    description: Manage user permissions and access levels in your organization.
  - name: Organizations
    description: Organizations help you segment data by your company or team structure.
  - name: Platforms
    description: Metadata about supported cloud providers.
  - name: Products
    description: Metadata about cloud services and offerings.
  - name: Support Requests
    description: Create and manage support tickets with DoiT.
  - name: Contracts
    description: List and manage tenant-scoped contracts as a T1/T2 PartnerOps caller.
  - name: Commitment Manager
    description: View and manage commitment contracts with DoiT.
  - name: Ava
    description: Interact with Ava, DoiT's AI-powered cloud assistant.
  - name: Insights
    description: Manage cloud insights representing recommendations and findings for cloud resources.
  - name: Cloud Connect
    description: Manage cloud provider connections and check feature availability for connected accounts.
  - name: Service Quotas
    description: Monitor cloud service quota usage across connected accounts and projects.
  - name: Connections
    description: Manage cloud provider connections used in CloudFlow workflows (AWS and GCP).
  - name: Templates
    description: Browse the catalogue of read-only CloudFlow templates (blueprints) used to create flows.
  - name: CloudFlow
    description: Manage CloudFlow.
  - name: PerfectScale for Commitments AWS
    description: PerfectScale for Commitments (AWS) — commitment inventory, recommendations, and planned purchases.
  - name: Billing Transfer
    description: Manage AWS billing-transfer mappings between distributors and resellers and between resellers and end customers, and list program management accounts.

paths:
  /analytics/v1/alerts:
    get:
      tags:
        - Alerts
      summary: List alerts
      description: |-
        Returns a list of alerts that your account has access to.
        Alerts are listed in reverse chronological order by default.
      operationId: listAlerts
      parameters:
        - name: sortBy
          in: query
          description: A field by which the results will be sorted.
          schema:
            type: string
            enum:
              - name
              - createTime
              - updateTime
              - lastAlerted
        - $ref: "#/components/parameters/sortOrder"
        - $ref: "#/components/parameters/maxResults"
        - $ref: "#/components/parameters/pageToken"
        - name: filter
          in: query
          description: >-
            An expression for filtering the results. The syntax is `key:[<value>]`. Multiple filters can be connected using a pipe |. See [Filters](https://developer.doit.com/docs/filters).

            Available filter keys: **owner**, **name**
          example: "name:test"
          schema:
            type: string
      responses:
        "200":
          description: >-
            OK - The request succeeded.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExternalAlertList"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Alerts
      summary: Create an alert
      description: Creates a new alert.
      operationId: createAlert
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AlertRequest"
      responses:
        "201":
          description: Created - The request succeeded.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Alert"
          links:
            getAlert:
              operationId: getAlert
              parameters:
                id: $response.body#/id
            updateAlert:
              operationId: updateAlert
              parameters:
                id: $response.body#/id
            deleteAlert:
              operationId: deleteAlert
              parameters:
                id: $response.body#/id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/alerts/{id}":
    get:
      tags:
        - Alerts
      summary: Retrieve an alert
      description: Returns an alert by the specified Id.
      operationId: getAlert
      parameters:
        - name: id
          in: path
          description: Alert ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: >-
            OK - Alert returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Alert"
          links:
            updateAlert:
              operationId: updateAlert
              parameters:
                id: $request.path.id
            deleteAlert:
              operationId: deleteAlert
              parameters:
                id: $request.path.id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    delete:
      tags:
        - Alerts
      summary: Delete an alert
      description: Deletes the alert specified by the Id.
      operationId: deleteAlert
      parameters:
        - name: id
          in: path
          description: Alert ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Alert deleted.
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    patch:
      tags:
        - Alerts
      summary: Update an alert
      description: Updates the alert specified by the Id.
      operationId: updateAlert
      parameters:
        - name: id
          in: path
          description: Alert ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AlertUpdateRequest"
        required: false
      responses:
        "200":
          description: OK - Alert updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Alert"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  /analytics/v1/allocations:
    get:
      tags:
        - Allocations
      summary: List allocations
      description: |-
        Returns a list of allocations that your account has access to.
        Allocations are listed in reverse chronological order by default.
      operationId: listAllocations
      parameters:
        - $ref: "#/components/parameters/maxResults"
        - $ref: "#/components/parameters/pageToken"
        - name: filter
          in: query
          description: |-
            An expression for filtering the results.
            Valid fields: **type**, **owner**, **name**, **folderId**.
          example: type:custom
          schema:
            type: string
        - name: sortBy
          in: query
          description: A field by which the results will be sorted.
          schema:
            type: string
            enum:
              - id
              - name
              - owner
              - description
              - type
              - createTime
              - updateTime
        - $ref: "#/components/parameters/sortOrder"
      responses:
        "200":
          description: >-
            OK - The request succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageToken:
                    type: string
                    description: Page token, returned by a previous call, to request the next page of results.
                  rowCount:
                    type: integer
                    description: Total number of allocations in the result set.
                  allocations:
                    type: array
                    items:
                      $ref: "#/components/schemas/AllocationListItem"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Allocations
      summary: Create an allocation
      description: Creates a new allocation.
      operationId: createAllocation
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAllocationRequest"
      responses:
        "200":
          description: >-
            OK - The request succeeded.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Allocation"
          links:
            getAllocation:
              operationId: getAllocation
              parameters:
                id: $response.body#/id
            updateAllocation:
              operationId: updateAllocation
              parameters:
                id: $response.body#/id
            deleteAllocation:
              operationId: deleteAllocation
              parameters:
                id: $response.body#/id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/allocations/{id}":
    get:
      tags:
        - Allocations
      summary: Retrieve an allocation
      description: Returns an allocation by the specified Id.
      operationId: getAllocation
      parameters:
        - name: id
          in: path
          description: Allocation ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: >-
            OK - Allocation returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Allocation"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    delete:
      tags:
        - Allocations
      summary: Delete an allocation
      description: Deletes the allocation specified by the Id.
      operationId: deleteAllocation
      parameters:
        - name: id
          in: path
          description: Allocation ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Allocation deleted.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
              example: {}
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
        "409":
          description: >-
            Conflict - The allocation cannot be deleted because it is used by other resources.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AllocationDeleteValidation"
    patch:
      tags:
        - Allocations
      summary: Update an allocation
      description: Updates the allocation specified by the Id.
      operationId: updateAllocation
      parameters:
        - name: id
          in: path
          description: Allocation ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateAllocationRequest"
      responses:
        "200":
          description: OK - Allocation updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Allocation"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  /analytics/v1/annotations:
    get:
      tags:
        - Annotations
      summary: List annotations
      description: |-
        Returns a list of annotations that your account has access to.
        Annotations are listed in reverse chronological order by default.
      operationId: listAnnotations
      parameters:
        - $ref: "#/components/parameters/maxResults"
        - $ref: "#/components/parameters/pageToken"
        - name: filter
          in: query
          description: |-
            An expression for filtering the results.
            Valid fields: **content**, **timestamp**, **labels**.
          example: content:budget
          schema:
            type: string
        - name: sortBy
          in: query
          description: A field by which the results will be sorted.
          schema:
            type: string
            enum:
              - id
              - content
              - timestamp
              - timeCreated
              - timeModified
        - $ref: "#/components/parameters/sortOrder"
      responses:
        "200":
          description: >-
            OK - The request succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageToken:
                    type: string
                    description: Page token, returned by a previous call, to request the next page of results
                  rowCount:
                    type: integer
                    description: Total number of annotations in the result set
                  annotations:
                    type: array
                    items:
                      $ref: "#/components/schemas/AnnotationListItem"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Annotations
      summary: Create an annotation
      description: Creates a new annotation.
      operationId: createAnnotation
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAnnotationRequest"
        required: true
      responses:
        "201":
          description: >-
            Created - Annotation created successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AnnotationListItem"
          links:
            getAnnotation:
              operationId: getAnnotation
              parameters:
                id: $response.body#/id
            updateAnnotation:
              operationId: updateAnnotation
              parameters:
                id: $response.body#/id
            deleteAnnotation:
              operationId: deleteAnnotation
              parameters:
                id: $response.body#/id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/annotations/{id}":
    get:
      tags:
        - Annotations
      summary: Retrieve an annotation
      description: Returns an annotation by the specified Id.
      operationId: getAnnotation
      parameters:
        - name: id
          in: path
          description: Annotation ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: >-
            OK - Annotation returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AnnotationListItem"
          links:
            updateAnnotation:
              operationId: updateAnnotation
              parameters:
                id: $request.path.id
            deleteAnnotation:
              operationId: deleteAnnotation
              parameters:
                id: $request.path.id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    delete:
      tags:
        - Annotations
      summary: Delete an annotation
      description: Deletes the annotation specified by the Id.
      operationId: deleteAnnotation
      parameters:
        - name: id
          in: path
          description: Annotation ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Annotation deleted.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
              example: {}
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    patch:
      tags:
        - Annotations
      summary: Update an annotation
      description: Updates the annotation specified by the Id.
      operationId: updateAnnotation
      parameters:
        - name: id
          in: path
          description: Annotation ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateAnnotationRequest"
            example:
              content: "Updated annotation content"
      responses:
        "200":
          description: OK - Annotation updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AnnotationListItem"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  /analytics/v1/labels:
    get:
      tags:
        - Labels
      summary: List labels
      description: |-
        Returns a list of labels that your account has access to.
        Labels are listed in reverse chronological order by default.
      operationId: listLabels
      parameters:
        - $ref: "#/components/parameters/maxResults"
        - $ref: "#/components/parameters/pageToken"
        - name: filter
          in: query
          description: |-
            An expression for filtering the results.
            Valid fields: **name**, **type**.
          example: name:budget
          schema:
            type: string
        - name: sortBy
          in: query
          description: A field by which the results will be sorted.
          schema:
            type: string
            enum:
              - id
              - name
              - type
              - createTime
              - updateTime
        - $ref: "#/components/parameters/sortOrder"
      responses:
        "200":
          description: >-
            OK - The request succeeded.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelList"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Labels
      summary: Create a label
      description: Creates a new label.
      operationId: createLabel
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateLabelRequest"
        required: true
      responses:
        "201":
          description: >-
            Created - Label created successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelListItem"
          links:
            getLabel:
              operationId: getLabel
              parameters:
                id: $response.body#/id
            updateLabel:
              operationId: updateLabel
              parameters:
                id: $response.body#/id
            deleteLabel:
              operationId: deleteLabel
              parameters:
                id: $response.body#/id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/labels/{id}":
    get:
      tags:
        - Labels
      summary: Retrieve a label
      description: Returns a label by the specified Id.
      operationId: getLabel
      parameters:
        - name: id
          in: path
          description: Label ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: >-
            OK - Label returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelListItem"
          links:
            updateLabel:
              operationId: updateLabel
              parameters:
                id: $request.path.id
            deleteLabel:
              operationId: deleteLabel
              parameters:
                id: $request.path.id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    delete:
      tags:
        - Labels
      summary: Delete a label
      description: Deletes the label specified by the Id.
      operationId: deleteLabel
      parameters:
        - name: id
          in: path
          description: Label ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Label deleted.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
              example: {}
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    patch:
      tags:
        - Labels
      summary: Update a label
      description: Updates the label specified by the Id.
      operationId: updateLabel
      parameters:
        - name: id
          in: path
          description: Label ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateLabelRequest"
      responses:
        "200":
          description: OK - Label updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelListItem"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/labels/{id}/assignments":
    get:
      tags:
        - Labels
      summary: Get label assignments
      description: Returns the list of objects currently assigned to the label specified by the ID.
      operationId: getLabelAssignments
      parameters:
        - name: id
          in: path
          description: Label ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Label assignments returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelAssignmentsResponse"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Labels
      summary: Assign or unassign objects to a label
      description: Assigns or un-assigns objects to the label specified by the ID.
      operationId: assignObjectsToLabel
      parameters:
        - name: id
          in: path
          description: Label ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssignObjectsToLabelRequest"
        required: true
      responses:
        "200":
          description: OK - Objects assigned/unassigned successfully.
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/settings/themes":
    get:
      tags:
        - Settings
      summary: List custom themes
      description: Returns the list of custom color themes defined for your account.
      operationId: listCustomThemes
      responses:
        "200":
          description: OK - The request succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  rowCount:
                    type: integer
                    description: Total number of custom themes in the result set.
                  themes:
                    type: array
                    items:
                      $ref: "#/components/schemas/CustomTheme"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    post:
      tags:
        - Settings
      summary: Create a custom theme
      description: Creates a new custom color theme. Requires Cloud Analytics Admin permission.
      operationId: createCustomTheme
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateCustomThemeRequest"
        required: true
      responses:
        "201":
          description: Created - Custom theme created successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomTheme"
          links:
            getCustomTheme:
              operationId: getCustomTheme
              parameters:
                id: $response.body#/id
            updateCustomTheme:
              operationId: updateCustomTheme
              parameters:
                id: $response.body#/id
            deleteCustomTheme:
              operationId: deleteCustomTheme
              parameters:
                id: $response.body#/id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
      x-codegen-request-body-name: Body
  "/analytics/v1/settings/themes/{id}":
    get:
      tags:
        - Settings
      summary: Retrieve a custom theme
      description: Returns a custom theme by the specified Id.
      operationId: getCustomTheme
      parameters:
        - name: id
          in: path
          description: Custom theme ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK - Custom theme returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomTheme"
          links:
            updateCustomTheme:
              operationId: updateCustomTheme
              parameters:
                id: $request.path.id
            deleteCustomTheme:
              operationId: deleteCustomTheme
              parameters:
                id: $request.path.id
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "404":
          $ref: "#/components/responses/404"
    patch:
      tags:


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