components:
  parameters:
    cloudPrincipalID:
      description: ID of the cloud principal
      in: path
      name: cloudPrincipalID
      required: true
      schema:
        format: uuid
        type: string
    cloudfunctionID:
      description: ID of the cloud function
      example: 7b68b78d-a000-4000-9000-0864fd331524
      in: path
      name: cloudfunctionID
      required: true
      schema:
        format: uuid
        type: string
    clusterID:
      description: ID of the cluster
      in: path
      name: clusterID
      required: true
      schema:
        format: uuid
        type: string
    connectionID:
      description: ID of the private connection
      in: path
      name: connectionID
      required: true
      schema:
        format: uuid
        type: string
    fields:
      description: Comma-separated values list that correspond to the filtered fields
        for returned entities
      in: query
      name: fields
      schema:
        type: string
    flowID:
      description: ID of the SingleStore Flow instance
      in: path
      name: flowID
      required: true
      schema:
        format: uuid
        type: string
    invitationID:
      description: ID of the user invitation
      in: path
      name: invitationID
      required: true
      schema:
        format: uuid
        type: string
    jobID:
      description: ID of the job
      example: 7b68b78d-a000-4000-9000-0864fd331524
      in: path
      name: jobID
      required: true
      schema:
        format: uuid
        type: string
    lastKnownUpdatedAt:
      description: The timestamp used for concurrency control. The resource will be
        updated only if the current last updated timestamp matches the given value.
      example: "2026-01-18T09:56:56Z"
      in: query
      name: lastKnownUpdatedAt
      schema:
        format: date-time
        type: string
    limit:
      description: Maximum number of items to return in a paginated query
      in: query
      name: limit
      schema:
        type: integer
    offsetID:
      description: ID of the last item from the previous page, used to continue pagination.
      in: query
      name: offsetID
      schema:
        format: uuid
        type: string
    organizationID:
      description: ID of the organization
      in: path
      name: organizationID
      required: true
      schema:
        format: uuid
        type: string
    projectID:
      description: ID of the project
      in: path
      name: projectID
      required: true
      schema:
        format: uuid
        type: string
    resourceType:
      description: Resource type
      examples:
        cluster:
          value: cluster
        organization:
          value: organization
        secret:
          value: secret
        team:
          value: team
        workspace:
          value: workspace
      in: path
      name: resourceType
      required: true
      schema:
        type: string
    role:
      description: The role name
      in: path
      name: role
      required: true
      schema:
        type: string
    secretID:
      description: ID of the secret
      in: path
      name: secretID
      required: true
      schema:
        format: uuid
        type: string
    serviceAccountID:
      description: ID of the service account
      in: path
      name: serviceAccountID
      required: true
      schema:
        format: uuid
        type: string
    teamID:
      description: ID of the team
      in: path
      name: teamID
      required: true
      schema:
        format: uuid
        type: string
    updateNotebookSnapshot:
      description: Indicates whether to update the notebook snapshot after updating
        the cloud function.
      in: query
      name: updateNotebookSnapshot
      schema:
        type: boolean
    userID:
      description: ID of the user
      in: path
      name: userID
      required: true
      schema:
        format: uuid
        type: string
    workspaceGroupID:
      description: ID of the workspace group
      in: path
      name: workspaceGroupID
      required: true
      schema:
        format: uuid
        type: string
  schemas:
    AppToken:
      properties:
        expiresAt:
          description: The time at which this JWT token will become invalid
          example: 11-22-2024T15:04:05
          type: string
        jwt:
          description: The JWT token that can be used to interact with a singlestore
            native App
          example: eyJhbGciOiJI...
          type: string
      required:
      - jwt
      - expiresAt
      type: object
    AuditLog:
      description: Represents an audit log entry
      properties:
        apiKeyID:
          description: The API key ID used to perform this action, if applicable
          format: uuid
          type: string
        attributes:
          description: additional keys and values that are specific to the audit log
            type
          type: object
        auditID:
          example: 17290909-0000-1000-9000-e30410f1b05a
          format: uuid
          type: string
        clusterID:
          description: The database cluster tied to this event
          format: uuid
          type: string
        createdAt:
          description: The timestamp of when the audit log entry was created in RFC3339Nano
            format
          type: string
        error:
          description: text error message, if any relating to this entry
          example: ""
          type: string
        firstName:
          description: The first name of a redacted user
          type: string
        labels:
          description: A list of audit keywords
          example:
          - featureflag
          items:
            type: string
          type: array
        lastName:
          description: The last name of a redacted user
          type: string
        orgID:
          description: The organization tied to this event
          format: uuid
          type: string
        projectID:
          deprecated: true
          description: This property is deprecated. This is an internal project ID,
            not related to other project related fields.
          format: uuid
          type: string
        reason:
          description: A human-readable description of what happened
          example: feature flag (ssoLogin) enabled for all orgs
          type: string
        sessionID:
          description: the authorization session id tied to this event
          format: uuid
          type: string
        source:
          description: The audit log entry source
          enum:
          - Portal
          - Admin
          - SystemJob
          example: Portal
          type: string
        teamID:
          description: ID of the team related to this event
          format: uuid
          type: string
        type:
          description: The audit log entry type
          example: Login
          type: string
        userEmail:
          description: The user email address
          example: user@email.com
          type: string
        userID:
          description: The user ID
          example: 17290909-0000-1000-9000-e30410f1b05a
          type: string
        userType:
          description: the type of user that triggered the audit log entry
          enum:
          - Unspecified
          - System
          - Employee
          - Customer
          - Automation
          - Studio
          - CIAutomation
          - SharedTier
          - SNIProxy
          - NimbusGateway
          - Cluster
          example: Customer
          type: string
        workspaceID:
          description: The workspace id tied to this event
          format: uuid
          type: string
      type: object
    AutoScale:
      description: Specifies the [autoscale](https://docs.singlestore.com/cloud/getting-started-with-singlestore-helios/about-workspaces/workspace-scaling/#autoscaling)
        setting for the workspace.
      properties:
        changedAt:
          description: Timestamp of last auto-scale configuration change
          format: date-time
          readOnly: true
          type: string
        lastAutoScaledAt:
          description: Timestamp of last auto-scaling event
          format: date-time
          readOnly: true
          type: string
        maxScaleFactor:
          description: 'The maximum scale factor allowed for the workspace. It can
            have the following values: 1, 2, or 4. On creation, if not specified,
            autoscaling is disabled. To disable autoscaling on update, set to 1.'
          example: 2
          type: number
        sensitivity:
          default: NORMAL
          description: 'Specifies the sensitivity of the autoscale operation to changes
            in the workload. It can have the following values: `LOW`, `NORMAL`, or
            `HIGH`. By default, the sensitivity is set to `NORMAL`.'
          enum:
          - LOW
          - NORMAL
          - HIGH
          example: LOW
          type: string
      type: object
    AutoSuspend:
      description: Auto-suspend configuration
      properties:
        idleAfterSeconds:
          description: Seconds of inactivity before auto-suspend (for IDLE type)
          type: integer
        idleChangedAt:
          description: Timestamp of last idle configuration change
          format: date-time
          type: string
        scheduledAfterSeconds:
          description: Seconds until scheduled suspend
          type: integer
        scheduledChangedAt:
          description: Timestamp of last scheduled configuration change
          format: date-time
          type: string
        scheduledSuspendAt:
          description: Timestamp of next scheduled suspend
          format: date-time
          type: string
        suspendType:
          description: Type of auto-suspend
          enum:
          - DISABLED
          - IDLE
          - SCHEDULED
          type: string
        suspendTypeChangedAt:
          description: Timestamp of last suspend type change
          format: date-time
          type: string
      type: object
    CloudFunctionCreate:
      allOf:
      - $ref: '#/components/schemas/CloudFunctionFields'
      - properties:
          isAgent:
            description: Whether the cloud function runs as an agent
            example: false
            type: boolean
        type: object
      description: Represents information specified while creating a cloud function
      required:
      - name
    CloudFunctionFields:
      description: Common fields for cloud function create and update operations
      properties:
        databaseName:
          description: Name of the database to connect to
          example: my_database
          nullable: true
          type: string
        description:
          description: Description of the cloud function
          example: My custom cloud function
          nullable: true
          type: string
        idleTimeoutSeconds:
          description: Idle timeout in seconds
          example: 3600
          type: integer
        image:
          description: Container image to use (mutually exclusive with `notebookPath`)
          example: my-registry/my-image:latest
          nullable: true
          type: string
        name:
          description: Name of the cloud function
          example: my-cloud-function
          type: string
        notebookPath:
          description: Path to the notebook file (mutually exclusive with `image`)
          example: my-notebook.ipynb
          nullable: true
          type: string
        poolName:
          description: Nova pool name for execution
          example: my-pool
          nullable: true
          type: string
        targetID:
          description: Target resource ID (required if `targetType` is specified)
          example: 7b68b78d-a000-4000-9000-0864fd331524
          format: uuid
          nullable: true
          type: string
        targetType:
          description: 'Type of the target resource (required if `targetID` is specified).
            It can have one of the following values: `WORKSPACE`, `CLUSTER`, or `VIRTUAL_WORKSPACE`.'
          enum:
          - WORKSPACE
          - CLUSTER
          - VIRTUAL_WORKSPACE
          example: WORKSPACE
          nullable: true
          type: string
      type: object
    CloudFunctionUpdate:
      allOf:
      - $ref: '#/components/schemas/CloudFunctionFields'
      description: Represents information specified while updating a cloud function
    CloudPrincipal:
      allOf:
      - $ref: '#/components/schemas/CloudPrincipalIDResponse'
      - $ref: '#/components/schemas/CloudPrincipalUpdate'
      - properties:
          cloudPrincipal:
            description: Customer cloud identity bound to this principal.
            example: arn:aws:iam::123456789012:role/IngestionRole
            type: string
          createdBy:
            description: Identifier of the user that created the cloud principal.
            format: uuid
            type: string
          email:
            description: The generated fake email address for the cloud principal.
            example: cloud-principal-abc123@service.singlestore.com
            type: string
        required:
        - cloudPrincipal
        - email
        - name
        - description
        type: object
      description: Information about a SingleStoreDB Cloud principal.
    CloudPrincipalCreate:
      allOf:
      - $ref: '#/components/schemas/CloudPrincipalUpdate'
      - properties:
          cloudPrincipal:
            description: Customer cloud identity to bind to this principal.
            example: arn:aws:iam::123456789012:role/IngestionRole
            type: string
        required:
        - name
        - cloudPrincipal
        type: object
      description: Information specified when creating a cloud principal.
    CloudPrincipalIDResponse:
      description: Represents a cloud principal identifier response payload.
      properties:
        cloudPrincipalID:
          description: Cloud principal identifier.
          format: uuid
          type: string
      required:
      - cloudPrincipalID
      type: object
    CloudPrincipalUpdate:
      description: Information specified when updating a cloud principal.
      properties:
        description:
          description: Cloud principal description.
          example: Cloud principal used by ingestion jobs.
          type: string
        name:
          description: Cloud principal name.
          example: ingestion-role-renamed
          type: string
      type: object
    CloudProvider:
      description: Cloud provider
      enum:
      - AWS
      - GCP
      - Azure
      type: string
    CloudWorkloadIdentity:
      properties:
        identity:
          description: The cloud workload identity bound to the workspace group that
            can be used to access cloud resources. The identity format is determined
            by the cloud provider where the workspace group is hosted. For example,
            on AWS it's an IAM role ARN.
          example: arn:aws:iam::123456789012:role/sp5e57fc943d4245dda93431b40f883073
          type: string
      required:
      - identity
      type: object
    Cluster:
      description: Represents the information related to a cluster (used for both
        GET responses and POST requests)
      properties:
        adminPassword:
          description: |
            The admin password for the cluster. The password must contain:

              * At least 14 characters
              * At least one uppercase character
              * At least one lowercase character
              * At least one numeric character
              * At least one special character
              * At most two consecutive sequential characters
              * At most three consecutive identical characters

            If a password is not specified or if an invalid password is provided, a valid password is generated and returned in the response object.
          example: ""
          type: string
          writeOnly: true
        allowAllTraffic:
          description: Whether all traffic is allowed
          example: false
          type: boolean
        autoScale:
          $ref: '#/components/schemas/AutoScale'
        autoSuspend:
          $ref: '#/components/schemas/AutoSuspend'
        clusterID:
          description: ID of the cluster (workspace)
          format: uuid
          readOnly: true
          type: string
        createdAt:
          description: Timestamp of when the cluster was created
          format: date-time
          readOnly: true
          type: string
        deploymentType:
          description: Deployment type of the cluster
          enum:
          - PRODUCTION
          - NON-PRODUCTION
          example: PRODUCTION
          type: string
        endpoint:
          description: Connection endpoint for the cluster
          readOnly: true
          type: string
        expiresAt:
          description: |
            Timestamp of when the cluster will expire. If not specified, the cluster will have no expiration time. At expiration, the cluster is terminated and all data is lost. Can be specified as a timestamp or duration. For example:

              * "2023-09-02T15:04:05Z07:00"
              * "2023-09-02T15:04:05-0700"
              * "2023-09-02T15:04:05"
              * "2023-09-02"
              * "3h30m"
          example: ""
          type: string
        firewallRanges:
          description: List of allowed CIDR ranges. An empty list disallows all inbound
            traffic.
          example:
          - 192.168.0.1/32
          - 192.168.0.81/12
          items:
            type: string
          type: array
        groupID:
          description: ID of the workspace group containing the cluster
          format: uuid
          readOnly: true
          type: string
        kai:
          description: Whether SingleStore Kai (MongoDB compatibility) is enabled
          example: false
          type: boolean
        lastResumedAt:
          description: Timestamp of last resume operation
          format: date-time
          readOnly: true
          type: string
        multiAZ:
          description: Whether the cluster is deployed across multiple availability
            zones
          example: false
          type: boolean
        name:
          description: Name of the cluster
          example: demo-cluster
          type: string
        optInPreviewFeature:
          description: Whether preview features are enabled (only for NON-PRODUCTION
            deployments)
          example: false
          type: boolean
        outboundAllowList:
          description: Outbound allow list identifier (AWS only)
          readOnly: true
          type: string
        projectID:
          description: ID of the project to which the workspace group containing the
            cluster is assigned.
          example: ddb0fce3-0000-1000-9000-fd358a94d6a6
          format: uuid
          type: string
        provider:
          $ref: '#/components/schemas/CloudProvider'
        region:
          description: Region code
          example: us-west-2
          type: string
        scalingProgress:
          description: Progress of ongoing scaling operation (0.0 to 1.0)
          format: float
          readOnly: true
          type: number
        sizeConfig:
          $ref: '#/components/schemas/SizeConfig'
        smartDRStatus:
          description: SmartDR status (e.g., ACTIVE, STANDBY)
          readOnly: true
          type: string
        state:
          description: State of the cluster
          enum:
          - ACTIVE
          - PENDING
          - SUSPENDED
          - FAILED
          - TERMINATED
          - UNKNOWN
          readOnly: true
          type: string
        terminatedAt:
          description: (If included in the output) Timestamp of when the cluster was
            terminated
          format: date-time
          readOnly: true
          type: string
        updateWindow:
          $ref: '#/components/schemas/UpdateWindow'
      required:
      - name
      - projectID
      type: object
    ClusterPrivateConnection:
      description: Represents information related to a private link connection for
        a cluster
      properties:
        activeAt:
          description: The timestamp of when the private connection became active
          example: "2023-09-18T09:56:56Z"
          type: string
        allowList:
          description: The private connection allow list. This is the account ID for
            AWS,  subscription ID for Azure, and the project name GCP
          example: my-allow-list
          type: string
        allowedPrivateLinkIDs:
          items:
            description: Allowed Private Link ID
            example: vpce-01a376f2625261f22
            type: string
          type: array
        clusterID:
          description: The ID of the cluster to connect with
          example: 7d6b3a5a-0000-1000-9000-d454af4c785b
          format: uuid
          type: string
        createdAt:
          description: The timestamp of when the private connection was created
          example: "2023-09-18T09:56:56Z"
          type: string
        deletedAt:
          description: The timestamp of when the private connection was deleted
          example: "2023-09-18T09:56:56Z"
          type: string
        endpoint:
          description: The service endpoint
          example: com.amazonaws.vpce.us-east-1.vpce-svc-08e20961f648f9d
          type: string
        outboundAllowList:
          description: The account ID which must be allowed for outbound connections
          example: arn:aws:iam:xxxxxxxxx:root
          type: string
        privateConnectionID:
          description: The ID of the private connection
          example: 8900372e-0000-1000-9000-4c47638040af
          format: uuid
          type: string
        serviceName:
          description: The name of the private connection service
          example: My service
          type: string
        sqlPort:
          description: The SQL port
          example: 3306
          type: number
        status:
          description: The status of the private connection
          enum:
          - PENDING
          - ACTIVE
          - DELETED
          example: ACTIVE
          type: string
        type:
          description: The private connection type
          enum:
          - INBOUND
          - OUTBOUND
          example: INBOUND
          type: string
        updatedAt:
          description: The timestamp of when the private connection was last updated
          example: "2023-09-18T09:56:56Z"
          type: string
        websocketsPort:
          description: The websockets port
          example: 443
          type: number
      required:
      - privateConnectionID
      type: object
    ClusterResume:
      description: Represents additional information specified when resuming a cluster
      properties:
        disableAutoSuspend:
          description: Whether to disable auto suspend or keep the existing auto suspend
            settings. By default, `disableAutoSuspend` is set to `false`, and the
            existing auto suspend settings are preserved.
          example: false
          type: boolean
      type: object
    ControlAccessAction:
      properties:
        grants:
          items:
            $ref: '#/components/schemas/ControlAccessRole'
          type: array
        revokes:
          items:
            $ref: '#/components/schemas/ControlAccessRole'
          type: array
      required:
      - grants
      - revokes
      type: object
    ControlAccessRole:
      properties:
        role:
          type: string
        teams:
          items:
            format: uuid
            type: string
          type: array
        users:
          items:
            format: uuid
            type: string
          type: array
      required:
      - role
      - teams
      - users
      type: object
    DelegatedEntitiesAppend:
      properties:
        entities:
          description: List of customer-provided entities (such as IAM role ARNs)
            to add to the workspace group's delegated entities.
          example:
          - arn:aws:iam::987654321098:role/singlestore-iceberg-readonly
          - arn:aws:iam::987654321098:role/singlestore-s3-pipelines
          items:
            type: string
          type: array
      required:
      - entities
      type: object
    DelegatedEntitiesRemove:
      properties:
        entities:
          description: List of customer-provided entities (such as IAM role ARNs)
            to remove from the workspace group's delegated entities. If not provided
            in the request body, entities can be specified via the 'entities' query
            parameter.
          example:
          - arn:aws:iam::987654321098:role/singlestore-iceberg-readonly
          items:
            type: string
          type: array
      type: object
    DelegatedEntity:
      properties:
        createdAt:
          description: Creation timestamp
          format: date-time
          type: string
        entity:
          description: The customer-provided entity that the workspace group's cloud
            workload identity can assume. The entity format is determined by the cloud
            provider where the workspace group is hosted. For example, on AWS it's
            a customer-owned IAM role ARN.
          example: arn:aws:iam::987654321098:role/CustomerRole
          type: string
      required:
      - entity
      - createdAt
      type: object
    Execution:
      properties:
        executionID:
          description: The ID of execution
          format: uuid
          type: string
        executionNumber:
          description: Number of the execution
          example: 1
          type: number
        finishedAt:
          description: Finish time of the execution
          format: date-time
          nullable: true
          type: string
        jobID:
          description: ID of the job that this execution belongs to
          format: uuid
          type: string
        scheduledStartTime:
          description: Scheduled start time of the execution
          format: date-time
          type: string
        snapshotNotebookPath:
          description: Path to the notebook which captures the result of this execution
          nullable: true
          type: string
        startedAt:
          description: Actual start time of the execution
          format: date-time
          nullable: true
          type: string
        status:
          enum:
          - Unknown
          - Scheduled
          - Running
          - Completed
          - Failed
          - Error
          - Canceled
          example: Scheduled
          type: string
      required:
      - executionID
      - jobID
      - status
      - scheduledStartTime
      - executionNumber
      type: object
    ExecutionsMetadata:
      properties:
        endExecutionNumber:
          example: 10
          type: number
        startExecutionNumber:
          example: 1
          type: number
      required:
      - startExecutionNumber
      - endExecutionNumber
      type: object
    ExecutionsResult:
      properties:
        executions:
          items:
            $ref: '#/components/schemas/Execution'
          type: array
        executionsMetadata:
          $ref: '#/components/schemas/ExecutionsMetadata'
      required:
      - executions
      - executionsMetadata
      type: object
    FileLocationSchema:
      description: The file location can be one of 'personal', 'shared' or 'models'
      enum:
      - personal
      - shared
      - models
      example: personal
      type: string
    FileObjectMetadata:
      description: Represents the metadata corresponding to a file object
      properties:
        content:
          oneOf:
          - example: Hello World!
            type: string
          - example: []
            items:
              $ref: '#/components/schemas/FileObjectMetadata'
            type: array
        created:
          example: "2023-09-08T17:35:43Z"
          type: string
        format:
          description: Format of the response
          enum:
          - json
          nullable: true
          type: string
        last_modified:
          example: "2023-09-08T17:35:43Z"
          type: string
        mimetype:
          type: string
        name:
          description: Name of the file object
          example: file.json
          type: string
        path:
          description: Path of the file object
          example: parent_folder/sample_folder/file.json
          type: string
        size:
          example: 32
          type: integer
        type:
          description: Object type
          enum:
          - ""
          - json
          - directory
          nullable: true
          type: string
        writable:
          type: boolean
      type: object
    FlowCreateV2:
      description: Represents the information specified while creating a SingleStore
        Flow instance (v2; cluster terminology)
      properties:
        clusterID:
          description: The ID of the cluster to associate the Flow instance with
          example: 7d6b3a5a-0000-1000-9000-d454af4c785b
          format: uuid
          type: string
        databaseName:
          description: Name of the SingleStore database to connect to
          example: database_1
          type: string
        name:
          description: Name of the Flow instance
          example: flow-instance-1
          type: string
        size:
          description: Size of the Flow instance (in Flow size notation), such as
            "F1"
          example: F2
          type: string
        userName:
          description: Username of the SingleStore database user with which to connect
            to the SingleStore database
          example: admin
          type: string
      required:
      - name
      - clusterID
      - userName
      - databaseName
      type: object
    FlowV2:
      description: Represents information related to a SingleStore Flow instance (v2;
        cluster terminology)
      properties:
        clusterID:
          description: ID of the cluster associated with the Flow instance
          format: uuid
          type: string
        createdAt:
          description: Timestamp of when the Flow instance was created
          format: date-time
          type: string
        databaseName:
          description: Name of the SingleStore database associated with the Flow instance
          type: string
        deletedAt:
          description: (If included in the output) The timestamp of when the Flow
            instance was terminated
          format: date-time
          type: string
        endpoint:
          description: Endpoint of the Flow instance
          type: string
        flowID:
          description: ID of the Flow instance
          format: uuid
          type: string
        name:
          description: Name of the Flow instance
          type: string
        size:
          description: Size of the Flow instance (in Flow size notation), such as
            "F1"
          type: string
        status:
          description: Status of the Flow instance, such as whether it is Running
            or Deleted
          type: string
        userName:
          description: Name of the SingleStore database user associated with the Flow
            instance
          type: string
      required:
      - name
      - flowID
      - createdAt
      type: object
    IdentityRole:
      properties:
        resourceID:
          description: The resource id
          format: uuid
          type: string
        resourceType:
          description: The resource type
          type: string
        role:
          description: The role can access the resource
          type: string
      required:
      - role
      - resourceType
      - resourceID
      type: object
    JobCreateV2:
      description: Represents the information specified when creating a job (v2; cluster
        terminology).
      properties:
        description:
          description: Description of the job
          example: Job Description
          nullable: true
          type: string
        executionConfig:
          properties:
            createSnapshot:
              description: Indicates whether the job will save snapshots
              type: boolean
            notebookPath:
              description: Path to the shared notebook file that contains the code
                that needs to be run on a schedule as part of this job
              example: sample_notebook.ipynb
              type: string
            runtimeName:
              description: Name of the runtime
              example: notebooks-cpu-small
              nullable: true
              type: string
          required:
          - notebookPath
          - createSnapshot
          type: object
        name:
          description: Name of the job
          example: Job Name
          nullable: true
          type: string
        parameters:
          description: Array containing the parameters for the job
          items:
            $ref: '#/components/schemas/JobParameter'
          type: array
        schedule:
          $ref: '#/components/schemas/JobSchedule'
        targetConfig:
          $ref: '#/components/schemas/JobTargetConfigV2'
      required:
      - name
      - executionConfig
      - schedule
      type: object
    JobExecutionConfig:
      properties:
        createSnapshot:
          description: Indicates whether the job will save snapshots
          example: true
          type: boolean
        maxAllowedExecutionDurationInMinutes:
          description: Maximum allowed execution duration for the job in minutes
          example: 30
          type: integer
        notebookPath:
          description: Path to the shared notebook file that contains the code that
            needs to be run on a schedule as part of this job
          example: sample_notebook.ipynb
          type: string
      required:
      - notebookPath
      - createSnapshot
      - maxAllowedExecutionDurationInMinutes
      type: object
    JobMetadata:
      properties:
        avgDurationInSeconds:
          description: Average duration of executions (in seconds) with the corresponding
            status
          example: 3.21
          format: float
          nullable: true
          type: number
        count:
          description: The number of executions with the corresponding status
          example: 10
          type: integer
        maxDurationInSeconds:
          description: Maximum duration of executions (in seconds) with the corresponding
            status
          example: 7.73
          format: float
          nullable: true
          type: number
        status:
          enum:
          - Unknown
          - Scheduled
          - Running
          - Completed
          - Failed
          - Error
          - Canceled
          example: Completed
          type: string
      required:
      - status
      - count
      type: object
    JobParameter:
      properties:
        name:
          description: Name of the parameter
          example: foo
          type: string
        type:
          description: Type of the parameter
          enum:
          - string
          - integer
          - float
          - boolean
          example: integer
          type: string
        value:
          description: Value of the parameter
          example: "10"
          type: string
      required:
      - name
      - value
      - type
      type: object
    JobSchedule:
      properties:
        executionIntervalInMinutes:
          description: The time interval between executions of this job. This is required
            for a Recurring job.
          example: 60
          nullable: true
          type: integer
        mode:
          enum:
          - Recurring
          - Once
          type: string
        startAt:
          description: The time at which the first execution of this job should begin.
          format: date-time
          nullable: true
          type: string
      required:
      - mode
      type: object
    JobTargetConfigV2:
      description: Represents the target configuration for a job (v2; cluster terminology).
      nullable: true
      properties:
        databaseName:
          description: Name of the database
          example: sample_db
          type: string
        resumeTarget:
          description: Indicates whether executions of this job will resume the target
            associated with the job, if it is suspended
          example: true
          type: boolean
        targetID:
          description: The target ID for the job, this could be the ID of a Cluster
            or VirtualCluster (in case of shared-tier).
          format: uuid
          type: string
        targetType:
          enum:
          - Cluster
          - VirtualCluster
          type: string
      required:
      - targetType
      - targetID
      - resumeTarget
      type: object
    JobV2:
      description: Represents information related to a job (v2; cluster terminology).
      properties:
        completedExecutionsCount:
          description: Count of completed executions for the job
          example: 10
          type: integer
        createdAt:
          description: Creation time of the job
          format: date-time
          type: string
        description:
          description: Description of the job
          example: Sample Description
          nullable: true
          type: string
        enqueuedBy:
          description: ID of the user who created the job
          format: uuid
          type: string
        executionConfig:
          $ref: '#/components/schemas/JobExecutionConfig'
        jobID:
          description: ID of the job
          format: uuid
          type: string
        jobMetadata:
          description: Array containing information about the max/avg execution duration
            and the number of executions with a particular status for the job
          items:
            $ref: '#/components/schemas/JobMetadata'
          type: array
        name:
          description: Name of the job
          example: Sample Job
          nullable: true
          type: string
        schedule:
          $ref: '#/components/schemas/JobSchedule'
        targetConfig:
          $ref: '#/components/schemas/JobTargetConfigV2'
        terminatedAt:
          description: Termination time of the job
          format: date-time
          nullable: true
          type: string
      required:
      - jobID
      - enqueuedBy
      - executionConfig
      - schedule
      - createdAt
      - completedExecutionsCount
      - jobMetadata
      type: object
    NotebookCloudFunction:
      description: A cloud function resource
      properties:
        createdAt:
          description: Timestamp of when the cloud function was created
          example: "2025-08-08T13:41:45.835577Z"
          format: date-time
          type: string
        createdBy:
          description: ID of the user that created the cloud function
          example: 41e2268a-b000-4000-9000-4ed98936a401
          format: uuid
          type: string
        description:
          description: Description of the cloud function
          example: My custom cloud function
          type: string
        endpoint:
          description: The endpoint URL for invoking the cloud function
          example: https://app.singlestore.com/functions/7b68b78d-a000-4000-9000-0864fd331524/
          type: string
        lastUpdatedAt:
          description: Timestamp of when the cloud function was last updated
          example: "2025-08-09T10:20:30.123456Z"
          format: date-time
          type: string
        name:
          description: Name of the cloud function
          example: my-cloud-function
          type: string
        serviceID:
          description: Unique identifier for the cloud function
          example: 7b68b78d-a000-4000-9000-0864fd331524
          format: uuid
          type: string
        status:
          description: Current status of the cloud function
          enum:
          - Initializing
          - Active
          - Failed
          - Deleted
          - Idle
          example: Initializing
          type: string
      required:
      - serviceID
      - name
      - status
      - createdBy
      - createdAt
      type: object
    NotebookCloudFunctionPaginationMetadata:
      description: Pagination metadata for the cloud functions list
      properties:
        count:
          description: Number of cloud functions in the current page
          example: 1
          type: integer
        hasNextPage:
          description: Indicates if there is a next page
          example: false
          type: boolean
        hasPreviousPage:
          description: Indicates if there is a previous page
          example: false
          type: boolean
        totalCount:
          description: Total number of cloud functions
          example: 1
          type: integer
      required:
      - count
      - hasPreviousPage
      - hasNextPage
      - totalCount
      type: object
    Organization:
      description: Represents information related to an organization
      properties:
        firewallRanges:
          description: The list of allowed IP addresses which can access the Management
            API
          items:
            type: string
          type: array
        name:
          description: Name of the organization
          type: string
        orgID:
          description: ID of the organization
          format: uuid
          type: string
      required:
      - orgID
      type: object
    PermissionDefinition:
      properties:
        description:
          description: Permission description
          type: string
        permission:
          description: Permission name
          type: string
        resourceType:
          description: Resource type for the permission
          type: string
      required:
      - permission
      - resourceType
      type: object
    PermissionsForResourceType:
      properties:
        permissions:
          description: The permissions of the resource type on the role
          items:
            type: string
          type: array
        resourceType:
          description: Resource type
          type: string
      required:
      - resourceType
      - permissions
      type: object
    PermissionsSpecification:
      properties:
        permissions:
          description: The permissions of the resource type on the role
          items:
            type: string
          type: array
        resourceType:
          description: Resource type
          type: string
      required:
      - resourceType
      - permissions
      type: object
    PrivateConnectionCreateV2:
      description: Represents the information specified when creating a private connection
        for a cluster
      properties:
        allowList:
          description: The private connection allow list
          example: my-allow-list
          type: string
        clusterID:
          description: The ID of the cluster to connect with
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
          format: uuid
          type: string
        kaiEndpointID:
          description: VPC Endpoint ID for AWS
          example: vpce-12345678901234567
          type: string
        serviceName:
          description: The name of the private connection service
          example: My private link
          type: string
        sqlPort:
          description: The SQL port
          example: 3306
          type: number
        type:
          description: The private connection type
          enum:
          - INBOUND
          - OUTBOUND
          example: INBOUND
          type: string
        websocketsPort:
          description: The websockets port
          example: 443
          type: number
      required:
      - clusterID
      type: object
    PrivateConnectionKaiInfo:
      description: Represents the information for creating private connection to SingleStore
        Kai
      properties:
        serviceName:
          description: VPC Endpoint Service Name for AWS
          example: com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdefg
          type: string
      type: object
    PrivateConnectionOutboundAllowList:
      description: Represents information related to a private connection outbound
        allow list
      properties:
        outboundAllowList:
          description: The account ID allowed for outbound connections
          example: arn:aws:iam:xxxxxxxxx:root
          type: string
      type: object
    PrivateConnectionUpdate:
      description: Represents the information specfied when updating a private connection
      properties:
        allowList:
          description: The private connection allow list
          example: my-allow-list
          type: string
      type: object
    Project:
      allOf:
      - $ref: '#/components/schemas/ProjectIDResponse'
      - $ref: '#/components/schemas/ProjectCreate'
      - properties:
          createdAt:
            description: The timestamp of when the project was created
            format: date-time
            type: string
        required:
        - createdAt
        type: object
      description: Full project representation
    ProjectCreate:
      allOf:
      - $ref: '#/components/schemas/ProjectUpdate'
      - properties:
          edition:
            $ref: '#/components/schemas/ProjectEdition'
        required:
        - edition
        type: object
      description: Request body for creating a project
    ProjectEdition:
      description: Edition of the project
      enum:
      - STANDARD
      - ENTERPRISE
      - PREMIUM
      - DEDICATED
      - SHARED
      type: string
    ProjectIDResponse:
      description: Represents the project identifier response payload
      properties:
        projectID:
          format: uuid
          type: string
      required:
      - projectID
      type: object
    ProjectUpdate:
      description: Request body for updating a project
      properties:
        name:
          description: Name of the project
          type: string
      required:
      - name
      type: object
    RegionV2:
      description: Represents information related to a region in which a workspace
        group is created
      properties:
        provider:
          $ref: '#/components/schemas/CloudProvider'
        region:
          description: Name of the region
          type: string
        regionName:
          description: The region code name
          type: string
      required:
      - region
      - provider
      - regionName
      type: object
    ResourceInfo:
      properties:
        description:
          description: Additional information needed to identify or control the resource
          type: string
        displayType:
          description: Human-readable resource type
          type: string
        name:
          description: Resource name
          type: string
        resourceID:
          description: ID of the recoverable resource
          format: uuid
          type: string
        resourceType:
          description: Authorization resource type
          type: string
      required:
      - resourceID
      - resourceType
      - displayType
      - name
      type: object
    ResourceRole:
      properties:
        description:
          description: the description about the role
          type: string
        grants:
          items:
            $ref: '#/components/schemas/ResourceRoleGrant'
          type: array
        role:
          description: the role can access the resource
          type: string
      required:
      - role
      - description
      - grants
      type: object
    ResourceRoleGrant:
      properties:
        createdAt:
          description: Creation timestamp
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        identity:
          oneOf:
          - $ref: '#/components/schemas/UserInfo'
          - $ref: '#/components/schemas/TeamInfo'
        inheritedFrom:
          properties:
            resourceID:
              description: ID of the resource
              format: uuid
              type: string
            resourceType:
              type: string
            role:
              type: string
          required:
          - role
          - resourceType
          - resourceID
          type: object
      required:
      - identity
      - createdAt
      type: object
    RetentionPeriodParams:
      description: Represents the information to be specified when updating the retention
        period of a workspace group.
      properties:
        retentionPeriod:
          description: Retention period in minutes
          example: 10800
          type: integer
      required:
      - retentionPeriod
      type: object
    RoleCreate:
      allOf:
      - $ref: '#/components/schemas/RoleUpdate'
      - properties:
          role:
            description: The name for the custom role
            type: string
        required:
        - role
        type: object
    RoleCreateV2:
      allOf:
      - $ref: '#/components/schemas/RoleReplaceV2'
      - properties:
          role:
            description: The name for the custom role
            type: string
        required:
        - role
        type: object
    RoleDefinition:
      properties:
        createdAt:
          description: Creation timestamp.
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        description:
          description: A description of the role
          type: string
        inherits:
          description: The roles that current role will inherit from
          items:
            $ref: '#/components/schemas/TypedRole'
          type: array
        isCustom:
          description: Indicate the role is a custom role
          type: boolean
        permissions:
          description: The permissions that the role has
          items:
            type: string
          type: array
        resourceType:
          description: The resource type for the role
          type: string
        role:
          description: The role name
          type: string
        updatedAt:
          description: Timestamp of most recent state change.
          format: date-time
          type: string
        updatedBy:
          $ref: '#/components/schemas/UserInfo'
      required:
      - role
      - resourceType
      - permissions
      - isCustom
      - inherits
      type: object
    RoleDefinitionV2:
      properties:
        createdAt:
          description: Creation timestamp.
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        description:
          description: A description of the role
          type: string
        permissions:
          description: Permissions for the role definition
          items:
            $ref: '#/components/schemas/PermissionsForResourceType'
          type: array
        role:
          description: The role name
          type: string
        updatedAt:
          description: Timestamp of most recent state change.
          format: date-time
          type: string
        updatedBy:
          $ref: '#/components/schemas/UserInfo'
      required:
      - role
      - permissions
      type: object
    RoleReplaceV2:
      properties:
        description:
          description: A description of the role
          type: string
        permissions:
          description: All permissions defined for the role to be replaced
          items:
            $ref: '#/components/schemas/PermissionsSpecification'
          type: array
        role:
          description: Optional role name and must match the role path parameter when
            provided
          type: string
      required:
      - permissions
      type: object
    RoleUpdate:
      properties:
        description:
          description: A description of the role
          type: string
        inherits:
          description: The roles that the current role will inherit from
          items:
            $ref: '#/components/schemas/TypedRole'
          type: array
        permissions:
          description: The permissions are seperated by the resourceType, like you
            can put 'View Storage' DR for 'Cluster' resourceType but not 'Organization'
          items:
            type: string
          type: array
      required:
      - permissions
      - inherits
      type: object
    RuntimesResult:
      properties:
        description:
          description: The description of the runtime
          example: 1750m vCPU | 15Gi
          type: string
        name:
          description: The name of the runtime
          example: notebooks-cpu-small
          type: string
      required:
      - name
      - description
      type: object
    Secret:
      description: Represents information related to SingleStore Helios secrets.
      properties:
        createdAt:
          description: The timestamp of when the secret was created.
          example: "2023-09-18T09:56:56Z"
          type: string
        createdBy:
          description: The ID of the user that created the secret.
          example: 17290909-0000-1000-9000-e30410f1b05a
          format: uuid
          type: string
        deletedAt:
          description: The timestamp of when the secret was deleted.
          example: "2023-09-18T09:56:56Z"
          type: string
        deletedBy:
          description: The ID of the user that deleted the secret.
          example: 17290909-0000-1000-9000-e30410f1b05a
          format: uuid
          type: string
        lastUpdatedAt:
          description: The timestamp of when the secret was last updated.
          example: "2023-09-18T09:56:56Z"
          type: string
        lastUpdatedBy:
          description: The ID of the user that last updated the secret.
          example: 17290909-0000-1000-9000-e30410f1b05a
          format: uuid
          type: string
        name:
          description: The name of the secret. It can only contain alphanumeric characters
            or underscores.
          example: my_secret
          type: string
        secretID:
          description: The ID of the secret.
          example: c74bb6a6-0000-1000-9000-1d874fa277b0
          format: uuid
          type: string
        value:
          description: The value of the secret.
          example: my_secret_value
          type: string
      required:
      - secretID
      - name
      - createdAt
      - createdBy
      - lastUpdatedAt
      - lastUpdatedBy
      type: object
    SecretCreate:
      description: Represents the information specified when creating a secret.
      properties:
        name:
          description: The name of the secret. It can only contain alphanumeric characters
            or underscores.
          example: my_secret
          type: string
        value:
          description: The value of the secret.
          example: my_secret_value
          type: string
      required:
      - name
      - value
      type: object
    SecretUpdate:
      description: Represents the information specified when updating a secret.
      properties:
        value:
          description: The value of the secret.
          example: my_secret_value
          type: string
      type: object
    ServiceAccount:
      allOf:
      - $ref: '#/components/schemas/ServiceAccountIDResponse'
      - $ref: '#/components/schemas/ServiceAccountUpdate'
      - properties:
          createdBy:
            description: Identifier of the user that created the service account.
            format: uuid
            type: string
          email:
            description: The generated fake email address for the service account.
            example: service-account-abc123@service.singlestore.com
            type: string
        required:
        - email
        - name
        - description
        type: object
      description: Information about a SingleStoreDB Cloud service account.
    ServiceAccountCreate:
      allOf:
      - $ref: '#/components/schemas/ServiceAccountUpdate'
      - required:
        - name
        type: object
      description: Information specified when creating a service account.
    ServiceAccountIDResponse:
      description: Represents a service account identifier response payload.
      properties:
        serviceAccountID:
          description: Service account identifier.
          format: uuid
          type: string
      required:
      - serviceAccountID
      type: object
    ServiceAccountUpdate:
      description: Information specified when updating a service account.
      properties:
        description:
          description: Service account description.
          example: Service account used by ingestion jobs.
          type: string
        name:
          description: Service account name.
          example: ingestion-service-renamed
          type: string
      type: object
    SharedTierCreateUser:
      description: Represents the information specified when creating a user in a
        shared tier workspace
      properties:
        password:
          description: The starter workspace user password to connect the new user
            to the database.
          example: My-password1!
          type: string
        userName:
          description: The starter workspace user name to connect the new user to
            the database
          example: new-user
          type: string
      required:
      - userName
      type: object
    SharedTierCreateVirtualCluster:
      properties:
        databaseName:
          description: Name of the database
          example: database_60c6b
          type: string
        name:
          description: Name of the starter cluster
          example: starter-cluster-1
          type: string
        projectID:
          description: Assigns the starter cluster to a project
          example: 2d7bd375-6303-46c4-903a-8a3d5b4922c0
          format: uuid
          type: string
        provider:
          description: Name of the provider
          enum:
          - AWS
          - GCP
          - AZURE
          type: string
        regionName:
          description: The region code
          example: us-east-1
          type: string
      required:
      - name
      - databaseName
      - provider
      - regionName
      type: object
    SharedTierUpdateUser:
      description: Represents the information specified when updating a user in a
        shared tier workspace
      properties:
        password:
          description: The virtual workspace user password to connect the new user
            to the database.
          example: My-password1!
          type: string
      type: object
    SharedTierVirtualCluster:
      properties:
        databaseName:
          description: Name of the database
          example: database_60c6b
          type: string
        endpoint:
          description: The application endpoint of the SingleStore database
          example: svc-3482219c-a389-4079-b18b-d50662524e8a-shared-dml.aws-virginia-6.svc.singlestore.com:3333
          type: string
        mysqlDmlPort:
          description: The MySQL DML port
          example: 3333
          type: integer
        name:
          description: Name of the starter cluster
          example: starter-cluster-1
          type: string
        projectID:
          description: ID of the project to which the virtual cluster is assigned.
          example: 2d7bd375-0000-1000-9000-8a3d5b4922c0
          format: uuid
          type: string
        virtualClusterID:
          description: ID of the starter cluster
          format: uuid
          type: string
        websocketPort:
          description: The websockets port
          example: 3334
          type: integer
      type: object
    SimulateUsageRequest:
      description: Request body for simulating billing usage
      example:
        endBefore: "2024-01-31T23:59:59Z"
        resourceConfigurations:
        - edition: Standard
          endBefore: "2024-01-31T23:59:59Z"
          id: 7d6b3a5a-0000-1000-9000-d454af4c785b
          multiAZ: false
          size: S-1
          startAt: "2024-01-01T00:00:00Z"
          status: Active
        startAt: "2024-01-01T00:00:00Z"
      properties:
        endBefore:
          description: The end time of the simulation period (must be after startAt)
          example: "2024-06-02T08:00:00Z"
          format: date-time
          type: string
        resourceConfigurations:
          description: Array of resource configurations to simulate
          items:
            $ref: '#/components/schemas/SimulationResourceConfig'
          type: array
        startAt:
          description: The start time of the simulation period
          example: "2024-06-01T08:00:00Z"
          format: date-time
          type: string
      required:
      - startAt
      - endBefore
      - resourceConfigurations
      type: object
    SimulationResourceConfig:
      description: Configuration for a simulated resource
      properties:
        cacheMultiplier:
          description: The cache multiplier (optional)
          enum:
          - X1
          - X2
          - X4
          type: string
        cellID:
          description: The ID of the cell (optional)
          format: uuid
          type: string
        edition:
          description: The edition of the resource (optional)
          enum:
          - Standard
          - Enterprise
          - Dedicated
          type: string
        endBefore:
          description: The end time for this resource configuration
          format: date-time
          type: string
        id:
          description: The ID of the resource
          format: uuid
          type: string
        multiAZ:
          description: Whether the resource uses multiple availability zones (optional)
          type: boolean
        scaleFactor:
          description: The scale factor (optional)
          enum:
          - X1
          - X2
          - X4
          type: string
        size:
          description: The size of the resource, e.g., S-00, S-1, S-2 (optional)
          type: string
        startAt:
          description: The start time for this resource configuration
          format: date-time
          type: string
        status:
          description: The status of the resource (optional)
          enum:
          - Active
          - Paused
          - Terminated
          type: string
      required:
      - id
      - startAt
      - endBefore
      type: object
    SizeConfig:
      description: Size configuration for the cluster
      properties:
        cacheConfig:
          description: Multiplier for the persistent cache. Can be 1, 2, or 4.
          example: 1
          type: number
        scaleFactor:
          description: The scale factor specified for the cluster. Can be 1, 2, or
            4.
          example: 1
          type: number
        size:
          description: Size of the cluster (in workspace size notation), such as "S-00"
            or "S-1"
          example: S-2
          type: string
      type: object
    Team:
      description: A SingleStoreDB Cloud team.
      example:
        createdAt: "2023-09-18T09:56:56Z"
        description: All analysts in the abc.com organization
        memberTeams:
        - description: ""
          name: APAC Analysts
          teamID: 3a6fd5c9-616c-4dea-b41c-92eb1d442889
        memberUsers:
        - email: jane.doe@abc.com
          firstName: Jane
          lastName: Doe
          userID: 121e74be-6b93-44ac-b240-9be663f680de
        - email: jack.smith@abc.com
          firstName: Jack
          lastName: Smith
          userID: a69181f0-8d64-4b31-a516-ce1b6483edd4
        name: Analysts
        teamID: c74bb6a6-0000-1000-9000-1d874fa277b0
      properties:
        createdAt:
          description: Team creation timestamp.
          example: "2023-09-18T09:56:56Z"
          type: string
        description:
          description: Team description.
          example: All analysts in the abc.com organization
          type: string
        memberTeams:
          items:
            $ref: '#/components/schemas/TeamInfo'
          type: array
        memberUsers:
          items:
            $ref: '#/components/schemas/UserInfo'
          type: array
        name:
          description: Team name.
          example: Analysts
          type: string
        teamID:
          description: Team identifier.
          example: c74bb6a6-0000-1000-9000-1d874fa277b0
          format: uuid
          type: string
      required:
      - teamID
      - name
      - description
      type: object
    TeamCreate:
      description: Information specified when creating a team.
      properties:
        description:
          description: Optional team description.
          example: All analysts in the abc.com organization
          type: string
        name:
          description: Team name.
          example: Analysts
          type: string
      required:
      - name
      type: object
    TeamInfo:
      description: Summary information about a SingleStoreDB Cloud team.
      properties:
        description:
          description: Team description.
          example: All analysts in the abc.com organization
          type: string
        name:
          description: Team name.
          example: Analysts
          type: string
        teamID:
          description: Team identifier.
          example: c74bb6a6-0000-1000-9000-1d874fa277b0
          format: uuid
          type: string
      required:
      - teamID
      - name
      - description
      type: object
    TeamUpdate:
      description: Information specified when updating a team.
      properties:
        addMemberTeamIDs:
          description: List of identifiers of teams to be added as members.
          items:
            example: c74bb6a6-0000-1000-9000-1d874fa277b0
            format: uuid
            type: string
          type: array
        addMemberUserEmails:
          description: List of emails of users to be added as members.
          items:
            example: jane.doe@abc.com
            type: string
          type: array
        addMemberUserIDs:
          description: List of identifiers of users to be added as members.
          items:
            example: 121e74be-6b93-44ac-b240-9be663f680de
            format: uuid
            type: string
          type: array
        description:
          description: Team description.
          example: All analysts in the abc.com organization
          type: string
        name:
          description: Team name.
          example: Analysts
          type: string
        removeMemberTeamIDs:
          description: List of identifiers of teams to be removed from members.
          items:
            example: c74bb6a6-0000-1000-9000-1d874fa277b0
            format: uuid
            type: string
          type: array
        removeMemberUserEmails:
          description: List of emails of users to be removed from members.
          items:
            example: jane.doe@abc.com
            type: string
          type: array
        removeMemberUserIDs:
          description: List of identifiers of users to be removed from members.
          items:
            example: 121e74be-6b93-44ac-b240-9be663f680de
            format: uuid
            type: string
          type: array
      type: object
    TypedRole:
      properties:
        resourceType:
          description: Resource type of the role
          type: string
        role:
          description: The role name
          type: string
      required:
      - role
      - resourceType
      type: object
    UpdateWindow:
      description: Represents information related to an update window
      properties:
        day:
          description: Day of week (0-6), starting on Sunday
          example: 2
          type: number
        hour:
          description: Hour of day - 0 to 23 (UTC)
          example: 1
          type: number
      required:
      - hour
      - day
      type: object
    User:
      allOf:
      - $ref: '#/components/schemas/UserInfo'
      - description: Information about a SingleStoreDB Cloud user.
        properties:
          cloudPrincipal:
            description: Customer cloud identity bound to a cloud principal user.
            example: arn:aws:iam::123456789012:role/IngestionRole
            type: string
          createdBy:
            description: Identifier of the user that created a service account or
              cloud principal user.
            format: uuid
            type: string
          description:
            description: Description for service account and cloud principal users.
            example: Service account used by ingestion jobs.
            type: string
          userKind:
            description: User kind.
            enum:
            - Standard
            - ServiceAccount
            - CloudPrincipal
            example: Standard
            type: string
        required:
        - userKind
        type: object
    UserInfo:
      description: Summary information about a SingleStoreDB Cloud user.
      properties:
        email:
          description: The email address of the user.
          example: jane.doe@abc.com
          type: string
        firstName:
          description: First name of the user.
          example: Jane
          type: string
        lastName:
          description: Last name of the user.
          example: Doe
          type: string
        userID:
          description: User identifier.
          example: c74bb6a6-0000-1000-9000-1d874fa277b0
          format: uuid
          type: string
      required:
      - userID
      - email
      - firstName
      - lastName
      type: object
    UserInvitation:
      description: Information specified when creating a user invitation.
      properties:
        actedAt:
          description: Timestamp of most recent state change.
          format: date-time
          type: string
        createdAt:
          description: Creation timestamp.
          format: date-time
          type: string
        email:
          description: User email address.
          example: alice@abc.com
          type: string
        invitationID:
          description: Invitation identifier.
          example: c74bb6a6-0000-1000-9000-1d874fa277b0
          format: uuid
          type: string
        message:
          description: Welcome message
          example: Welcome to SingleStore@abc.com
          type: string
        state:
          description: Invitation state. Pending, Accepted, Refused, or Revoked.
          enum:
          - Pending
          - Accepted
          - Refused
          - Revoked
          example: Pending
          type: string
        teamIDs:
          description: List of user teams.
          items:
            example: c74bb6a6-0000-1000-9000-1d874fa277b0
            format: uuid
            type: string
          type: array
      type: object
    UserInvitationCreate:
      description: Information specified when creating a user invitation.
      properties:
        email:
          description: User email address.
          example: alice@abc.com
          format: email
          type: string
        teamIDs:
          description: List of user teams.
          items:
            example: c74bb6a6-0000-1000-9000-1d874fa277b0
            format: uuid
            type: string
          type: array
      required:
      - email
      type: object
    V2BillingUsage:
      description: Represents the information related to billing usage
      properties:
        description:
          description: Description of the usage metric
          type: string
        metric:
          description: The metric name
          enum:
          - ComputeCredit
          - StorageAvgByte
          type: string
        usage:
          description: Usage information
          items:
            properties:
              endTime:
                description: The end time of the interval
                example: 2024-06-01 09:00:00 +0000 UTC
                type: string
              ownerID:
                description: ID of the owner of the resource
                example: 78af2f46-0000-1000-9000-3f6f5365d878
                type: string
              resourceID:
                description: ID of the resource
                example: 78af2f46-0000-1000-9000-3f6f5365d878
                type: string
              resourceName:
                description: Name of the resource
                example: test-cluster
                type: string
              resourceType:
                description: The resource type
                enum:
                - Cluster
                example: Cluster
                type: string
              startTime:
                description: The start time of the interval
                example: 2024-06-01 08:00:00 +0000 UTC
                type: string
              value:
                description: Resource usage value
                example: "30.00"
                type: string
            type: object
          type: array
      type: object
    V2SimulateUsageResponse:
      description: Response containing simulated usage data
      properties:
        resourceUsage:
          description: Array of simulated resource usage entries
          items:
            $ref: '#/components/schemas/V2SimulatedResourceUsage'
          type: array
      type: object
    V2SimulatedResourceUsage:
      description: Simulated usage data for a single resource
      example:
        amount: 720.5
        endBefore: "2024-01-31T23:59:59Z"
        id: 7d6b3a5a-0000-1000-9000-d454af4c785b
        metric: ComputeHour
        name: test-cluster
        startAt: "2024-01-01T00:00:00Z"
        type: Cluster
      properties:
        amount:
          description: The computed usage amount
          format: double
          type: number
        endBefore:
          description: The end time of the usage period (optional)
          format: date-time
          type: string
        id:
          description: The ID of the resource
          format: uuid
          type: string
        metric:
          description: The metric used to measure usage (optional)
          enum:
          - ComputeHour
          type: string
        name:
          description: The name of the resource (optional)
          type: string
        parentID:
          description: The ID of the parent resource (optional)
          format: uuid
          type: string
        startAt:
          description: The start time of the usage period (optional)
          format: date-time
          type: string
        type:
          description: The type of resource (optional)
          enum:
          - Cluster
          type: string
      required:
      - id
      - amount
      type: object
  securitySchemes:
    ApiKeyAuth:
      bearerFormat: API key
      description: |
        For information on authenticating your API requests, refer to [`Management` API Overview](https://docs.singlestore.com/managed-service/en/reference/management-api.html).
      scheme: bearer
      type: http
info:
  contact:
    name: SingleStore Support
    url: https://www.singlestore.com/support/
  description: |
    The `Management` API can be used to create and manage workspaces, workspace groups, private connections, etc. SingleStore recommends reading the [`Management` API Overview](https://docs.singlestore.com/managed-service/en/reference/management-api.html) before getting started with the API reference.

    All the URLs referenced in this API documentation use the `https://api.singlestore.com` service endpoint as their base.
  title: SingleStore Management API
  version: 1.2.172
openapi: 3.0.0
paths:
  /v1/cloudPrincipals:
    description: |
      The `cloudPrincipals` endpoint is used to manage cloud principals.

      To list or retrieve existing cloud principals, use the Users endpoints: list with
      `GET /v1/users` (filtering on `userKind` equal to `CloudPrincipal`) and get a single
      cloud principal with `GET /v1/users/{userID}`, where `userID` is the `cloudPrincipalID`.
    post:
      description: |-
        There are no dedicated list or get endpoints for cloud principals. To query
        existing cloud principals, use the Users endpoints:

        - **List**: `GET /v1/users` returns every member of the organization. Filter the
          results to the entries where `userKind` is `CloudPrincipal`.
        - **Get**: `GET /v1/users/{userID}` returns a single cloud principal, where `userID`
          is the `cloudPrincipalID` returned when the cloud principal was created.

        In the `User` responses, the cloud identity bound to the principal is returned in
        the `cloudPrincipal` field, along with `description` and `createdBy`.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudPrincipalCreate'
        description: Cloud principal creation parameters.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CloudPrincipal'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "409":
          description: Cloud principal already exists in this organization
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a cloud principal in the current organization.
      tags:
      - Cloud Principals
  /v1/cloudPrincipals/{cloudPrincipalID}:
    delete:
      description: |-
        Deletes the specified cloud principal from the current organization.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/cloudPrincipalID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CloudPrincipalIDResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cloud principal with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a cloud principal.
      tags:
      - Cloud Principals
    patch:
      description: |-
        Updates the name and/or description for the specified cloud principal.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/cloudPrincipalID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudPrincipalUpdate'
        description: Cloud principal update parameters.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CloudPrincipal'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cloud principal with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates a cloud principal.
      tags:
      - Cloud Principals
  /v1/cloudfunctions:
    get:
      description: Lists all the cloud functions in the current organization.
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offsetID'
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  cloudFunctions:
                    items:
                      $ref: '#/components/schemas/NotebookCloudFunction'
                    type: array
                  metadata:
                    $ref: '#/components/schemas/NotebookCloudFunctionPaginationMetadata'
                type: object
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Lists the cloud functions
      tags:
      - CloudFunctions
    post:
      description: Creates a new cloud function. Upon successful completion of the
        request, the ID of the cloud function is returned in the API response.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudFunctionCreate'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  cloudFunctionID:
                    example: 7b68b78d-a000-4000-9000-0864fd331524
                    type: string
                type: object
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Creates a new cloud function
      tags:
      - CloudFunctions
  /v1/cloudfunctions/{cloudfunctionID}:
    delete:
      description: Deletes the cloud function with the specified ID. You must specify
        the ID of the cloud function in the API call.
      parameters:
      - $ref: '#/components/parameters/cloudfunctionID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookCloudFunction'
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: Not found
        "500":
          description: Internal server error
      summary: Deletes a cloud function
      tags:
      - CloudFunctions
    get:
      description: Returns information on the cloud function with the specified ID.
        You must specify the cloud function ID in the API call.
      parameters:
      - $ref: '#/components/parameters/cloudfunctionID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookCloudFunction'
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: Not found
        "500":
          description: Internal server error
      summary: Gets information about a cloud function
      tags:
      - CloudFunctions
    patch:
      description: Updates the cloud function with the specified ID. You must specify
        the cloud function ID in the API call.
      parameters:
      - $ref: '#/components/parameters/cloudfunctionID'
      - $ref: '#/components/parameters/lastKnownUpdatedAt'
      - $ref: '#/components/parameters/updateNotebookSnapshot'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudFunctionUpdate'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookCloudFunction'
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: Not found
        "409":
          description: Conflict error
        "500":
          description: Internal server error
      summary: Updates a cloud function
      tags:
      - CloudFunctions
  /v1/cloudfunctions/{cloudfunctionID}/token:
    get:
      description: Returns a token that can be used to interact with cloud function
        applications.
      parameters:
      - $ref: '#/components/parameters/cloudfunctionID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppToken'
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Gets a cloud function token
      tags:
      - CloudFunctions
  /v1/roles/{resourceType}:
    get:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoleDefinition'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all roles for the given resource type, including custom roles
      tags:
      - Roles
    post:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleCreate'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinition'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new role for the given resource type
      tags:
      - Roles
  /v1/roles/{resourceType}/{role}:
    delete:
      description: |-
        Deletes the specified role.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      - $ref: '#/components/parameters/role'
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Resource not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a role.
      tags:
      - Roles
    get:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      - $ref: '#/components/parameters/role'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinition'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets a given role from a given resource type
      tags:
      - Roles
    put:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      - $ref: '#/components/parameters/role'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleUpdate'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinition'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Resource not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Update the name, permission, resource type, and inherits for the custom
        role.
      tags:
      - Roles
  /v1/serviceAccounts:
    description: The `serviceAccounts` endpoint is used to manage service accounts.
    post:
      description: |-
        Creates a service account in the current organization.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceAccountCreate'
        description: Service account creation parameters.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccount'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "409":
          description: Service account with the specified name already exists
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a service account in the current organization.
      tags:
      - Service Accounts
  /v1/serviceAccounts/{serviceAccountID}:
    delete:
      description: |-
        Deletes the specified service account from the current organization.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/serviceAccountID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccountIDResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A service account with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a service account.
      tags:
      - Service Accounts
    patch:
      description: |-
        Updates the name and/or description for the specified service account.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/serviceAccountID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceAccountUpdate'
        description: Service account update parameters.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccount'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A service account with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates a service account.
      tags:
      - Service Accounts
  /v2/auditLogs:
    get:
      description: Returns a list of all of the audit log entries for the user organization
        or audit logs for user redaction
      parameters:
      - description: The audit log type
        in: query
        name: type
        schema:
          type: string
      - description: The audit log source
        in: query
        name: source
        schema:
          type: string
      - description: The start date (inclusive) for the query in RFC3339 format (2019-10-12T07:20:50.52Z)
        in: query
        name: startDate
        schema:
          type: string
      - description: The end date (inclusive) for the query in RFC3339 format (2019-10-12T07:20:50.52Z)
        in: query
        name: endDate
        schema:
          type: string
      - description: The maximum number of rows to return
        in: query
        name: limit
        schema:
          type: number
      - description: The value of the nextToken returned from a previous query. This
          will guarantee the next results are new since the last query
        in: query
        name: nextToken
        schema:
          type: string
      - description: A first name to match against
        in: query
        name: firstName
        schema:
          type: string
      - description: A last name to match against
        in: query
        name: lastName
        schema:
          type: string
      - description: An email address to match against
        in: query
        name: email
        schema:
          format: email
          type: string
      - description: A user ID to match against
        in: query
        name: userID
        schema:
          format: uuid
          type: string
      - description: Filter by the API key ID used to perform the action
        in: query
        name: apiKeyID
        schema:
          format: uuid
          type: string
      - description: A cluster ID to filter by
        in: query
        name: clusterID
        schema:
          format: uuid
          type: string
      - description: A project ID to filter by
        in: query
        name: projectID
        schema:
          format: uuid
          type: string
      - description: A team ID to filter by
        in: query
        name: teamID
        schema:
          format: uuid
          type: string
      - description: If true, sort audit logs by createdAt in descending order
        in: query
        name: sortByDescending
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  auditLogs:
                    items:
                      $ref: '#/components/schemas/AuditLog'
                    type: array
                  nextToken:
                    description: The nextToken value can be used in a subsequent query
                      to guarantee any log entries are new since this query
                    type: string
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all of the audit logs for the user organization or audit logs
        for user redaction
      tags:
      - AuditLogs
  /v2/authorization/permissions:
    get:
      description: |2-


        This route is currently not supported by BYOC.
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PermissionDefinition'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all permissions
      tags:
      - Authorization
  /v2/authorization/permissions/{resourceType}:
    get:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/resourceType'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PermissionDefinition'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists permissions for the given resource type
      tags:
      - Authorization
  /v2/authorization/roles:
    get:
      description: |2-


        This route is currently not supported by BYOC.
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoleDefinitionV2'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all roles
      tags:
      - Authorization
    post:
      description: |2-


        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleCreateV2'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinitionV2'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new role
      tags:
      - Authorization
  /v2/authorization/roles/{role}:
    delete:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/role'
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Resource not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a role
      tags:
      - Authorization
    get:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/role'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinitionV2'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Resource not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets a role
      tags:
      - Authorization
    put:
      description: |2-


        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/role'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleReplaceV2'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDefinitionV2'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Resource not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Replaces a role
      tags:
      - Authorization
  /v2/billing/usage:
    description: The `usage` endpoint under billing can report compute and storage
      usage.
    get:
      description: |
        Returns the compute and storage usage of an organization in a specified timeframe. The results can be grouped by hour, day, and month using the `aggregateBy` parameter. The usage entries in the result set also include information on the resource ID, type, name, and usage.
        Note that the usage periods are rounded to the nearest hour/day/month that includes the requested range.
        For example, if the start time is "2023-07-30T18:30:00Z" and the end time is "2023-07-31T18:30:00Z",
        the hourly usage entries would be returned for the period from "2023-07-30T18:00:00Z" to "2023-07-31T19:00:00Z". Same goes for daily and monthly usage entries.
      parameters:
      - description: |
          The metric type. It can have the following values:

            * `ComputeCredit`: Returns the compute usage.
            * `StorageAvgByte`: Returns the average bytes of storage usage.

          By default, usage for both metrics is returned.
        in: query
        name: metric
        schema:
          enum:
          - ComputeCredit
          - StorageAvgByte
          type: string
      - description: |
          The start time for the usage interval in UTC ISO8601 format. For example, "2023-07-30T18:30:00Z".
        in: query
        name: startTime
        required: true
        schema:
          type: string
      - description: |
          The end time for the usage interval in UTC ISO8601 format. For example, "2023-07-30T18:30:00Z".
        in: query
        name: endTime
        required: true
        schema:
          type: string
      - description: |
          The interval used to aggregate the usage. It can have the following values: `hour`, `day`, and `month`. By default, the results are grouped by hour.
        in: query
        name: aggregateBy
        schema:
          enum:
          - hour
          - day
          - month
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  billingUsage:
                    items:
                      $ref: '#/components/schemas/V2BillingUsage'
                    type: array
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Returns the compute and storage usage of an organization
      tags:
      - Billing
  /v2/billing/usage/simulate:
    description: Allows a user to simulate billing usage given different resource
      configurations over time.
    post:
      description: |
        Simulates billing usage for resources based on provided configurations. This endpoint allows you to estimate compute usage costs by specifying resource configurations and time ranges.
        You must provide a time range (startAt and endBefore). An array of resource configurations may optionally be provided to simulate state changes of resources over time.
        Each resource configuration defines the characteristics of a resource during a specific time period. If no configurations are provided, a simulation will be run using the
        existing resources in the project for the time range based on their current configurations.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateUsageRequest'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2SimulateUsageResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Returns an array of simulated compute usage for the given resource
        configurations.
      tags:
      - Billing
  /v2/clusters:
    description: The `clusters` endpoint provides a unified API for managing workspaces
      and workspace groups as a single cluster entity.
    get:
      description: |
        Returns a list of all clusters accessible to the user. Each cluster represents a workspace combined with its workspace group information. Use the `includeTerminated` parameter to get a list of terminated clusters.
      parameters:
      - description: To include any terminated clusters, set to `true`
        in: query
        name: includeTerminated
        schema:
          type: boolean
      - description: Filter clusters by project ID
        in: query
        name: projectID
        schema:
          format: uuid
          type: string
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Cluster'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the clusters the user can access
      tags:
      - Clusters
    post:
      description: |
        Creates a new cluster for the current user. This operation creates both a workspace and its workspace group in a single API call. You must specify the name, region, size, settings, and connectivity configuration for the cluster in the API request body.

        The admin user password can be specified in the request body. If the admin user password is not specified in the API request, a password is generated and returned in the response object.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Cluster'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                adminPassword: generatedPassword123!
                clusterID: 7b68b78d-a000-4000-9000-0864fd331524
                groupID: 8c79c89e-1111-2000-a111-c2a85f17c847
              schema:
                properties:
                  adminPassword:
                    description: The generated admin password (if not provided in
                      request)
                    type: string
                  clusterID:
                    description: ID of the created cluster (workspace)
                    format: uuid
                    type: string
                  groupID:
                    description: ID of the created workspace group
                    format: uuid
                    type: string
                required:
                - clusterID
                - groupID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}:
    delete:
      description: |
        Terminates a cluster with the specified cluster ID. This operation terminates the workspace. If the workspace is the only workspace in its workspace group, the workspace group will also be terminated.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              example:
                clusterID: b07fff9f-0000-1000-9000-b1974e06b736
                workspaceGroupID: a06eee8e-1111-2000-8000-a0863d05a625
              schema:
                properties:
                  clusterID:
                    description: The ID of the terminated cluster (workspace)
                    format: uuid
                    type: string
                  workspaceGroupID:
                    description: The ID of the workspace group, returned only if it
                      was also terminated
                    format: uuid
                    type: string
                required:
                - clusterID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Cluster not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Terminates a cluster
      tags:
      - Clusters
    get:
      description: |
        Returns cluster information for the specified cluster ID, in JSON format. You must specify the cluster ID in the API call.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Cluster not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a cluster
      tags:
      - Clusters
    patch:
      description: |
        Updates a cluster with the specified cluster ID. You can update the cluster size, auto-suspend settings, auto-scale settings, firewall ranges, and SingleStore Kai setting.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Cluster'
        description: Cluster update parameters
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                clusterID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  clusterID:
                    description: The ID of the updated cluster
                    format: uuid
                    type: string
                required:
                - clusterID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Cluster not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates a cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}/accessControls:
    get:
      description: |-
        Return all the roles on the resource type, which include all grants of the given resource

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResourceRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get RBAC access information about the cluster
      tags:
      - Clusters
    patch:
      description: |-
        Grant or revoke grants on roles of the resource

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControlAccessAction'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Update the RBAC grants on the cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}/delegatedEntities:
    delete:
      description: Performs the same operation as the cluster group delegated entities
        DELETE endpoint. Removing entities through this cluster endpoint will update
        the delegated entities configuration for the entire cluster group. Entities
        to remove can be specified in the request body, via query parameters, or both
        (values will be merged and deduplicated).
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - description: Entities to remove. Supports comma-separated values or multiple
          parameters.
        in: query
        name: entities
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DelegatedEntitiesRemove'
        description: Optional request body to specify entities to remove.
      responses:
        "204":
          description: No Content
        "207":
          content:
            application/json:
              example:
                deleted:
                - arn:aws:iam::123456789012:role/singlestore-iceberg-readonly
                failed:
                - arn:aws:iam::123456789012:role/singlestore-s3-pipelines-users-bucket-readonly
              schema:
                properties:
                  deleted:
                    items:
                      type: string
                    type: array
                  failed:
                    items:
                      type: string
                    type: array
                required:
                - deleted
                - failed
                type: object
          description: Multi-Status
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "403":
          description: Operation not supported for cluster type or organization
        "409":
          description: Identity not configured for cluster
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Removes entities that the cluster's cloud workload identity can assume
      tags:
      - Clusters
      - Delegated Entities
    get:
      description: Returns the same list of delegated entities as the cluster group
        delegated entities endpoint. The cluster inherits and operates on the delegated
        entities configuration from its parent cluster group.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DelegatedEntity'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "403":
          description: Operation not supported for cluster type or organization
        "409":
          description: Identity not configured for cluster
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets the list of entities that the cluster's cloud workload identity
        can assume
      tags:
      - Clusters
      - Delegated Entities
    post:
      description: Performs the same operation as the cluster group delegated entities
        POST endpoint. Adding entities through this cluster endpoint will update the
        delegated entities configuration for the entire cluster group.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      requestBody:
        content:
          application/json:
            example:
              entities:
              - arn:aws:iam::987654321098:role/singlestore-iceberg-readonly
              - arn:aws:iam::987654321098:role/singlestore-s3-pipelines
            schema:
              $ref: '#/components/schemas/DelegatedEntitiesAppend'
        description: Specify the entities to add in the request body.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DelegatedEntity'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "403":
          description: Operation not supported for cluster type or organization
        "409":
          description: Identity not configured for cluster
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Adds entities that the cluster's cloud workload identity can assume
      tags:
      - Clusters
      - Delegated Entities
  /v2/clusters/{clusterID}/identity:
    get:
      description: Returns the same cloud workload identity information as the cluster
        group's cloud workload identity endpoint. The cluster inherits the identity
        configuration from its parent cluster group.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CloudWorkloadIdentity'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get the cluster's cloud workload identity information
      tags:
      - Clusters
      - Cloud Workload Identity
  /v2/clusters/{clusterID}/privateConnections:
    get:
      description: Returns private connection information for the specified cluster
        ID, in JSON format.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ClusterPrivateConnection'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets private connection information for a cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}/privateConnections/kai:
    get:
      description: |-
        Returns the information needed to create private connection to SingleStore Kai.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateConnectionKaiInfo'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information to create private connection to SingleStore Kai for
        a cluster
      tags:
      - Private Connections
      - Clusters
  /v2/clusters/{clusterID}/privateConnections/outboundAllowList:
    get:
      description: Returns the account ID which must be allowed for outbound connections.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateConnectionOutboundAllowList'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets the outbound allow list for a cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}/resume:
    post:
      description: |
        Resumes the cluster with the specified cluster ID.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterResume'
        description: Cluster resume parameters
      responses:
        "200":
          content:
            application/json:
              example:
                clusterID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  clusterID:
                    description: The ID of the resumed cluster
                    format: uuid
                    type: string
                required:
                - clusterID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Cluster not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Resumes a cluster
      tags:
      - Clusters
  /v2/clusters/{clusterID}/stage/fs:
    get:
      description: |-
        Returns a list of all files and folders located in the root folder of the Stage attached to the specified cluster.

        For virtual clusters, specify the virtual cluster ID.

        You must specify the `clusterID`.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileObjectMetadata'
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists files and folders in the root folder.
      tags:
      - Stage
  /v2/clusters/{clusterID}/stage/fs/{path}:
    delete:
      description: |
        Deletes the file or folder at the specified path in a Stage.

        For virtual clusters, specify the virtual cluster ID.

        This endpoint supports both URL-encoded and regular URL paths. Here are some examples of valid requests:

        - Delete a folder:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_folder/
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_folder%2F

        - Delete a file:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_file.txt
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_file.txt

        You must specify the `clusterID` and the folder/file path in the API call.

        ## Note: To delete a folder, ensure that the path includes a trailing slash.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - description: Path in the Stage to a file or folder to delete
        examples:
          file:
            value: parent_folder/sample_folder/file.json
          folder:
            value: parent_folder/sample_folder/
        in: path
        name: path
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    description: sample_file.txt
                    type: string
                  path:
                    description: parent_folder/sample_file.txt
                    type: string
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a file or folder
      tags:
      - Stage
    get:
      description: |
        If the specified path is a folder, the API returns the list of files and folders inside this folder in the Stage. If the specified path is a file, the API call is redirected to a download URL.

        For virtual clusters, specify the virtual cluster ID.

        This endpoint supports both URL-encoded and regular URL paths. Here are some examples of valid requests:

        - Get a folder:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_folder/
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_folder%2F

        - Get a file:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_file.txt
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_file.txt

        You must specify the `clusterID` and the folder/file path in the API call.

        ## Note: To get a folder, ensure that the path includes a trailing slash.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - description: Path in the Stage to a file or folder
        examples:
          file:
            value: parent_folder/sample_folder/filename.json
          folder:
            value: parent_folder/sample_folder/
        in: path
        name: path
        required: true
        schema:
          type: string
      - description: If enabled, the API request returns only metadata for the specified
          file instead of downloading it. This parameter is ignored if the specified
          path is a folder.
        in: query
        name: metadata
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileObjectMetadata'
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a folder or downloads a file
      tags:
      - Stage
    patch:
      description: |
        Modifies the path of the existing file or folder in a Stage to the new path specified in the request body.

        For virtual clusters, specify the virtual cluster ID.

        This endpoint supports both URL-encoded and regular URL paths, so both of the following examples are valid requests:

        - Modify a folder:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_folder/
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_folder%2F

        - Modify a file:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_file.txt
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_file.txt

        You must specify the `clusterID` and the folder/file path in the API call.

        ## Note: To modify the path of a folder, ensure that it includes a trailing slash.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - description: Path in the Stage to modify
        examples:
          file:
            value: parent_folder/sample_folder/file.json
          folder:
            value: parent_folder/sample_folder/
        in: path
        name: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            examples:
              file:
                value:
                  newPath: parent_folder/sample_folder/file.json
              folder:
                value:
                  newPath: parent_folder/sample_folder/
            schema:
              properties:
                newPath:
                  description: New path of the file or folder
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    description: sample_file.txt
                    type: string
                  path:
                    description: parent_folder/sample_file.txt
                    type: string
                type: object
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Modifies a file or folder in a Stage
      tags:
      - Stage
    put:
      description: |
        This endpoint allows you to create a new folder or upload a new file at a specified path within Stage. The behavior depends on the contents of the request body and the format of the path:
         - **File Upload:** If the request body contains a file, the file is uploaded to the specified path within the Stage.
         - **Folder Creation:** If the request body does not contain a file and the path ends with a trailing slash (`/`), a new folder is created at the specified path.
         - **Empty File Creation:** If the request body does not contain a file and the path does not end with a trailing slash, an empty file is created at the specified path.

        **Please ensure that the path is correctly formatted according to the desired action. Misformatted paths may lead to unexpected behavior.**

        For virtual clusters, specify the virtual cluster ID.

        This endpoint supports both URL-encoded and regular URL paths. Here are some examples of valid requests:

        - Create a folder:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_folder/
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_folder%2F

        - Upload a file:
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder/sample_folder/file.json
          - /v2/clusters/68af2f46-0000-1000-9000-3f6f5365d878/stage/fs/parent_folder%2Fsample_folder%2Ffile.json

        You must specify the `clusterID` and the folder/file path in the API call.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      - description: Path in the Stage
        examples:
          file:
            value: parent_folder/sample_folder/file.json
          folder:
            value: parent_folder/sample_folder/
        in: path
        name: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                file:
                  description: File to upload
                  format: binary
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    example: file.json
                    type: string
                  path:
                    example: /parent_folder/sample_folder
                    type: string
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new folder or uploads a file
      tags:
      - Stage
  /v2/clusters/{clusterID}/storage/retentionPeriod:
    patch:
      description: |-
        Updates the continuous backup retention period for all existing and future databases on a cluster.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetentionPeriodParams'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates the retention period for continuous backups
      tags:
      - Clusters
  /v2/clusters/{clusterID}/suspend:
    post:
      description: |
        Suspends the cluster with the specified cluster ID.
      parameters:
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            application/json:
              example:
                clusterID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  clusterID:
                    description: The ID of the suspended cluster
                    format: uuid
                    type: string
                required:
                - clusterID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Cluster not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Suspends a cluster
      tags:
      - Clusters
  /v2/files/fs/{location}:
    get:
      description: |-
        Returns a list of all files from personal, shared or models space.

        You must specify the `location`.

        This route is currently not supported by BYOC.
      parameters:
      - description: Location of the files
        in: path
        name: location
        required: true
        schema:
          $ref: '#/components/schemas/FileLocationSchema'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileObjectMetadata'
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all files from personal, shared or models space.
      tags:
      - Files
  /v2/files/fs/{location}/{path}:
    delete:
      description: |
        Deletes the file at the specified path in personal, shared or models space.

        You must specify the `location` and file `path` in the API call.
      parameters:
      - description: Location of the files
        in: path
        name: location
        required: true
        schema:
          $ref: '#/components/schemas/FileLocationSchema'
      - description: Path in personal, shared or models space to a file to delete
        example: filename.ipynb
        in: path
        name: path
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    description: filename.ipynb
                    type: string
                  path:
                    description: /
                    type: string
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a file from personal, shared or models space.
      tags:
      - Files
    get:
      description: |
        Returns the information about a file or redirects to the file download URL.

        You must specify the `location` and the file `path` in the API call.
      parameters:
      - description: Location of the files
        in: path
        name: location
        required: true
        schema:
          $ref: '#/components/schemas/FileLocationSchema'
      - description: Path in personal, shared or models space to a file
        example: filename.ipynb
        in: path
        name: path
        required: true
        schema:
          type: string
      - description: If enabled, the API request returns only metadata for the specified
          file instead of downloading it.
        in: query
        name: metadata
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileObjectMetadata'
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a file or downloads a file from personal, shared
        or models space.
      tags:
      - Files
    patch:
      description: |
        Modifies the path of the existing file in personal, shared or models space to the new path specified in the request body.

        You must specify the `location` and file `path` in the API call.
      parameters:
      - description: Location of the files
        in: path
        name: location
        required: true
        schema:
          $ref: '#/components/schemas/FileLocationSchema'
      - description: Path in personal, shared or models space to modify
        example: filename.ipynb
        in: path
        name: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              newPath: new_filename.ipynb
            schema:
              properties:
                newPath:
                  description: New path of the file
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    description: filename.ipynb
                    type: string
                  path:
                    description: /
                    type: string
                type: object
          description: OK
        "307":
          description: Temporary Redirect
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Modifies a file in personal, shared or models space.
      tags:
      - Files
    put:
      description: |
        This endpoint allows you to create or upload a new file at a specified path within personal, shared or models space. The behavior depends on the contents of the request body and the format of the path:
         - **File Upload:** If the request body contains a file, the file is uploaded to the specified path within personal, shared or models space.

        You must specify the `location` and the file `path` in the API call.
      parameters:
      - description: Location of the files
        in: path
        name: location
        required: true
        schema:
          $ref: '#/components/schemas/FileLocationSchema'
      - description: Path in personal, shared or models space
        example: filename.ipynb
        in: path
        name: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                file:
                  description: File to upload
                  format: binary
                  type: string
              required:
              - file
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  name:
                    example: filename.ipynb
                    type: string
                  path:
                    example: /
                    type: string
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new file or uploads a file to personal, shared or models
        space.
      tags:
      - Files
  /v2/flow:
    description: Manages SingleStore Flow instances (v2 uses cluster terminology)
    get:
      description: |-
        Returns a list of all of the SingleStore Flow instances accessible to the user. Use the `includeTerminated` parameter to get a list of terminated Flow instances. Each instance includes `clusterID` (the cluster the Flow is attached to).

        This route is currently not supported by BYOC.
      parameters:
      - description: To include any terminated Flow instances, set to `true`
        in: query
        name: includeTerminated
        schema:
          type: boolean
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
              - clusterID: 7d6b3a5a-0000-1000-9000-d454af4c785c
                createdAt: "2026-01-18T09:56:56Z"
                flowID: 7d6b3a5a-0000-1000-9000-d454af4c785b
                name: flow-instance-1
              schema:
                items:
                  $ref: '#/components/schemas/FlowV2'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the Flow instances the user can access
      tags:
      - Flow
    post:
      description: |-
        Creates a new SingleStore Flow instance for the current user. Specify the target cluster with `clusterID`.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FlowCreateV2'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                flowID: 7d6b3a5a-0000-1000-9000-d454af4c785b
              schema:
                properties:
                  flowID:
                    format: uuid
                    type: string
                required:
                - flowID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new Flow instance
      tags:
      - Flow
  /v2/flow/{flowID}:
    delete:
      description: |-
        Terminates a SingleStore Flow instance with the specified ID. You must specify the Flow instance ID in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/flowID'
      responses:
        "200":
          content:
            application/json:
              example:
                flowID: 7d6b3a5a-0000-1000-9000-d454af4c785b
              schema:
                properties:
                  flowID:
                    format: uuid
                    type: string
                required:
                - flowID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A Flow instance with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Terminates a Flow instance
      tags:
      - Flow
    get:
      description: |-
        Returns information about the SingleStore Flow instance with the specified ID, in JSON format. You must specify the Flow instance ID in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/flowID'
      responses:
        "200":
          content:
            application/json:
              example:
                clusterID: 7d6b3a5a-0000-1000-9000-d454af4c785c
                createdAt: "2026-01-18T09:56:56Z"
                flowID: 7d6b3a5a-0000-1000-9000-d454af4c785b
                name: flow-instance-1
              schema:
                $ref: '#/components/schemas/FlowV2'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A Flow instance with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a Flow instance
      tags:
      - Flow
  /v2/invitations:
    get:
      description: |-
        Returns a list of open invitations for the current organization.

        This route is currently not supported by BYOC.
      parameters:
      - description: Show only invitations with emails matching this value or regular
          expression.
        in: query
        name: email
        schema:
          type: string
      - description: Show only invitations with state matching this value.
        in: query
        name: state
        schema:
          type: string
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/UserInvitation'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists open invitations for the current organization.
      tags:
      - Invitations
    post:
      description: |-
        Creates and sends an invitation to join the organization to an email address.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserInvitationCreate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserInvitation'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "409":
          description: User is already a member
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Invites a user to the current organization
      tags:
      - Invitations
  /v2/invitations/{invitationID}:
    delete:
      description: |-
        Revokes the specified invitation.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/invitationID'
      responses:
        "200":
          content:
            application/json:
              example:
                invitationID: 03891d70-ea86-403e-8463-113917fd0466
              schema:
                properties:
                  invitationID:
                    format: uuid
                    type: string
                required:
                - invitationID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A invitation with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Revokes an invitation
      tags:
      - Invitations
    get:
      description: |-
        Returns information for the specified invitation.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/invitationID'
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
                createdAt: "2023-09-18T09:56:56Z"
                email: alice@abc.com
                invitationID: c74bb6a6-0000-1000-9000-1d874fa277b1
                message: Welcome to SingleStore@abc.com
                state: Pending
              schema:
                $ref: '#/components/schemas/UserInvitation'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: An invitation with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about an invitation.
      tags:
      - Invitations
  /v2/jobs:
    post:
      description: |-
        This creates a job. A job sets a scheduled execution of a notebook and can cause notebooks to be run on a schedule or one-time only

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobCreateV2'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobV2'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Creates a new job
      tags:
      - Jobs
  /v2/jobs/{jobID}:
    delete:
      description: |-
        This deletes a job and all execution snapshots associated with a job.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/jobID'
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Deletes a job
      tags:
      - Jobs
    get:
      description: |-
        Returns the metadata on target, schedule and notebook for a job specified by a jobid.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/jobID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobV2'
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Gets information about the specified job
      tags:
      - Jobs
  /v2/jobs/{jobID}/executions:
    get:
      description: |-
        Returns the information of the executions of a specified job. Specify which executions you want with the parameters.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/jobID'
      - description: Start execution number.
        example: 1
        in: query
        name: start
        required: true
        schema:
          type: number
      - description: End execution number.
        example: 10
        in: query
        name: end
        required: true
        schema:
          type: number
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionsResult'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Get executions for a job
      tags:
      - Jobs
  /v2/jobs/{jobID}/parameters:
    get:
      description: |-
        Returns the array of the parameters of a specified job.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/jobID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/JobParameter'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Get parameters for a job
      tags:
      - Jobs
  /v2/jobs/runtimes:
    get:
      description: |-
        Returns the list of available runtimes for jobs.

        This route is currently not supported by BYOC.
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RuntimesResult'
                type: array
          description: OK
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Get the list of available job runtimes
      tags:
      - Jobs
  /v2/organizations/{organizationID}/accessControls:
    get:
      description: Return all the roles on the resource type, which include all grants
        of the given resource
      parameters:
      - $ref: '#/components/parameters/organizationID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResourceRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get RBAC access information about the organization
      tags:
      - Organizations
    patch:
      description: Grant or revoke grants on roles of the resource
      parameters:
      - $ref: '#/components/parameters/organizationID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControlAccessAction'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Update the RBAC grants on the organization
      tags:
      - Organizations
  /v2/organizations/{organizationID}/clusters/{clusterID}/metrics:
    get:
      description: Returns metrics for the specified cluster ID, in [OpenMetrics](https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md)
        compatible format. You must specify the organization ID and cluster ID in
        the API call. To fetch the organization id use the /v1/organizations/current
        endpoint.
      parameters:
      - $ref: '#/components/parameters/organizationID'
      - $ref: '#/components/parameters/clusterID'
      responses:
        "200":
          content:
            text/plain:
              example: |-
                # TYPE singlestoredb_cloud_threads_running gauge
                # singlestoredb_cloud_threads_running{extractor="monitoring-customer-prd/memsql-exporter",node="node-3337afc7-443e-4126-b784-413903527186-aggregator-0",role="CA",cluster_group_id="3337afc7-443e-4126-b784-413903527186",cluster_name="singlestore-central"} 1
              schema:
                type: string
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets metrics for a cluster
      tags:
      - Metrics
  /v2/organizations/{organizationID}/workspaceGroups/{workspaceGroupID}/metrics:
    get:
      description: Returns metrics for the specified workspace group ID, in [OpenMetrics](https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md)
        compatible format. You must specify the organization ID and workspace group
        ID in the API call. To fetch the organization id use the /v1/organizations/current
        endpoint.
      parameters:
      - $ref: '#/components/parameters/organizationID'
      - $ref: '#/components/parameters/workspaceGroupID'
      responses:
        "200":
          content:
            text/plain:
              example: |-
                # TYPE singlestoredb_cloud_threads_running gauge
                # singlestoredb_cloud_threads_running{extractor="monitoring-customer-prd/memsql-exporter",node="node-3337afc7-443e-4126-b784-413903527186-aggregator-0",role="CA",workspace_group_id="3337afc7-443e-4126-b784-413903527186",workspace_name="singlestore-central"} 1
              schema:
                type: string
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets metrics for a workspace group
      tags:
      - Metrics
  /v2/organizations/current:
    get:
      description: Returns information about the current authorized user's organization.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about the current organization
      tags:
      - Organizations
  /v2/privateConnections:
    description: The `privateConnections` endpoint can be used to create and manage
      private connections to SingleStore clusters.
    post:
      description: |
        Creates a new private connection for a cluster. Upon successful completion of the request, a private connection is scheduled for creation. To query the private connection status, use the endpoints for the cluster.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateConnectionCreateV2'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                privateConnectionID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  privateConnectionID:
                    format: uuid
                    type: string
                required:
                - privateConnectionID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A cluster with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new private connection
      tags:
      - Private Connections
  /v2/privateConnections/{connectionID}:
    delete:
      description: Deletes a private connection for the specified connection ID. Upon
        successful completion, a private connection is scheduled for deletion.
      parameters:
      - $ref: '#/components/parameters/connectionID'
      responses:
        "200":
          content:
            application/json:
              example:
                privateConnectionID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  privateConnectionID:
                    format: uuid
                    type: string
                required:
                - privateConnectionID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A private connection with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a private connection
      tags:
      - Private Connections
    get:
      description: Returns private connection information for the specified connection
        ID, in JSON format. You must specify the connection ID in the API call.
      parameters:
      - $ref: '#/components/parameters/connectionID'
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterPrivateConnection'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A private connection with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a private connection
      tags:
      - Private Connections
    patch:
      description: Updates a private connection. You must specify the connection ID
        in the API call.
      parameters:
      - $ref: '#/components/parameters/connectionID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateConnectionUpdate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                privateConnectionID: b07fff9f-0000-1000-9000-b1974e06b736
              schema:
                properties:
                  privateConnectionID:
                    format: uuid
                    type: string
                required:
                - privateConnectionID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A private connection with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates a private connection
      tags:
      - Private Connections
  /v2/projects:
    description: The projects endpoint can be used to manage projects.
    get:
      description: |-
        Returns a list of all of the projects accessible to the user.

        This route is currently not supported by BYOC.
      responses:
        "200":
          content:
            application/json:
              example:
              - createdAt: "2025-10-24T09:56:56Z"
                edition: STANDARD
                name: demo-project
                projectID: 70ab4e59-0000-1000-9000-76a5b06ed9e3
              schema:
                items:
                  $ref: '#/components/schemas/Project'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the projects the user can access
      tags:
      - Projects
    post:
      description: |-
        Creates a new project for the current user.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                projectID: 70ab4e59-0000-1000-9000-76a5b06ed9e3
              schema:
                $ref: '#/components/schemas/ProjectIDResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new project
      tags:
      - Projects
  /v2/projects/{projectID}:
    delete:
      description: |-
        Deletes a project with the specified project ID.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/projectID'
      responses:
        "200":
          content:
            application/json:
              example:
                projectID: 70ab4e59-0000-1000-9000-76a5b06ed9e3
              schema:
                $ref: '#/components/schemas/ProjectIDResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A project with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a project
      tags:
      - Projects
    get:
      description: |-
        Returns information for the specified project ID in JSON format.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/projectID'
      responses:
        "200":
          content:
            application/json:
              example:
                createdAt: "2025-10-24T09:56:56Z"
                edition: STANDARD
                name: demo-project
                projectID: 70ab4e59-0000-1000-9000-76a5b06ed9e3
              schema:
                $ref: '#/components/schemas/Project'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A project with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a project
      tags:
      - Projects
    patch:
      description: |-
        Updates the specified project. You can only update its name.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/projectID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                projectID: 70ab4e59-0000-1000-9000-76a5b06ed9e3
              schema:
                $ref: '#/components/schemas/ProjectIDResponse'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A project with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates a project
      tags:
      - Projects
  /v2/recoverableResources:
    get:
      description: |-
        Returns recoverable resources in the current organization.

        This route is currently not supported by BYOC.
      parameters:
      - description: Show only resources of this type.
        in: query
        name: resourceType
        schema:
          type: string
      - description: Show only the resource with this ID.
        in: query
        name: resourceID
        schema:
          format: uuid
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResourceInfo'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists resources available for access recovery
      tags:
      - Authorization
  /v2/regions:
    get:
      description: Returns a list of valid regions for the user, including the region
        code and provider for each region.
      parameters:
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
              - provider: GCP
                region: US West 1 (Oregon)
                regionName: us-west1
              - provider: AWS
                region: Europe Central 1 (Frankfurt)
                regionName: eu-central-1
              - provider: AWS
                region: Asia Pacific Southeast 2 (Sydney)
                regionName: ap-southeast-2
              schema:
                items:
                  $ref: '#/components/schemas/RegionV2'
                type: array
          description: OK
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all of the regions
      tags:
      - Regions
  /v2/regions/sharedtier:
    get:
      description: Returns a list of valid regions that support Shared Edition deployments
        (starter clusters) for the user, including the region code and provider for
        each region.
      parameters:
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
              - provider: GCP
                region: US West 1 (Oregon)
                regionName: us-west1
              - provider: AWS
                region: Europe Central 1 (Frankfurt)
                regionName: eu-central-1
              - provider: AWS
                region: Asia Pacific Southeast 2 (Sydney)
                regionName: ap-southeast-2
              schema:
                items:
                  $ref: '#/components/schemas/RegionV2'
                type: array
          description: OK
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists all the regions that support Shared Edition deployments (starter
        clusters) for the user
      tags:
      - Regions
  /v2/secrets:
    description: The `secrets` endpoint can be used to create and manage secrets.
    get:
      description: |-
        Returns a list of all of the secrets accessible to the user.

        This route is currently not supported by BYOC.
      parameters:
      - description: Name of the secret.
        in: query
        name: name
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Secret'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the secrets the user can access.
      tags:
      - Secrets
    post:
      description: |-
        Creates a new secret, which can be used to store sensitive information such as passwords, API keys, and other credentials. You must specify a name and value for the secret in the API request body.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretCreate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "409":
          description: Secret with specified name already exists
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new secret
      tags:
      - Secrets
  /v2/secrets/{secretID}:
    delete:
      description: |-
        Deletes a secret with the specified ID. You must specify the secret ID in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/secretID'
      responses:
        "200":
          content:
            application/json:
              example:
                secretID: 03891d70-0000-1000-9000-113917fd0355
              schema:
                properties:
                  secretID:
                    format: uuid
                    type: string
                required:
                - secretID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A secret with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a secret
      tags:
      - Secrets
    get:
      description: |-
        Returns information for the specified secret ID, in JSON format. You must specify the secret ID in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/secretID'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A secret with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a secret
      tags:
      - Secrets
    patch:
      description: |-
        Updates the name or value for the specified secret ID. You must specify the secret ID in the API call and at least one parameter (name or value) in the request body.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/secretID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretUpdate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A secret with the specified ID was not found
        "409":
          description: Secret with specified name already exists
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates the name or value of a secret
      tags:
      - Secrets
  /v2/secrets/{secretID}/accessControls:
    get:
      description: Return all the roles on the resource type, which include all grants
        of the given resource
      parameters:
      - $ref: '#/components/parameters/secretID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResourceRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get RBAC access information about the secret
      tags:
      - Secrets
    patch:
      description: Grant or revoke grants on roles of the resource
      parameters:
      - $ref: '#/components/parameters/secretID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControlAccessAction'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Update the RBAC grants on the secret
      tags:
      - Secrets
  /v2/sharedtier/virtualClusters:
    get:
      description: |-
        Returns a list of all Shared Edition deployments (starter clusters) for the current user.

        This route is currently not supported by BYOC.
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SharedTierVirtualCluster'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: List all Shared Edition deployments (starter clusters)
      tags:
      - SharedTier
    post:
      description: |-
        Creates a new Shared Edition deployment (starter cluster) for the current user. You must specify a name, region ID, and firewall range(s) for the starter cluster in the API request body.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedTierCreateVirtualCluster'
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                virtualClusterID: 7d6b3a5a-0000-1000-9000-d454af4c785b
              schema:
                properties:
                  virtualClusterID:
                    format: uuid
                    type: string
                required:
                - virtualClusterID
                type: object
          description: OK
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Creates a new Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
  /v2/sharedtier/virtualClusters/{virtualClusterID}:
    delete:
      description: |-
        Deletes a Shared Edition deployment (starter cluster) for the specified ID. You must specify the ID of the starter cluster in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - in: path
        name: virtualClusterID
        required: true
        schema:
          format: uuid
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Deletes a Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
    get:
      description: |-
        Returns information about a Shared Edition deployment (starter cluster) with the specified ID. You must specify the ID of the starter cluster in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - in: path
        name: virtualClusterID
        required: true
        schema:
          format: uuid
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedTierVirtualCluster'
          description: OK
        "401":
          description: Unauthorized
        "404":
          description: Not found
        "500":
          description: Internal server error
      summary: Returns information about a Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
  /v2/sharedtier/virtualClusters/{virtualClusterID}/users:
    post:
      description: |-
        Creates a new user in a Shared Edition deployment (starter cluster) with the specified ID. You must specify the ID of the starter cluster in the API call. You can specify a password for the user in the request body. If a password is not specified, a password is automatically generated and returned in the API response.

        This route is currently not supported by BYOC.
      parameters:
      - in: path
        name: virtualClusterID
        required: true
        schema:
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedTierCreateUser'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                example:
                  password: Auto-generated-password1!
                  userID: 7d6b3a5a-0000-1000-9000-d454af4c785b
                properties:
                  password:
                    type: string
                  userID:
                    format: uuid
                    type: string
                required:
                - userID
                - password
                type: object
          description: OK
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Creates a new user in a Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
  /v2/sharedtier/virtualClusters/{virtualClusterID}/users/{userID}:
    delete:
      description: |-
        Deletes a user with the specified user ID from a Shared Edition deployment (starter cluster). You must specify the ID of the starter cluster and the user in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - in: path
        name: virtualClusterID
        required: true
        schema:
          format: uuid
          type: string
      - in: path
        name: userID
        required: true
        schema:
          format: uuid
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Deletes a user from a Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
    patch:
      description: |-
        Updates a user in a Shared Edition deployment (starter cluster) with the specified user ID. You must specify the ID of the starter cluster and the user in the API call.

        This route is currently not supported by BYOC.
      parameters:
      - in: path
        name: virtualClusterID
        required: true
        schema:
          format: uuid
          type: string
      - in: path
        name: userID
        required: true
        schema:
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedTierUpdateUser'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: OK
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
      summary: Updates a user in a Shared Edition deployment (starter cluster)
      tags:
      - SharedTier
  /v2/teams:
    description: The `teams` endpoint is used to manage teams.
    get:
      description: |
        Returns a list of teams in the current organization.
      parameters:
      - description: Show only teams with names matching this value or regular expression.
        in: query
        name: name
        schema:
          type: string
      - description: Show only teams with descriptions matching this value or regular
          expression.
        in: query
        name: description
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Team'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the teams defined for the current organization. Teams may be
        filtered by name or description. An empty list is returned if no teams match
        the filter.
      tags:
      - Teams
    post:
      description: Creates a new team. You must specify a name in the API request
        body.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamCreate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "409":
          description: Team with specified name already exists
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Creates a new team
      tags:
      - Teams
  /v2/teams/{teamID}:
    delete:
      description: |
        Deletes the specified team.
      parameters:
      - $ref: '#/components/parameters/teamID'
      responses:
        "200":
          content:
            application/json:
              example:
                teamID: 03891d70-ea86-403e-8463-113917fd0355
              schema:
                properties:
                  teamID:
                    format: uuid
                    type: string
                required:
                - teamID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A team with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Deletes a team
      tags:
      - Teams
    get:
      description: |
        Returns information for the specified team.
      parameters:
      - $ref: '#/components/parameters/teamID'
      responses:
        "200":
          content:
            application/json:
              example:
                createdAt: 2023-09-18T09:56:56Z"
                description: All analysts in the abc.com organization
                name: Analysts
                teamID: c74bb6a6-0000-1000-9000-1d874fa277b0
              schema:
                $ref: '#/components/schemas/Team'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A team with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a team.
      tags:
      - Teams
    patch:
      description: |
        Updates the name, description, and/or members for the specified team.
      parameters:
      - $ref: '#/components/parameters/teamID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamUpdate'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                teamID: 03891d70-ea86-403e-8463-113917fd0355
              schema:
                properties:
                  teamID:
                    format: uuid
                    type: string
                required:
                - teamID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A team with the specified ID was not found
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Updates the name, description, and/or members of a team
      tags:
      - Teams
  /v2/teams/{teamID}/accessControls:
    get:
      description: Return all the roles on the resource type, which include all grants
        of the given resource
      parameters:
      - $ref: '#/components/parameters/teamID'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResourceRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get RBAC access information about the team
      tags:
      - Teams
    patch:
      description: Grant or revoke grants on roles of the resource
      parameters:
      - $ref: '#/components/parameters/teamID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControlAccessAction'
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Update the RBAC grants on the team
      tags:
      - Teams
  /v2/teams/{teamID}/identityRoles:
    get:
      description: Return granted roles to the team
      parameters:
      - $ref: '#/components/parameters/teamID'
      - description: Show only granted roles by resource type
        in: query
        name: resourceType
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IdentityRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get granted roles to the team
      tags:
      - Teams
  /v2/users:
    description: The `users` endpoint is used to manage users.
    get:
      description: |-
        Returns a list of users in the current organization.

        This route is currently not supported by BYOC.
      parameters:
      - description: Show only users with an email address matching this value or
          regular expression.
        in: query
        name: email
        schema:
          type: string
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/User'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Lists the users in the current organization.
      tags:
      - Users
    post:
      description: |-
        Adds a user already known to the portal to the current organization.

        This route is currently not supported by BYOC.
      requestBody:
        content:
          application/json:
            schema:
              properties:
                email:
                  description: The email address of the user to add to the organization.
                  format: email
                  type: string
              required:
              - email
              type: object
        description: Here's a sample of JSON data sent in the request body to the
          API.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: User with the specified email address not found
        "409":
          description: User is already a member
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Adds an existing user to the current organization
      tags:
      - Users
  /v2/users/{userID}:
    delete:
      description: |-
        Removes the specified user from the organization.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/userID'
      responses:
        "200":
          content:
            application/json:
              example:
                userID: 03891d70-ea86-403e-8463-113917fd0466
              schema:
                properties:
                  userID:
                    format: uuid
                    type: string
                required:
                - userID
                type: object
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A user with the specified ID was not found or is not a member
            of the organization
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Removes a user from the organization
      tags:
      - Users
    get:
      description: |-
        Returns information for the specified user.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/userID'
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
                email: alice@abc.com
                firstName: Alice
                lastName: Jones
                userID: c74bb6a6-0000-1000-9000-1d874fa277b1
                userKind: Standard
              schema:
                $ref: '#/components/schemas/User'
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "404":
          description: A user with the specified ID was not found or is not a member
            of the organization
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Gets information about a user.
      tags:
      - Users
  /v2/users/{userID}/identityRoles:
    get:
      description: |-
        Return granted roles to the user.

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/userID'
      - description: Show only granted roles by resource type.
        in: query
        name: resourceType
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IdentityRole'
                type: array
          description: OK
        "400":
          description: Invalid request
        "401":
          description: Unauthorized
        "429":
          description: Too many requests
        "500":
          description: Internal server error
      summary: Get granted roles to the user
      tags:
      - Users
  /v2/users/current:
    get:
      description: |-
        Returns information about the current user (i.e., the user making the API call).

        This route is currently not supported by BYOC.
      parameters:
      - $ref: '#/components/parameters/fields'
      responses:
        "200":
          content:
            application/json:
              example:
                email: alice@abc.com
                firstName: Alice
                lastName: Jones
                userID: c74bb6a6-0000-1000-9000-1d874fa277b1
                userKind: Standard
              schema:
                $ref: '#/components/schemas/User'
          description: OK
      summary: Gets information about the current user
      tags:
      - Users
security:
- ApiKeyAuth: []
servers:
- url: https://api.singlestore.com

