Habu Clean Room API

The Habu Clean Room API — published by LiveRamp as "External APIs for Customer Integration" and still served from Habu's own api.habu.com host — lets customers set up and manage clean rooms, provision data connections and datasets, invite partners, author and permission analytical questions, run those questions and flows, and retrieve or export the results, without going through the console UI. It is a 151-operation OpenAPI 3.0.0 contract over 108 paths, secured with an OAuth 2.0 client-credentials flow whose token endpoint is api.habu.com/v1/oauth/token.

OpenAPI Specification

habu-clean-room-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: v1.0.0
  title: External APIs for Customer Integration
  description: >-
    APIs to create and fetch Clean Room and related details from LiveRamp (previously Habu) for Customer Integration.
  contact:
    name: LiveRamp (previously Habu)
    url: https://liveramp.com/
    email: platform_admin@habu.com
security:
  - application: [ ]
tags:
  - name: Internal
    description: >-
      For internal LiveRamp consumption. These operations are not part of the
      supported external customer contract and may change without notice.
paths:
  /health:
    get:
      summary: Check API availability
      operationId: getHealth
      description: >-
        Returns the health status of the API. Unauthenticated — use this to verify connectivity before making authenticated calls.
      security: []
      responses:
        '200':
          description: API is available
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponse'
      tags:
        - Health

  /billable-configs:
    get:
      summary: Get billable config
      operationId: getBillableConfig
      description: >-
        Fetches the billable config for a given source ID and source type.
        Absence of a config row means the source inherits billability from the hierarchy above it.
        See unhygienix billing-status documentation for resolution order.
      parameters:
        - name: sourceId
          in: query
          description: Identifier of the billable source (e.g. clean room ID, question run ID)
          required: true
          schema:
            type: string
        - name: sourceType
          in: query
          description: Type of billable source
          required: true
          schema:
            $ref: '#/components/schemas/BillableSourceType'
        - name: compositeSourceId
          in: query
          description: Optional; not used by any source type exposed on the external API
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Billable config fetched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillableConfigResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Billable Configs

    post:
      summary: Upsert billable config
      operationId: upsertBillableConfig
      description: >-
        Creates or updates a billable config for the given source.
        Use after creating a question run or flow run to opt out of billing (`value: "false"`).
        Leaving billing enabled requires no row — the hierarchy above applies.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertBillableConfigRequest'
      responses:
        '200':
          description: Billable config upserted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpsertBillableConfigResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Billable Configs

  /billable-configs/{billableConfigId}:
    delete:
      summary: Delete billable config
      operationId: deleteBillableConfig
      description: >-
        Deletes the billable config by its config ID (from a prior GET or upsert response).
        Returns 404 if no config with that ID was deleted.
        To resolve sourceId/sourceType to a config ID, call GET /billable-configs first.
      parameters:
        - name: billableConfigId
          in: path
          description: Billable config primary key ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Billable config deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillableConfigResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Billable Configs

  /cleanrooms:
    post:
      summary: Create Cleanroom
      operationId: createCleanroom
      description: >-
        This operation creates a new Cleanroom.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CleanRoomRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CleanRoomRequest'
      responses:
        '200':
          description: Cleanroom created successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CleanRoom"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ResourceConflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms
    get:
      summary: Fetch a list of all Cleanrooms
      operationId: getAllCleanrooms
      description: >-
        This operation fetches a list of all the Cleanrooms that are created for the Customer Integration.
      parameters:
        - name: limit
          in: query
          description: The number of Cleanrooms returned per page - default is 500
          schema:
            type: integer
            default: 500
        - name: offset
          in: query
          description: The offset - default is 0
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: Successfully fetched Cleanroom details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRooms'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRooms'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms

  /cleanrooms/{cleanroomId}/invitations:
    get:
      summary: List Cleanroom Partner Invitations For a Cleanroom Inviter
      operationId: listPartnerInvitationsForInviter
      description: >-
        This operation lists a invitation list for a CleanRoom Inviter.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID to see invitations
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Fetched Cleanroom Partner invitations successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InvitationDetail"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Partners
        - Invitations
    delete:
      summary: Cancel Cleanroom Partner Invitation
      operationId: cancelPartnerInvitationByEmail
      description: >-
        This operation cancels a invitation for a CleanRoom Inviter.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID of inviter's clean-room
          schema:
            type: string
          required: true
        - in: query
          name: partnerEmail
          description: the email for the partner whose invitation is getting canceled
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Canceled Cleanroom Partner invitation successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InvitationDetail"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Partners
        - Invitations

  /cleanrooms/{cleanroomId}/invitations/{invitationId}:
    delete:
      summary: Cancel Cleanroom Partner Invitation
      operationId: cancelPartnerInvitationById
      description: >-
        This operation cancels a invitation for a CleanRoom Inviter.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID of inviter's clean-room
          schema:
            type: string
          required: true
        - in: path
          name: invitationId
          description: the ID of the invitation getting canceled
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Canceled Cleanroom Partner invitation successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InvitationDetail"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Partners
        - Invitations


  /cleanrooms/{cleanroomId}:
    get:
      summary: Fetch a Cleanroom by ID
      operationId: getCleanroomById
      description: >-
        This operation fetches a Cleanroom by ID.
      parameters:
        - name: cleanroomId
          in: path
          description: The cleanroom ID to fetch a single Cleanroom's details
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Successfully fetched Cleanroom details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoom'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoom'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms

    put:
      summary: Update Cleanroom
      operationId: updateCleanroom
      description: >-
        This operation updates an existing cleanroom.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID to be updated
          schema:
            type: string
          required: true
      requestBody:
          description: Cleanroom details to be updated
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CleanRoomRequest"
      responses:
        '200':
          description: Cleanroom updated successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CleanRoom"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms

    delete:
      summary: Delete Cleanroom
      operationId: deleteCleanroom
      description: >-
        This operation deletes an existing cleanroom.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID to be deleted
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Cleanroom deleted successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteResponse"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms

  /cleanrooms/cleanroom-types:
    get:
      summary: Fetch all Cleanroom Types
      operationId: getCleanroomTypes
      description: >-
        This operation fetches all the available Cleanroom Types.
      responses:
        '200':
          description: Successfully fetched Cleanroom Types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomTypes'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoomTypes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanrooms

  /cleanrooms/{cleanroomId}/cleanroom-questions:
    post:
      summary: Add Cleanroom Question
      operationId: addCleanroomQuestion
      description: >-
        This operation adds a question to an existing cleanroom.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID associated with the Cleanroom Question
          schema:
            type: string
          required: true
        - in: query
          name: questionId
          description: Question ID
          required: true
          schema:
            type: string
        - in: query
          name: isEditable
          description: Whether the resultant Cleanroom Question can be edited further
          schema:
            type: boolean
            default: true
          required: false
      responses:
        '200':
          description: Cleanroom Question created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions

    get:
      summary: Fetch a list of all Cleanroom Questions for a Cleanroom
      operationId: getAllCleanroomQuestions
      description: >-
        This operation fetches a list of all the Cleanroom Questions that are tied to a Cleanroom.
      parameters:
        - name: cleanroomId
          in: path
          description: The cleanroom ID to fetch all the underlying Cleanroom Questions
          schema:
            type: string
          required: true
        - name: startDate
          in: query
          description: A filter applied on the CreatedOn field for a Cleanroom Question that marks as the beginning of the range of dates. Default is empty - meaning no filter applied. The format is yyyy-MM-dd
          schema:
            type: string
            format: date
            example: 2024-01-01
        - name: endDate
          in: query
          description: A filter applied on the CreatedOn field for a Cleanroom Question that marks as the end of the range of dates. Default is empty - meaning no filter applied. The format is yyyy-MM-dd
          schema:
            type: string
            format: date
            example: 2024-01-01
        - name: limit
          in: query
          description: The number of Cleanroom Questions returned per page - default is 500
          schema:
            type: integer
            default: 500
        - name: offset
          in: query
          description: The offset - default is 0
          schema:
            type: integer
            default: 0
        - name: questionType
          in: query
          description: List or Analytical
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched Cleanroom Question details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestions'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestions'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions

  /cleanroom-questions/{cleanroomQuestionId}:
    get:
      summary: Fetch a Cleanroom Question by ID
      operationId: getCleanroomQuestionById
      description: >-
        This operation fetches a Cleanroom Question by ID.
      parameters:
        - name: cleanroomQuestionId
          in: path
          description: The Cleanroom Question ID to fetch a single Cleanroom Question's details
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Successfully fetched Cleanroom Question details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestion'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestion'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions

    delete:
      summary: Delete Cleanroom Question
      operationId: deleteCleanroomQuestion
      description: >-
        This operation deletes an existing cleanroom question.
      parameters:
        - name: cleanroomQuestionId
          in: path
          description: Cleanroom Question ID to be deleted
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully deleted the cleanroom question.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteResponse"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions

  /cleanroom-questions/{cleanroomQuestionId}/compute-capacity:
    patch:
      summary: Update the compute capacity for a cleanroom question
      operationId: updateCleanroomQuestionComputeCapacity
      description: >-
        This operation updates the compute capacity for a cleanroom question. This is currently only supported for Snowflake and Hybrid Cleanrooms
      parameters:
        - in: path
          name: cleanroomQuestionId
          description: ID of the cleanroom question
          schema:
            type: string
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCleanroomQuestionComputeCapacityRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/UpdateCleanroomQuestionComputeCapacityRequest'
      responses:
        '200':
          description: Cleanroom Question created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCleanroomQuestionComputeCapacityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions


  /cleanrooms/{cleanroomId}/questions/{questionId}:
    get:
      summary: Get Cleanroom Question by Cleanroom ID and Question ID
      operationId: getCleanroomQuestion
      description: >-
        This operation fetches a Cleanroom Question for a given Cleanroom ID and Question ID.
      parameters:
        - in: path
          name: cleanroomId
          description: Cleanroom ID associated with the Cleanroom Question
          schema:
            type: string
          required: true
        - in: path
          name: questionId
          description: Question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Cleanroom Question fetched successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Cleanroom question ID
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Questions

  /cleanroom-questions/{cleanroomQuestionId}/cleanroom-question-result-shares:
    get:
      summary: Get the possible sharing options for the result of a Cleanroom Question
      operationId: getCleanroomQuestionResultShares
      description: >-
        This operation fetches a the possible sharing options for the result of a Cleanroom Question.
      parameters:
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom Question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched Cleanroom Question Result Shares
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestionResultShares'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestionResultShares'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Result Shares

    put:
      summary: Upsert clean room question result shares
      operationId: upsertCleanRoomQuestionResultShares
      description: >-
        This operation shares the results of a cleanroom question.
      parameters:
        - name: cleanroomQuestionId
          in: path
          description: The Cleanroom Question ID for which result share is being shared
          schema:
            type: string
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertCleanRoomQuestionResultSharesApiInput'
          application/xml:
            schema:
              $ref: '#/components/schemas/UpsertCleanRoomQuestionResultSharesApiInput'
      responses:
        '200':
          description: Successfully upserted Cleanroom Question Result Shares
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpsertCleanRoomQuestionResultShareResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UpsertCleanRoomQuestionResultShareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Result Shares

  /cleanroom-questions/{cleanroomQuestionId}/cleanroom-question-tags:
    get:
      summary: Get the tags for a Cleanroom Question
      operationId: getCleanroomQuestionTags
      description: >-
        This operation fetches a the tags for a Cleanroom Question.
      parameters:
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom Question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched Cleanroom Question Tags
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestionTags'
            application/xml:
              schema:
                $ref: '#/components/schemas/CleanRoomQuestionTags'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Tags

  /cleanroom-questions/{cleanroomQuestionId}/cleanroom-question-parameters:
    get:
      summary: Get the parameters for a Cleanroom Question
      operationId: getCleanroomQuestionParameters
      description: >-
        This operation fetches a the parameters for a Cleanroom Question.
      parameters:
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom Question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched Cleanroom Question Parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCleanRoomQuestionParametersResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/GetCleanRoomQuestionParametersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Tags

  /cleanroom-questions/{cleanroomQuestionId}/cleanroom-question-run-schedules/{cleanroomQuestionRunScheduleId}:
    get:
      summary: Get a Cleanroom Question Run Schedule by ID
      operationId: getCleanroomQuestionRunScheduleById
      description: >-
        This operation fetches a the a Cleanroom Question Run Schedule by ID.
      parameters:
        - in: path
          name: cleanroomQuestionRunScheduleId
          description: Cleanroom Question Run Schedule ID
          required: true
          schema:
            type: string
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully fetched Cleanroom Question Run Schedule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCleanroomQuestionRunScheduleResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/GetCleanroomQuestionRunScheduleResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Run Schedule
    delete:
      summary: delete a Cleanroom Question Run Schedule by ID
      operationId: deleteCleanroomQuestionRunScheduleById
      description: >-
        This operation deletes a Cleanroom Question Run Schedule by ID.
      parameters:
        - in: path
          name: cleanroomQuestionRunScheduleId
          description: Cleanroom Question Run Schedule ID
          required: true
          schema:
            type: string
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom question ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully deleted Cleanroom Question Run Schedule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCleanroomQuestionRunScheduleResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/DeleteCleanroomQuestionRunScheduleResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Cleanroom Question Run Schedule
    patch:
      summary: Update a run schedule for a cleanroom question
      operationId: patchCleanroomQuestionRunScheduleById
      description: >-
        This operation modifies a run schedule for a cleanroom question
      parameters:
        - in: path
          name: cleanroomQuestionRunScheduleId
          description: Cleanroom Question Run Schedule ID
          required: true
          schema:
            type: string
        - in: path
          name: cleanroomQuestionId
          description: Cleanroom Question ID
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCleanroomQuestionRunScheduleInput'
          application/xml:
            schema:
              $ref: '#/components/schemas/CreateCleanroomQuestionRunScheduleInput'
      responses:
        '200':
          description: Successfully updated a Cleanroom Question Run Schedule
          content:
            application/json:
              schema:


# --- truncated at 32 KB (313 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/habu/refs/heads/main/openapi/habu-clean-room-api-openapi.yml