openapi: 3.1.0
info:
  title: Block Model API
  description: |2-

        The Block Model API provides the ability to manage and report on block models in your Evo workspaces. Enable your
        product with Evo connected workflows by integrating with the Seequent Block Model API.
        
        The Block Model API supports a range of sub-blocking options, and both full and partial updates to block models,
        including updates of specified columns and/or sub-volumes. Block models are versioned, and the service supports
        reporting on the material content of current or previous versions, and comparing the content between versions of
        a block model.
        
        For more information on the Block Model API, see [Overview](/docs/guides/blockmodel/), or the API references here.
        
  version: 1.25.0
tags:
  - name: Operations
    description: Operations on block model metadata
  - name: Metadata
    description: Endpoints that retrieve block model metadata
  - name: Versions
    description: Endpoints that retrieve information about versions of a block model
  - name: Column operations
    description: Operations that modify the columns/blocks within a block model
  - name: Jobs
    description: Get information about a job
  - name: Units
    description: Endpoints for describing and managing Units
  - name: Reports
    description: Endpoints for reporting against block models
paths:
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models:
    post:
      tags:
        - Operations
      summary: Create a block model
      description: |-
        This endpoint is where you define the model type, size, origin point, and rotation to register the block model and create the initial version, which will contain the block model default columns:

        - For regular models: `i`, `j`, `k`, `x`, `y`, `z`, `version_id`

        - For fully sub-blocked and octree models: `i`, `j`, `k`, `sidx`, `x`, `y`, `z`, `dx`, `dy`, `dz`, `version_id`

        - For flexible models: `i`, `j`, `k`, `start_si`, `start_sj`, `start_sk`, `end_si`, `end_sj`, `end_sk`, `x`, `y`, `z`, `dx`, `dy`, `dz`, `version_id`

        On a successful request, the server will respond with the details outlined in the `BlockModelAndJobUrl` object. The status of this job can be polled via a GET request to the `job_url`.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: create_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateData'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockModelAndJobURL'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceNotFoundErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NameConflictErrorResponse'
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    get:
      tags:
        - Metadata
      summary: List all block models in a workspace
      description: |-
        Gets a paginated list of all block models in a workspace identified by `workspace_id`. By retrieving this list, you can
        obtain the `bm_id` value for a given model, which can then be used in
        subsequent API requests to upload or download data, along with performing other operations.

        The list is ordered from the most recently updated block model to the least recently updated block model.
        By default, the list is ordered from the most recently updated block model to the least recently updated block model.
        If a `sort` query parameter is specified, the list will be ordered according to the specified field.

        This endpoint is paginated, therefore by default this lists at most the first 50 block models. To get other block
        models, use the `offset` and `limit` query parameters to select the desired part of the list.
        An `offset` beyond the total number of block models in the workspace will result in an empty `results` list.
        The `limit` must be an integer from 1 to 100.
        The response includes `total`, which is the total number of block models within the list.

        All workspace roles can use this endpoint.
      operationId: list_block_models
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: deleted
          in: query
          required: false
          schema:
            type: boolean
            description: |

              An optional boolean parameter specifying whether to list only deleted block models.

              - If set to `true`, the response will only list block models that were deleted via the 'Delete a block model' endpoint. This list will not include block models that are within deleted workspaces.

              - By default, or if set to `false`, the response will only list non-deleted block models within non-deleted workspaces.
            default: false
            title: Deleted
          description: |

            An optional boolean parameter specifying whether to list only deleted block models.

            - If set to `true`, the response will only list block models that were deleted via the 'Delete a block model' endpoint. This list will not include block models that are within deleted workspaces.

            - By default, or if set to `false`, the response will only list non-deleted block models within non-deleted workspaces.
        - name: order_by
          in: query
          required: false
          schema:
            type: string
            description: |

              An optional query parameter specifying how the results should be sorted. If not provided, results are sorted by `last_updated_at` in descending order.

              This is a comma-separated list of fields; allowed field names are `name`, `created_at`, and `last_updated_at`.
              You cannot specify the same field twice.

              By default, results are sorted in ascending order.
              To explicitly specify the sort order for a field, you can prefix its name with `asc:` (ascending) or `desc:` (descending).
              For example, `order_by=desc:created_at` will sort block models by time created in descending order.
            title: Order By
          description: |

            An optional query parameter specifying how the results should be sorted. If not provided, results are sorted by `last_updated_at` in descending order.

            This is a comma-separated list of fields; allowed field names are `name`, `created_at`, and `last_updated_at`.
            You cannot specify the same field twice.

            By default, results are sorted in ascending order.
            To explicitly specify the sort order for a field, you can prefix its name with `asc:` (ascending) or `desc:` (descending).
            For example, `order_by=desc:created_at` will sort block models by time created in descending order.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2147483647
                minimum: 0
              - type: 'null'
            description: Index of the first item to return.
            default: 0
            title: Offset
          description: Index of the first item to return.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                exclusiveMinimum: 0
              - type: 'null'
            description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
            default: 50
            title: Limit
          description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_BlockModel_'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceNotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/blocks:
    post:
      tags:
        - Versions
      summary: Start a block model data query
      description: |-
        Starts a query job against the block model identified by `bm_id`. This will produce a file that
        contains block model data for selected columns, and within the bounding box if provided.

        This request will respond with a reflection of the query criteria, as well as a pollable `job_url`. The `job_url` should
        be polled with a GET request to wait for the `job_status` field of the job to become either `FAILED` or `COMPLETE`. When
        the `job_status` becomes `COMPLETE`, the response will look like this:

        ```
        {
            "job_status": "COMPLETE",
            "payload": {
                "download_url": "<download url>"
            }
        }
        ```

        The `download_url` points to the output file of the query job, and can be downloaded using either a GET request
        or using the Azure SDK. The download URL that is generated every time the completed `job_url` is
        polled has a 30 minute time-to-live (TTL), so the download process must be started within 30 minutes. The download
         itself can take longer than 30 minutes, as long as the connection remains open.

        The downloaded file will either be an Apache Parquet file or a CSV file, depending on the value specified in the
        `file_format` field under `output_options`. The columns included within the file depend on the type of sub-blocking and
        the values specified in the `geometry_columns` and `columns` fields. The `geometry_columns` field determines whether
        the blocks within the output file are primarily identified by their coordinates or by their block indices.

        If `geometry_columns` is set to "indices" (the default), then the first columns in the output file will be `i`, `j`, `k` followed by the sub-block index columns (if applicable).
        If `geometry_columns` is set to "coordinates", then the output file will contain the columns `x`, `y`, `z` for regular block models and `x`, `y`, `z`, `dx`, `dy`, `dz` for sub-blocked block models. These columns are referred to as the "geometry" columns.

        The remaining columns within the output file are determined by the `columns` field. The `columns` field supports
        selecting columns by either their title or ID, and can also include a wildcard (`"*"`) placeholder, which will expand to
        all user columns, ordered alphabetically by title, in a case-insensitive manner. Please note that the wildcard does not
        cover the system column `version_id`. To include `version_id` in the output file, it must also be explicitly specified
        in the `columns` field alongside the wildcard. The order of columns in the output file will match the order in the `columns`
        field. Columns that are part of the initial "geometry" columns will be ignored if specified.

        Examples:
        Given a model has the following user columns: `A`(with a column ID of `d718abe4-56a5-4e27-ad51-813e69eb8aac`), `B`, and
        `C`. The table below shows the output file columns for different model types and parameters:

        | Model Type | `geometry_columns` field | `columns` field | Output File Columns |
        |------------|--------------------------|-----------------|---------------------|
        | Regular           | "indices"         | `["d718abe4-56a5-4e27-ad51-813e69eb8aac", "B"]`        | `i`, `j`, `k`, `A`, `B` |
        | Regular           | "coordinates"     | `[]`                | `x`, `y`, `z` |
        | Fully sub-blocked | "indices"         | `["*"]`             | `i`, `j`, `k`, `sidx`, `A`, `B`, `C` |
        | Flexible          | "coordinates"     | `["*", "start_si"]` | `x`, `y`, `z`, `dx`, `dy`, `dz`, `A`, `B`, `C`, `start_si` |


        The column headers (header row values in CSV files and schema field names in Parquet files) will either be the name of
        the columns or the column ID, depending on the value specified in the `column_headers` field.

        Example: for a fully sub-blocked model with a `columns` field:
        `["col_1", "dx", "x", "z", "d635868c-24ae-4ebe-9358-acb433b3c8cb"]` (where `d635868c-24ae-4ebe-9358-acb433b3c8cb` is the
        column ID of `col_2`) and `column_headers`: `name`, the output file will contain the following columns in order:
        [`i`, `j`, `k`, `sidx`, `col_1`, `dx`, `x`, `z`, `col_2`].

        For CSV files, the delimiter that separate values in the output file can also be configured using the `delimiter`
        field.

        For Parquet files, the output file will have the following characteristics:
        - Row group size of 100,000
        - Compressed using Zstd
        - Parquet data page version set to 1.0 and Parquet version set to 2.6

        This request may be cached, so the `job_url` may point to an already completed job.

        All workspace roles can use this endpoint.
      operationId: query_block_model_latest_as_post
      security:
        - HTTPBearer: []
      parameters:
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCriteria'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResult'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceNotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    patch:
      tags:
        - Column operations
      summary: Start a block model data update
      description: |-
        Starts the workflow to update the latest version of the block model. On workflow success, a new version of the block model will be created that will contain the changes specified in the request.

        When a user wishes to update the blocks of a block model, they need to hit multiple endpoints to complete the workflow. This includes:

        1. An initial request;
        2. An upload of data (for `new` and `update` operations);
        3. And finally, a confirmation that the update job can proceed from the state `PENDING_UPLOAD` to `QUEUED`.

        This endpoint is the initial request, where the server does a sanity check/validation on what the client is attempting to do.

        With regards to the request body,
        - We require the `columns` field to be supplied, which is used to convey which operations the client wishes the service to perform on the block model during the update. The sub-fields of columns (or operations) `new`, `update`, `rename`, `update_metadata`, and `delete` specify the downstream behaviour on the specified columns during the update workflow. Note that `new`, `update`, and `delete` can be provided in concert, whilst `rename` can only be provided by itself. `update_metadata` can be provided along with `new`, `update`, and `delete`, but only when there are no columns being renamed (i.e. when only the unit ID is being updated). Some general rules/mechanics for all of these fields:
            - The reserved system columns [`i`, `j`, `k`, `sidx`, `x`, `y`, `z`, `dx`, `dy`, `dz`, `version_id`] and any other model type specific sub-block index columns, cannot be targeted using any of the update operations.
            - Any list of titles provided cannot contain duplicates.
            - In all cases, unless specifically stated otherwise, columns that are targeted in one operation cannot be targeted in another.
        - There is an optional field `update_type`, which is used to determine which blocks are updated in the block model. The supported update types are `replace` and `merge`.
            - If `update_type` is set to `replace`, the values of the columns provided in the update file are updated for all blocks within the block model. If a block is not provided in the update file, the column values for that block are set to `null`. The columns not provided in the update file are not affected.
            - If `update_type` is set to `merge` (the default), only the blocks and columns that are provided in the update file are updated. The blocks and columns not provided in the update file are not affected.
        - Note that the optional field `geometry_change` can only be provided for sub-blocked models.
            - If `geometry_change` is set to `false`, no new sub-blocks can be created nor destroyed, only sub-blocks that exist in the latest version can be updated.
            - If `geometry_change` is set to `true`, new sub-blocks can be created and/or existing sub-blocks can be destroyed, but all columns must be provided. If `update_type` is set to `merge`, then all sub-blocks within a parent block must be provided.
        - For `new` and `update` operations, the details of the data file for upload can be specified using the optional `input_options` field.

        If the request is successful, the server then sends back a pollable `job_url` and an `upload_url` (if required). The `upload_url` is where the data associated with a `new` or `update` operation should be uploaded to, which can be done with a PUT request. Note that the generated URL contains a SAS token, which is used to authenticate the upload. An upload can be started no later than 30 minutes after the generation of the SAS token.

        With regards to the data file to be uploaded,
        - The file can either be in Parquet or CSV format.
        - The file needs to contain either IJK (block index) or XYZ (centroid coordinate) information for each block/row, along with the data for the columns specified in the request body, using the correct data type.
        - If both IJK and XYZ columns are supplied in the data file, the service will only make use of the IJK information.
        - The file must include the required system columns, which vary depending on the block model type:
            - Regular models: Require `i`, `j`, `k` (block indices) or `x`, `y`, `z` (centroid coordinates).
            - Fully sub-blocked models: Require `i`, `j`, `k`, `sidx` (sub-block index) or `x`, `y`, `z`, `dx`, `dy`, `dz` (sub-block sizes along each axis).
            - Octree models: Requirements are the same as fully sub-blocked models.
            - Flexible models: Require `i`, `j`, `k`, `start_si`, `start_sj`, `start_sk`, `end_si`, `end_sj`, `end_sk` (sub-block grid indices) or `x`, `y`, `z`, `dx`, `dy`, `dz`.
        - Reserved system columns must use the correct data types:
            - Indices `i`, `j`, `k`, and `sidx` must be `UInt32`.
            - Coordinates `x`, `y`, `z`, `dx`, `dy`, and `dz` must be `Float64`.
            - Sub-block grid indices `start_si`, `start_sj`, `start_sk`, `end_si`, `end_sj`, `end_sk` must be `UInt8`.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: update_block_model_from_latest_version
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDataLite-Input'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateWithUrl'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyColumnsErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceNotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/jobs/{job_id}/uploaded:
    post:
      tags:
        - Column operations
      summary: Advise that the update file has finished uploading
      description: |-
        Signals that you have finished uploading the update file to the server blob storage indicated by the `upload_url`, and that the update can continue. This moves the `job_status` from `PENDING_UPLOAD` to `QUEUED`.

        After this endpoint is called, the `job_url` should then be polled with a GET request to wait for the `job_status` field of the job to become either `FAILED` or `COMPLETE`. On workflow success, a new version of the block model will be created that will contain the changes specified in the update request.

        Note that this endpoint still needs to be hit even when an update does not require a file upload.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: notify_upload_complete
      security:
        - HTTPBearer: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Job ID
            description: ID of the job this call is scoped to. Represented as a v4 UUID.
            examples:
              - ff0b8078-c7ec-41ab-87fb-f3eb32812b32
          description: ID of the job this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatedResponse'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceNotFoundErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileConflictErrorResponse'
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/block-models:
    get:
      tags:
        - Metadata
      summary: List all block models in an organization
      description: |-
        Gets a paginated list of all block models across all workspaces that are accessible in the organization identified by
        `org_id`. By retrieving this list, you can obtain the `bm_id` value for a given model, which can then be used in
        subsequent API requests to upload or download data, along with performing other operations.

        By default, the list is ordered from the most recently updated block model to the least recently updated block model.
        If a `sort` query parameter is specified, the list will be ordered according to the specified field.

        This endpoint is paginated, therefore by default this lists at most the first 50 block models. To get other block
        models, use the `offset` and `limit` query parameters to select the desired part of the list.
        An `offset` beyond the total number of block models across all workspaces will result in an empty `results` list.
        The `limit` must be an integer from 1 to 100.
        The response includes `total`, which is the total number of block models within the list.

        All workspace roles can use this endpoint.
      operationId: list_block_models_across_workspaces
      security:
        - HTTPBearer: []
      parameters:
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: deleted
          in: query
          required: false
          schema:
            type: boolean
            description: |

              An optional boolean parameter specifying whether to list only deleted block models.

              - If set to `true`, the response will only list block models that were deleted via the 'Delete a block model' endpoint. This list will not include block models that are within deleted workspaces.

              - By default, or if set to `false`, the response will only list non-deleted block models within non-deleted workspaces.
            default: false
            title: Deleted
          description: |

            An optional boolean parameter specifying whether to list only deleted block models.

            - If set to `true`, the response will only list block models that were deleted via the 'Delete a block model' endpoint. This list will not include block models that are within deleted workspaces.

            - By default, or if set to `false`, the response will only list non-deleted block models within non-deleted workspaces.
        - name: order_by
          in: query
          required: false
          schema:
            type: string
            description: |

              An optional query parameter specifying how the results should be sorted. If not provided, results are sorted by `last_updated_at` in descending order.

              This is a comma-separated list of fields; allowed field names are `name`, `created_at`, and `last_updated_at`.
              You cannot specify the same field twice.

              By default, results are sorted in ascending order.
              To explicitly specify the sort order for a field, you can prefix its name with `asc:` (ascending) or `desc:` (descending).
              For example, `order_by=desc:created_at` will sort block models by time created in descending order.
            title: Order By
          description: |

            An optional query parameter specifying how the results should be sorted. If not provided, results are sorted by `last_updated_at` in descending order.

            This is a comma-separated list of fields; allowed field names are `name`, `created_at`, and `last_updated_at`.
            You cannot specify the same field twice.

            By default, results are sorted in ascending order.
            To explicitly specify the sort order for a field, you can prefix its name with `asc:` (ascending) or `desc:` (descending).
            For example, `order_by=desc:created_at` will sort block models by time created in descending order.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2147483647
                minimum: 0
              - type: 'null'
            description: Index of the first item to return.
            default: 0
            title: Offset
          description: Index of the first item to return.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                exclusiveMinimum: 0
              - type: 'null'
            description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
            default: 50
            title: Limit
          description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_BlockModel_'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}:
    get:
      tags:
        - Metadata
      summary: Get a block model's metadata
      description: |-
        Gets the details of the block model for the given `bm_id`.

        All workspace roles can use this endpoint.
      operationId: retrieve_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: deleted
          in: query
          required: false
          schema:
            type: boolean
            description: |

              An optional boolean parameter. It must be set to `true` when retrieving the block model for the given `bm_id` that has been deleted via the 'Delete a block model' endpoint.
              By default, or if set to `false`, an attempt to access a deleted block model will result in an error.
            default: false
            title: Deleted
          description: |

            An optional boolean parameter. It must be set to `true` when retrieving the block model for the given `bm_id` that has been deleted via the 'Delete a block model' endpoint.
            By default, or if set to `false`, an attempt to access a deleted block model will result in an error.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockModel'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    patch:
      tags:
        - Operations
      summary: Update a block model's metadata
      description: |-
        Updates the block model name, description, and/or size unit ID for the given `bm_id`.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: update_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBlockModel'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockModel'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NameConflictErrorResponse'
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    delete:
      tags:
        - Operations
      summary: Delete a block model
      description: |-
        Deletes the block model identified by `bm_id`.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: delete_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    post:
      tags:
        - Operations
      summary: Restore a block model
      description: |-
        Restores the deleted block model identified by `bm_id` when the `deleted` flag is set to `false`. Note, the `deleted` flag cannot be set to `true`.

        A minimum workspace role of Editor is required to use this endpoint.
      operationId: restore_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: deleted
          in: query
          required: false
          schema:
            type: boolean
            description: |

              A boolean parameter that must be provided and set to `false` when using this endpoint.
              Omitting it or setting it to a different value will result in an error.
            title: Deleted
          description: |

            A boolean parameter that must be provided and set to `false` when using this endpoint.
            Omitting it or setting it to a different value will result in an error.
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockModel'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryParameterErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/versions:
    get:
      tags:
        - Versions
      summary: List version metadata for all versions of a block model
      description: |-
        Gets all versions of the block model `bm_id`.

        The list is ordered from the newest version to the oldest version.

        This endpoint is paginated, therefore by default this lists, at most, the first 50 versions. To get other versions, use
        the `offset` and `limit` query parameters to select the desired part of the list. An `offset` beyond the total number of
        versions for the block model will result in an empty `results` list. The `limit` must be an integer from 1 to 100.
        The response includes `total`, which is the total number of versions within the list.
        All workspace roles can use this endpoint.
      operationId: list_block_model_versions
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: filter
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Optional filter to apply to the results. `latest` will return only the latest version.
            title: Filter
          description: Optional filter to apply to the results. `latest` will return only the latest version.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2147483647
                minimum: 0
              - type: 'null'
            description: Index of the first item to return.
            default: 0
            title: Offset
          description: Index of the first item to return.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                exclusiveMinimum: 0
              - type: 'null'
            description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
            default: 50
            title: Limit
          description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseWithUnits_Version_'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/versions/{version_id}:
    get:
      tags:
        - Versions
      summary: Request version metadata for a specific block model version
      description: |-
        Gets the version of the block model `bm_id` identified by the `version_id` UUID.

        If the `include_changes` query parameter is set to `true`, then the response will include the changes made in the update.
        Returned object will be of type `VersionWithChanges`, this object extends the `Version` object to include the field `changes`.
        The changes field contains the `VersionChanges` object.

        The fields of the `VersionChanges` object are as follows:
        - blocks_uploaded: The number of blocks (rows) present in the update file if one was used for the update, null otherwise.
        - total_blocks: The total number of blocks in the block model. Will remain static for regular models, will change for sub-blocked models when the sub-block count changes due to geometry change updates.
        - update_type: Whether the update that created the Version was of type `merge` or `replace`; field contains null if the update did not update any blocks.
        - columns:
        - columns->new: List of columns (specified by title) created in the update that created the Version. Empty if the update did not create any columns.
        - columns->deleted: List of columns (specified by title) deleted in the update that created the Version. Empty if the update did not delete any columns.
        - columns->updated: List of columns (specified by title) updated in the update that created the Version. Empty if the update did not update any columns.
        - columns->renamed: List of the `ColumnRename` object, denoting which columns were renamed in the update the created the version. Empty if the update did not rename any columns. `ColumnRename` contains the fields: (`old_title`, `new_title`).
        - columns->metadata_updated: List of the `UpdateMetadataLite` object, containing column metadata changes if they were made in the update. This includes the `title` of the column, the new title, and updated unit ID, respective of what was modified in the update. Empty if the update did not update any column metadata.


        All workspace roles can use this endpoint.
      operationId: retrieve_block_model_version
      security:
        - HTTPBearer: []
      parameters:
        - name: version_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Version ID
            description: ID of the version of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
          description: ID of the version of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: include_changes
          in: query
          required: false
          schema:
            type: boolean
            description: Whether or not to include the changes made in the update that created the specified block model version.
            default: false
            title: Include Changes
          description: Whether or not to include the changes made in the update that created the specified block model version.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/Version'
                  - $ref: '#/components/schemas/VersionWithChanges'
                title: Response Retrieve Block Model Version
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/versions/{version_id}/delta:
    post:
      tags:
        - Versions
      summary: Check for deltas
      description: |-
        Checks if there have been any changes to the block model within a given bounding box, between two specified versions.

        Changes are searched for within a range of versions. The first version searched for changes is the version
        after `version_id`. The last version that is searched is the version that is specified by `end_version_id` (inclusive),
        or if `end_version_id` isn't specified, the latest version of the block model.

        This request only checks for updates or deletions for specified columns. The columns are specified as list of `column_id`
        UUIDs or a wildcard (`"*"`), for all columns that exist within the `version_id` version (the starting version). Using
        column titles is not supported on this endpoint.

        For this endpoint, changes that are considered are:
        - Addition of any new columns, regardless of the columns specified in this request
        - Deletions of any of the columns specified
        - Updates to any of the columns specified, within the given bounding box. When block models are updated, a bounding box
        that encloses all updated blocks is computed. Only updates that have a bounding box that intersects with the specified
        bounding box are included.

        Column renames aren't considered as part of this and they do not count as a change.

        If no changes are found, then the response will have a status code of 304, with no content in the response.

        If there are changes found, then the `verbose` flag inside the request body changes the response.
        If `verbose` is false, then the response body will be empty.
        If `verbose` is true, then the response body will contain information about the difference in versions.
        For clarity, if no changes are found, then the `verbose` flag does nothing, as in that case the system will always return
        a 304 with no content.

        All workspace roles can use this endpoint.
      operationId: get_deltas_for_block_model
      security:
        - HTTPBearer: []
      parameters:
        - name: version_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Version ID
            description: ID of the version of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
          description: ID of the version of the block model this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeltaRequestData'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/DeltaResponseData'
                  - type: 'null'
                title: Response Get Deltas For Block Model
        '304':
          description: Not Modified
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/jobs/{job_id}:
    get:
      tags:
        - Jobs
      summary: Request job status/result
      description: |-
        Retrieves a given job.

        A job represents a background activity in the BlockSync compute workers, such as performing a query or updating a
        block model based on an uploaded file. This endpoint indicates the job's status, and once it has completed or failed,
        details about the result are provided in a `payload` property.

        All workspace roles can use this endpoint.
      operationId: get_job_status
      security:
        - HTTPBearer: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Job ID
            description: ID of the job this call is scoped to. Represented as a v4 UUID.
            examples:
              - ff0b8078-c7ec-41ab-87fb-f3eb32812b32
          description: ID of the job this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/units:
    get:
      tags:
        - Units
      summary: Request a list of units
      description: Get the list of available units
      operationId: get_units
      security:
        - HTTPBearer: []
      parameters:
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Unit'
                title: Response Get Units
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications:
    get:
      tags:
        - Reports
      summary: List Report Specifications for a block model
      description: |-
        Gets all Report Specifications for the block model `bm_id`.

        The list is ordered alphabetically in ascending order.

        This endpoint is paginated, therefore by default this lists, at most, the first 50 items. To get other items, use
        the `offset` and `limit` query parameters to select the desired part of the list.
        An `offset` beyond the total number of Report Specifications for the block model will result in an empty `results` list.
        The `limit` must be an integer from 1 to 100.
        The response includes `total`, which is the total number of items within the list.

        All workspace roles can use this endpoint.
      operationId: list_block_model_report_specifications
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2147483647
                minimum: 0
              - type: 'null'
            description: Index of the first item to return.
            default: 0
            title: Offset
          description: Index of the first item to return.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                exclusiveMinimum: 0
              - type: 'null'
            description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
            default: 50
            title: Limit
          description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseWithUnits_ReportSpecificationWithLastRunInfo_'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    post:
      tags:
        - Reports
      summary: Create a Report Specification
      description: |-
        Create a new Report Specification for the block model.

        The Report Specification defines the columns and categories that will be used to generate reports for the block model.
        The cut-off columns are used to determine whether a block is included in the report. A list of values can be provided in `cut_off_values`,
        each of which will be calculated as a sub-report.

        To calculate column totals, density information is derived from either the block model data in the column indicated by
        `density_col_id`, or if `density_col_id` is unset or contains null values, the `density_value` is used.
      operationId: create_report_specification
      security:
        - HTTPBearer: []
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: run_now
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to trigger a Reporting Job immediately after the creation of the Report Specification
            default: false
            title: Run Now
          description: Whether to trigger a Reporting Job immediately after the creation of the Report Specification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReportSpecification'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportSpecificationWithJobUrl'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NameConflictErrorResponse'
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColumnNotFoundErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications/{rs_id}:
    get:
      tags:
        - Reports
      summary: Get a Report Specification
      description: Get an individual Report Specification
      operationId: get_report_specification
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportSpecificationWithLastRunInfo'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    patch:
      tags:
        - Reports
      summary: Update a Report Specification
      description: |-
        Update a Report Specification for the block model.

        Changes to any properties other than `name`, `description`, and `autorun` will incrememnt the `revision` number on the Report
        Specification, as results based on older revisions may no longer be comparable.
      operationId: update_report_specification
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: run_now
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to trigger a Reporting Job immediately after the update of the Report Specification
            default: false
            title: Run Now
          description: Whether to trigger a Reporting Job immediately after the update of the Report Specification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReportSpecification'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportSpecificationWithJobUrl'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NameConflictErrorResponse'
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColumnNotFoundErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications/{rs_id}/results/{report_result_uuid}:
    get:
      tags:
        - Reports
      summary: 'Get a Report Result '
      description: Get a Report Result
      operationId: get_report_result
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: report_result_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Result UUID
            description: ID of the Report Result that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Result that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResult'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications/{rs_id}/results:
    get:
      tags:
        - Reports
      summary: List Report Results for a Report Specification
      description: |-
        Gets all Report Results for a Report Specification identified by `rs_id`.
        The list is ordered from the most recently created to the least recently created Report Result.

        This endpoint is paginated, therefore by default this lists, at most, the first 50 items. To get other items, use
        the `offset` and `limit` query parameters to select the desired part of the list.
        An `offset` beyond the total number of Report Results for the Report Specification will result in an empty `results` list.
        The `limit` must be an integer from 1 to 100.
        The response includes `total`, which is the total number of items within the list.

        All workspace roles can use this endpoint.
      operationId: get_report_results_list
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2147483647
                minimum: 0
              - type: 'null'
            description: Index of the first item to return.
            default: 0
            title: Offset
          description: Index of the first item to return.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                exclusiveMinimum: 0
              - type: 'null'
            description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
            default: 50
            title: Limit
          description: Maximum number of items to return from the list. Must be greater than 0 and less than or equal to 100.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ReportResultSummary_'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications/{rs_id}/jobs:
    post:
      tags:
        - Reports
      summary: Run a Reporting Job
      description: |-
        Run a new Reporting Job.

        The Reporting Job will generate a Report Result for the provided block model version using the latest revision of the Report Specification.
      operationId: run_reporting_job
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportingJobSpec'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportingJobResult'
          description: OK
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportingJobResult'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColumnNotFoundErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
  /blockmodel/orgs/{org_id}/workspaces/{workspace_id}/block-models/{bm_id}/report-specifications/{rs_id}/comparisons:
    get:
      tags:
        - Reports
      summary: Get a comparison between two Report Results
      description: Get a comparison of two Report Results for a Report Specification
      operationId: get_report_result_comparison
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
        - name: from
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Base Report Result UUID to compare
            title: From
          description: Base Report Result UUID to compare
        - name: to
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Report Result UUID to compare to
            title: To
          description: Report Result UUID to compare to
        - name: decimal_places
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 10
                minimum: 0
              - type: 'null'
            description: Number of decimal places to use for comparison (between 0 and 10 inclusive)
            title: Decimal Places
          description: Number of decimal places to use for comparison (between 0 and 10 inclusive)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportComparison'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
    post:
      tags:
        - Reports
      summary: Run a Report Comparison Job
      description: |-
        Request a Report Comparison between two versions.

        This will either create a new comparison job, or return Report Result IDs for existing report results if both are already available.
      operationId: request_report_comparison
      security:
        - HTTPBearer: []
      parameters:
        - name: rs_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Report Specification ID
            description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
            examples:
              - e478e8de-f6ba-4920-8c6e-0882e90f00e2
          description: ID of the Report Specification that this call is scoped to. Represented as a v4 UUID.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Workspace ID
            description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
            examples:
              - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
          description: ID of the workspace this call is scoped to. Represented as a v4 UUID.
        - name: org_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Organization ID
            description: ID of the organization this call is scoped to. Represented as a v4 UUID.
            examples:
              - bf1a040c-8c58-4bc2-bec2-c5ae7de8bd84
          description: ID of the organization this call is scoped to. Represented as a v4 UUID.
        - name: bm_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Block model ID
            description: ID of the block model this call is scoped to. Represented as a v4 UUID.
            examples:
              - e3c277c2-edc6-4a7a-8380-251dd19231f2
          description: ID of the block model this call is scoped to. Represented as a v4 UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportComparisonSpec'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportComparisonRequestResult'
          description: OK
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportComparisonRequestResult'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceGoneErrorResponse'
          description: Gone
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColumnNotFoundErrorResponse'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
          description: Internal Server Error
components:
  schemas:
    AllInputOptions-Input:
      anyOf:
        - $ref: '#/components/schemas/InputOptionsParquet'
        - $ref: '#/components/schemas/InputOptionsCSV'
    AllInputOptions-Output:
      anyOf:
        - $ref: '#/components/schemas/InputOptionsParquet'
        - $ref: '#/components/schemas/InputOptionsCSV'
    AuthenticationErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Invalid authentication credentials
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 401
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Invalid authentication credentials
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/auth/unauthorized
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: AuthenticationErrorResponse
    AuthorizationErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Permission denied
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 403
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Permission Denied
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/auth/forbidden
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: AuthorizationErrorResponse
    BBox:
      properties:
        i_minmax:
          $ref: '#/components/schemas/IntRange'
          description: Minimum and maximum values for the `i` column in the file
        j_minmax:
          $ref: '#/components/schemas/IntRange'
          description: Minimum and maximum values for the `j` column in the file
        k_minmax:
          $ref: '#/components/schemas/IntRange'
          description: Minimum and maximum values for the `k` column in the file
      additionalProperties: false
      type: object
      required:
        - i_minmax
        - j_minmax
        - k_minmax
      title: BBox
    BBoxXYZ:
      properties:
        x_minmax:
          $ref: '#/components/schemas/FloatRange'
          description: Minimum and maximum values for the `x` column in the file
        y_minmax:
          $ref: '#/components/schemas/FloatRange'
          description: Minimum and maximum values for the `y` column in the file
        z_minmax:
          $ref: '#/components/schemas/FloatRange'
          description: Minimum and maximum values for the `z` column in the file
      additionalProperties: false
      type: object
      required:
        - x_minmax
        - y_minmax
        - z_minmax
      title: BBoxXYZ
    BlockModel:
      properties:
        bbox:
          $ref: '#/components/schemas/BBoxXYZ'
          description: |

            Axis-aligned bounding box of the block model.

            This is the smallest box that fully contains all blocks within the block model, regardless of whether they contain data.
            It is defined by the minimum and maximum coordinates along each axis.
          readOnly: true
        block_rotation:
          items:
            $ref: '#/components/schemas/Rotation'
          type: array
          title: Block Rotation
          description: |

            The rotation of the block model. Defined by a list of clockwise rotations around given axes.

            The combined equation for the rotation is given by:

                R_1 ... R_n A = B

            where `A` is the location in the IJK space, `B` is the location in coordinate space, and `R_i` is the rotation matrix for the `i`th rotation.

            For example, if the first rotation is a rotation of 15 degrees clockwise around the X axis, `R_1` would be `[[1, 0, 0], [0, cos(15), sin(15)], [0, -sin(15), cos(15)]]`.

            Two rotations around the same axis cannot be consecutive items within the list of rotations.
        bm_uuid:
          type: string
          format: uuid
          title: Block model ID
          description: ID of the block model
        coordinate_reference_system:
          anyOf:
            - type: string
            - type: 'null'
          title: Coordinate Reference System
          description: |

            Coordinate reference system used in the block model.

            This may be an EPSG code, signified by the prefix 'EPSG:', or a coordinate system definition in WKT format.
            If an EPSG code is provided, it must be for a coordinate reference system with a length unit type (e.g. `metre`, or `foot`).
          examples:
            - EPSG:3395
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Block model creation time
        created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who created the block model
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: User-supplied description of the block model
        geoscience_object_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Geoscience Object Id
          description: UUID of the Geoscience Object Service object associated with the block model
          examples:
            - f1230d69-c779-4736-9eb6-f82d49aafa9a
        last_updated_at:
          type: string
          format: date-time
          title: Last Updated At
          description: Date and time of the last block model update, including metadata updates
        last_updated_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who last updated the block model, including metadata updates
        model_origin:
          $ref: '#/components/schemas/Location'
          description: Origin of the block model
        name:
          type: string
          title: Name
          description: The human-readable label used to identify the block model
        normalized_rotation:
          prefixItems:
            - type: number
            - type: number
            - type: number
          type: array
          maxItems: 3
          minItems: 3
          title: Normalized Rotation
          description: Normalised rotation of the block model, represented as intrinsic rotations around the Z axis, then X axis, then Z axis.
        org_uuid:
          type: string
          format: uuid
          title: Organisation ID
          description: Organisation the block model belongs to.
          examples:
            - e6230d69-c779-4736-9eb6-f82d49aafa06
        size_options:
          oneOf:
            - $ref: '#/components/schemas/SizeOptionsRegular'
            - $ref: '#/components/schemas/SizeOptionsOctree'
            - $ref: '#/components/schemas/SizeOptionsFullySubBlocked'
            - $ref: '#/components/schemas/SizeOptionsFlexible'
          title: Size Options
          description: Size of the block model
          discriminator:
            propertyName: model_type
            mapping:
              flexible: '#/components/schemas/SizeOptionsFlexible'
              fully-sub-blocked: '#/components/schemas/SizeOptionsFullySubBlocked'
              regular: '#/components/schemas/SizeOptionsRegular'
              variable-octree: '#/components/schemas/SizeOptionsOctree'
        size_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Size Unit Id
          description: Unit ID denoting the length unit used for the block model's blocks.
        workspace_id:
          type: string
          format: uuid
          title: Workspace ID
          description: Workspace the block model belongs to.
          examples:
            - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
      additionalProperties: false
      type: object
      required:
        - bbox
        - block_rotation
        - bm_uuid
        - created_at
        - created_by
        - last_updated_at
        - last_updated_by
        - model_origin
        - name
        - normalized_rotation
        - org_uuid
        - size_options
        - workspace_id
      title: BlockModel
    BlockModelAndJobURL:
      properties:
        bbox:
          $ref: '#/components/schemas/BBoxXYZ'
          description: |

            Axis-aligned bounding box of the block model.

            This is the smallest box that fully contains all blocks within the block model, regardless of whether they contain data.
            It is defined by the minimum and maximum coordinates along each axis.
          readOnly: true
        block_rotation:
          items:
            $ref: '#/components/schemas/Rotation'
          type: array
          title: Block Rotation
          description: |

            The rotation of the block model. Defined by a list of clockwise rotations around given axes.

            The combined equation for the rotation is given by:

                R_1 ... R_n A = B

            where `A` is the location in the IJK space, `B` is the location in coordinate space, and `R_i` is the rotation matrix for the `i`th rotation.

            For example, if the first rotation is a rotation of 15 degrees clockwise around the X axis, `R_1` would be `[[1, 0, 0], [0, cos(15), sin(15)], [0, -sin(15), cos(15)]]`.

            Two rotations around the same axis cannot be consecutive items within the list of rotations.
        bm_uuid:
          type: string
          format: uuid
          title: Block model ID
          description: ID of the block model
        coordinate_reference_system:
          anyOf:
            - type: string
            - type: 'null'
          title: Coordinate Reference System
          description: |

            Coordinate reference system used in the block model.

            This may be an EPSG code, signified by the prefix 'EPSG:', or a coordinate system definition in WKT format.
            If an EPSG code is provided, it must be for a coordinate reference system with a length unit type (e.g. `metre`, or `foot`).
          examples:
            - EPSG:3395
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Block model creation time
        created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who created the block model
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: User-supplied description of the block model
        geoscience_object_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Geoscience Object Id
          description: UUID of the Geoscience Object Service object associated with the block model
          examples:
            - f1230d69-c779-4736-9eb6-f82d49aafa9a
        job_url:
          type: string
          minLength: 1
          format: uri
          title: Job Url
        last_updated_at:
          type: string
          format: date-time
          title: Last Updated At
          description: Date and time of the last block model update, including metadata updates
        last_updated_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who last updated the block model, including metadata updates
        model_origin:
          $ref: '#/components/schemas/Location'
          description: Origin of the block model
        name:
          type: string
          title: Name
          description: The human-readable label used to identify the block model
        normalized_rotation:
          prefixItems:
            - type: number
            - type: number
            - type: number
          type: array
          maxItems: 3
          minItems: 3
          title: Normalized Rotation
          description: Normalised rotation of the block model, represented as intrinsic rotations around the Z axis, then X axis, then Z axis.
        org_uuid:
          type: string
          format: uuid
          title: Organisation ID
          description: Organisation the block model belongs to.
          examples:
            - e6230d69-c779-4736-9eb6-f82d49aafa06
        size_options:
          oneOf:
            - $ref: '#/components/schemas/SizeOptionsRegular'
            - $ref: '#/components/schemas/SizeOptionsOctree'
            - $ref: '#/components/schemas/SizeOptionsFullySubBlocked'
            - $ref: '#/components/schemas/SizeOptionsFlexible'
          title: Size Options
          description: Size of the block model
          discriminator:
            propertyName: model_type
            mapping:
              flexible: '#/components/schemas/SizeOptionsFlexible'
              fully-sub-blocked: '#/components/schemas/SizeOptionsFullySubBlocked'
              regular: '#/components/schemas/SizeOptionsRegular'
              variable-octree: '#/components/schemas/SizeOptionsOctree'
        size_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Size Unit Id
          description: Unit ID denoting the length unit used for the block model's blocks.
        workspace_id:
          type: string
          format: uuid
          title: Workspace ID
          description: Workspace the block model belongs to.
          examples:
            - 860be2f5-fe06-4c1b-ac8b-7d34d2b6d2ef
      additionalProperties: false
      type: object
      required:
        - bbox
        - block_rotation
        - bm_uuid
        - created_at
        - created_by
        - job_url
        - last_updated_at
        - last_updated_by
        - model_origin
        - name
        - normalized_rotation
        - org_uuid
        - size_options
        - workspace_id
      title: BlockModelAndJobURL
    BlockSize:
      properties:
        x:
          type: number
          exclusiveMaximum: 1000000
          exclusiveMinimum: 0
          title: X
        'y':
          type: number
          exclusiveMaximum: 1000000
          exclusiveMinimum: 0
          title: 'Y'
        z:
          type: number
          exclusiveMaximum: 1000000
          exclusiveMinimum: 0
          title: Z
      additionalProperties: false
      type: object
      required:
        - x
        - 'y'
        - z
      title: BlockSize
    Column:
      properties:
        col_id:
          type: string
          title: Col Id
          description: The ID of the column, a UUID for non-system columns
          examples:
            - 618d6339-2fa7-4dfd-9c7f-c0b12016639e
        data_type:
          $ref: '#/components/schemas/DataType'
        title:
          type: string
          title: Title
          description: The human-readable label used to identify the column
        unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Unit Id
          description: The ID of the column's unit
      additionalProperties: false
      type: object
      required:
        - col_id
        - data_type
        - title
      title: Column
    ColumnHeaderType:
      type: string
      enum:
        - id
        - name
      title: ColumnHeaderType
    ColumnLite:
      properties:
        data_type:
          $ref: '#/components/schemas/DataType'
        title:
          type: string
          title: Title
          description: The human-readable label used to identify the column
        unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Unit Id
          description: The ID of the column's unit
      additionalProperties: false
      type: object
      required:
        - data_type
        - title
      title: ColumnLite
    ColumnNameMapping:
      properties:
        csv_name:
          type: string
          minLength: 1
          title: CSV Name
        new_title:
          type: string
          minLength: 1
          title: New Title
      additionalProperties: false
      type: object
      required:
        - csv_name
        - new_title
      title: ColumnNameMapping
    ColumnNameMappingGeneric:
      properties:
        column_title:
          type: string
          minLength: 1
          title: Title of column in BlockSync
        file_column_name:
          type: string
          minLength: 1
          title: Name of column in file
      additionalProperties: false
      type: object
      required:
        - column_title
        - file_column_name
      title: ColumnNameMappingGeneric
    ColumnNotFoundErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Column id '11111111-2222-3333-4444-555555555555' does not match any column
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 422
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Column Not Found
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/column-not-found
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: ColumnNotFoundErrorResponse
    ColumnRename:
      properties:
        new_title:
          type: string
          title: New Title
        old_title:
          type: string
          title: Old Title
      additionalProperties: false
      type: object
      required:
        - new_title
        - old_title
      title: ColumnRename
    CreateData:
      properties:
        block_rotation:
          items:
            $ref: '#/components/schemas/Rotation'
          type: array
          maxItems: 3
          title: Block Rotation
          description: |

            The rotation of the block model. Defined by a list of clockwise rotations around given axes.

            The combined equation for the rotation is given by:

                R_1 ... R_n A = B

            where `A` is the location in the IJK space, `B` is the location in coordinate space, and `R_i` is the rotation matrix for the `i`th rotation.

            For example, if the first rotation is a rotation of 15 degrees clockwise around the X axis, `R_1` would be `[[1, 0, 0], [0, cos(15), sin(15)], [0, -sin(15), cos(15)]]`.

            Two rotations around the same axis cannot be consecutive items within the list of rotations.
        comment:
          anyOf:
            - type: string
              maxLength: 250
            - type: 'null'
          title: Comment
        coordinate_reference_system:
          anyOf:
            - type: string
              maxLength: 10000
            - type: 'null'
          title: Coordinate Reference System
          description: |

            Coordinate reference system used in the block model.

            This may be an EPSG code, signified by the prefix 'EPSG:', or a coordinate system definition in WKT format.
            If an EPSG code is provided, it must be for a coordinate reference system with a length unit type (e.g. `metre`, or `foot`).
          examples:
            - EPSG:3395
        description:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Description
          description: Description of the block model
        lineage:
          anyOf:
            - $ref: '#/components/schemas/Lineage_V1_0_0-Input'
            - type: 'null'
          description: Lineage of the block model
          x-api-preview: true
        model_origin:
          $ref: '#/components/schemas/Location'
        name:
          type: string
          maxLength: 100
          minLength: 3
          title: Name
          description: Name of the block model. This may not contain `/` nor `\`. Leading and trailing whitespace will be automatically removed.
        object_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Object Path
          description: |

            Path of the folder in Geoscience Object Service to create the reference object in.

            This may not contain relative elements like `.` or `..`. It may not contain double slashes `//`, nor backslashes `\`,
            nor elements ending in `.`.
          examples:
            - /path/to/folder
        size_options:
          oneOf:
            - $ref: '#/components/schemas/SizeOptionsRegular'
            - $ref: '#/components/schemas/SizeOptionsOctree'
            - $ref: '#/components/schemas/SizeOptionsFullySubBlocked'
            - $ref: '#/components/schemas/SizeOptionsFlexible'
          title: Size Options
          discriminator:
            propertyName: model_type
            mapping:
              flexible: '#/components/schemas/SizeOptionsFlexible'
              fully-sub-blocked: '#/components/schemas/SizeOptionsFullySubBlocked'
              regular: '#/components/schemas/SizeOptionsRegular'
              variable-octree: '#/components/schemas/SizeOptionsOctree'
        size_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Size Unit Id
          description: Unit ID denoting the length unit used for the block model's blocks.
          examples:
            - m
      additionalProperties: false
      type: object
      required:
        - block_rotation
        - model_origin
        - name
        - size_options
      title: CreateData
    CreateReportSpecification:
      properties:
        autorun:
          type: boolean
          title: Autorun
          description: Whether to automatically run this Report Specification when a new version is published
          default: true
        bbox:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/BBox'
                - $ref: '#/components/schemas/BBoxXYZ'
            - type: 'null'
          title: Bbox
          description: Bounding box for the report
          examples:
            - i_minmax:
                max: 1
                min: 0
              j_minmax:
                max: 1
                min: 0
              k_minmax:
                max: 1
                min: 0
        categories:
          anyOf:
            - items:
                $ref: '#/components/schemas/ReportCategory'
              type: array
              maxItems: 1
              minItems: 0
            - type: 'null'
          title: Categories
          description: Category columns within this Report Specification. If null or empty, the report will have a single total row for each cut-off.
          examples:
            - - col_id: 11c277c2-edc6-4a7a-8380-251dd19231f2
                label: Grade
                values:
                  - low
                  - medium
                  - high
        columns:
          items:
            $ref: '#/components/schemas/ReportColumn'
          type: array
          title: Columns
          description: Columns within this Report Specification
          examples:
            - - aggregation: SUM
                col_id: abc277c2-edc6-4a7a-8380-251dd19231f2
                label: Au content
                output_unit_id: kg
        cutoff_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Cutoff Col Id
          description: ID of the column to use for cut-off evaluation
          examples:
            - 13c277c2-edc6-4a7a-8380-251dd19231f2
        cutoff_values:
          anyOf:
            - items:
                type: number
              type: array
              maxItems: 20
              minItems: 1
            - type: 'null'
          title: Cutoff Values
          description: Values to use for cut-off evaluation
          examples:
            - - 0.5
              - 1.5
              - 5
        density_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Density Col Id
          description: ID of the column to use for block density
          examples:
            - 24c277c2-edc6-4a7a-8380-251dd19231f2
        density_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Density Unit Id
          description: ID of the unit to use for block density. The unit must be of type `MASS_PER_VOLUME`.
          examples:
            - kg/m3
        density_value:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Density Value
          description: Value to use for block density
          examples:
            - 2.5
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: User-supplied description of the report
          examples:
            - Gold resource report for test purposes
        mass_unit_id:
          type: string
          title: Mass Unit Id
          description: ID of the unit to use for total mass. The unit must be of type `MASS`
          examples:
            - t
        name:
          type: string
          maxLength: 120
          title: Name
          description: The human-readable label used to identify the report
        negative_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNegativeValuesPolicy'
            - type: 'null'
          description: Policy for handling negative values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - USE
        null_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNullValuesPolicy'
            - type: 'null'
          description: Policy for handling null values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - ZERO
      additionalProperties: false
      type: object
      required:
        - columns
        - mass_unit_id
        - name
      title: CreateReportSpecification
    DataType:
      type: string
      enum:
        - Boolean
        - Int8
        - Int16
        - Int32
        - Int64
        - UInt8
        - UInt16
        - UInt32
        - UInt64
        - Float16
        - Float32
        - Float64
        - Utf8
        - Date32
        - Timestamp
      title: DataType
      description: |2-
           Capitalized list of supported PyArrow datatypes outlined in
           [https://arrow.apache.org/docs/python/api/datatypes.html](https://arrow.apache.org/docs/python/api/datatypes.html).
           
        Timestamp datatype is expected to be used with unit measured in "us" and timezone set to "UTC" inside of parquet
            column header schema or it won't be accepted; an example for PyArrow binding would look like this:
            pa.timestamp("us", tz="UTC")
           
    DeltaRequestData:
      properties:
        bbox:
          oneOf:
            - $ref: '#/components/schemas/BBox'
            - $ref: '#/components/schemas/BBoxXYZ'
          title: Bbox
          description: Bounding box within which changes are searched for.
        columns:
          items:
            type: string
          type: array
          title: Columns
          description: List of column IDs to consider when checking for column updates or deletions. Also accepts `['*']`, which will consider all columns.
          examples:
            - - '*'
        end_version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: End Version Uuid
          description: Last version to search for changes in. Any versions newer than this are not searched for changes. If not supplied, changes are searched for within all version beyond the start version, up to and including the latest version of the block model.
        verbose:
          type: boolean
          title: Verbose
          description: If there are changes, whether to return details about such changes or not.
          default: false
      additionalProperties: false
      type: object
      required:
        - bbox
        - columns
      title: DeltaRequestData
    DeltaResponseData:
      properties:
        delete_deltas:
          items:
            type: string
            format: uuid
          type: array
          title: Delete Deltas
          description: List of versions that deleted specified columns
        new_deltas:
          items:
            type: string
            format: uuid
          type: array
          title: New Deltas
          description: List of versions that added new columns
        update_deltas:
          items:
            type: string
            format: uuid
          type: array
          title: Update Deltas
          description: List of versions that contain updates within the specified bounding box, to the specified columns
        version_data:
          items:
            $ref: '#/components/schemas/DeltaVersionData'
          type: array
          title: Version Data
          description: Details about the changes per version
      additionalProperties: false
      type: object
      required:
        - delete_deltas
        - new_deltas
        - update_deltas
        - version_data
      title: DeltaResponseData
      description: Details about changes that occurred between two versions, within the specified bounding box.
    DeltaVersionData:
      properties:
        bbox:
          anyOf:
            - $ref: '#/components/schemas/BBox'
            - type: 'null'
          description: Bounding box of the search area as integer indexes
        mapping:
          $ref: '#/components/schemas/Mapping'
          description: List of internal column names to be included into the result
        update_columns:
          $ref: '#/components/schemas/UpdateColumns'
          description: Columns added, updated, or deleted in this version
        version_id:
          type: integer
          title: Version Id
          description: |-
            Identifier for the version within a block model as a monotonically increasing integer, where 1 is
            the `version_id` for the version created upon creation of the block model.
          examples:
            - 5
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
          description: A universally unique identifier for the version
          examples:
            - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
      additionalProperties: false
      type: object
      required:
        - mapping
        - update_columns
        - version_id
        - version_uuid
      title: DeltaVersionData
    FileConflictErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - A file has already been uploaded for this update.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 409
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - File Conflict
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/file-conflict
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: FileConflictErrorResponse
    FloatRange:
      properties:
        max:
          type: number
          title: Max
          description: Maximum value for the column
        min:
          type: number
          title: Min
          description: Minimum value for the column
      additionalProperties: false
      type: object
      required:
        - max
        - min
      title: FloatRange
    GeometryColumns:
      type: string
      enum:
        - indices
        - coordinates
      title: GeometryColumns
    GoneErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Block model 11111111-2222-3333-4444-555555555555 has been deleted.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 410
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Resource Gone
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/gone
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: GoneErrorResponse
    InputOptionsCSV:
      properties:
        column_name_mapping:
          anyOf:
            - items:
                $ref: '#/components/schemas/ColumnNameMapping'
              type: array
            - items:
                $ref: '#/components/schemas/ColumnNameMappingGeneric'
              type: array
            - type: 'null'
          title: Column Name Mapping
          default: []
        decimal_char:
          anyOf:
            - type: string
              maxLength: 1
              minLength: 1
            - type: 'null'
          title: Decimal Char
          default: .
        delimiter:
          anyOf:
            - type: string
              maxLength: 1
              minLength: 1
            - type: 'null'
          title: Delimiter
          default: ','
        file_format:
          type: string
          const: csv
          title: File Format
          default: csv
        quote_char:
          anyOf:
            - type: string
              maxLength: 1
              minLength: 1
            - type: 'null'
          title: Quote Char
          default: '"'
        skip_rows:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Skip Rows
          default: 0
        skip_rows_after_headers:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Skip Rows After Headers
          default: 0
      additionalProperties: false
      type: object
      title: InputOptionsCSV
    InputOptionsParquet:
      properties:
        column_name_mapping:
          anyOf:
            - items:
                $ref: '#/components/schemas/ColumnNameMappingGeneric'
              type: array
            - type: 'null'
          title: Column Name Mapping
          default: []
        file_format:
          type: string
          const: parquet
          title: File Format
          default: parquet
      additionalProperties: false
      type: object
      title: InputOptionsParquet
    IntRange:
      properties:
        max:
          type: integer
          title: Max
          description: Maximum value for the column
        min:
          type: integer
          title: Min
          description: Minimum value for the column
      additionalProperties: false
      type: object
      required:
        - max
        - min
      title: IntRange
      description: Represents a range of whole numbers from min to max inclusive.
    JobErrorPayload:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Update file 38e3ca486b3b477db0f99646b0529746 not found.
        download_url:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          title: Download Url
          description: URL for downloading an errors block model file. Set if the job is for block model update and there were block-specific errors.
        status:
          type: integer
          title: Status
          description: Status code for the error, equivalent to a HTTP status code.
          examples:
            - 400
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Error in Update
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/job/update-error
      additionalProperties: false
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: JobErrorPayload
    JobPendingPayload:
      properties:
        upload_url:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          title: Upload Url
          description: Upload URL for the job, with an up-to-date SAS token
      additionalProperties: false
      type: object
      required:
        - upload_url
      title: JobPendingPayload
    JobResponse:
      properties:
        job_status:
          $ref: '#/components/schemas/JobStatus'
          description: |

            Status of this job. The statuses have the following meanings:
             - `PENDING_UPLOAD`: This is a model update job, and is awaiting notification that file upload has
               completed before proceeding any further.
             - `QUEUED`: The job is ready for processing, and is queued waiting for a worker process to become available.
             - `PROCESSING`: The job is actively being processed by a worker.
             - `COMPLETE`: The job completed succesfully.
             - `FAILED`: The job failed. No further processing of this job will be attempted.
          examples:
            - COMPLETE
        payload:
          anyOf:
            - $ref: '#/components/schemas/Version'
            - $ref: '#/components/schemas/QueryDownload'
            - $ref: '#/components/schemas/JobErrorPayload'
            - $ref: '#/components/schemas/ReportRunResult'
            - $ref: '#/components/schemas/ReportComparisonJobResult'
            - $ref: '#/components/schemas/JobPendingPayload'
            - type: 'null'
          title: Payload
          description: |

            The payload describes the outcome of the job, and is set for completed or failed jobs. This property will not appear if the
            job is not yet `COMPLETE` or `FAILED`.
             - For all failed jobs, this will be a `JobErrorPayload`.
             - For completed create or update jobs, this will be a `Version`.
             - For completed query jobs, this will be a `QueryDownload`.
      additionalProperties: false
      type: object
      required:
        - job_status
      title: JobResponse
    JobStatus:
      type: string
      enum:
        - PENDING_UPLOAD
        - QUEUED
        - PROCESSING
        - COMPLETE
        - FAILED
      title: JobStatus
    Lineage_V1_0_0-Input:
      properties:
        events:
          items:
            $ref: '#/components/schemas/Lineage_V1_0_0_Runevent'
          type: array
          title: Events
        self_link:
          anyOf:
            - type: string
            - type: 'null'
          title: Self Link
      type: object
      required:
        - events
      title: Lineage_V1_0_0
    Lineage_V1_0_0-Output:
      properties:
        events:
          items:
            $ref: '#/components/schemas/Lineage_V1_0_0_Runevent'
          type: array
          title: Events
        self_link:
          anyOf:
            - type: string
            - type: 'null'
          title: Self Link
      type: object
      required:
        - events
      title: Lineage_V1_0_0
    Lineage_V1_0_0_Runevent:
      properties:
        eventTime:
          type: string
          title: Eventtime
        eventType:
          anyOf:
            - type: string
            - type: 'null'
          title: Eventtype
        inputs:
          anyOf:
            - items:
                $ref: '#/components/schemas/Lineage_V1_0_0_Runevent_Inputdataset'
              type: array
            - type: 'null'
          title: Inputs
        job:
          $ref: '#/components/schemas/Lineage_V1_0_0_Runevent_Job'
        outputs:
          anyOf:
            - items:
                $ref: '#/components/schemas/Lineage_V1_0_0_Runevent_Outputdataset'
              type: array
            - type: 'null'
          title: Outputs
        producer:
          type: string
          title: Producer
        run:
          $ref: '#/components/schemas/Lineage_V1_0_0_Runevent_Run'
        schemaURL:
          type: string
          title: Schemaurl
      type: object
      required:
        - eventTime
        - job
        - producer
        - run
        - schemaURL
      title: Lineage_V1_0_0_Runevent
    Lineage_V1_0_0_Runevent_Inputdataset:
      properties:
        facets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Facets
        inputFacets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Inputfacets
        name:
          type: string
          title: Name
        namespace:
          type: string
          title: Namespace
      type: object
      required:
        - name
        - namespace
      title: Lineage_V1_0_0_Runevent_Inputdataset
    Lineage_V1_0_0_Runevent_Job:
      properties:
        facets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Facets
        name:
          type: string
          title: Name
        namespace:
          type: string
          title: Namespace
      type: object
      required:
        - name
        - namespace
      title: Lineage_V1_0_0_Runevent_Job
    Lineage_V1_0_0_Runevent_Outputdataset:
      properties:
        facets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Facets
        name:
          type: string
          title: Name
        namespace:
          type: string
          title: Namespace
        outputFacets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Outputfacets
      type: object
      required:
        - name
        - namespace
      title: Lineage_V1_0_0_Runevent_Outputdataset
    Lineage_V1_0_0_Runevent_Run:
      properties:
        facets:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Facets
        runId:
          type: string
          format: uuid
          title: Runid
      type: object
      required:
        - runId
      title: Lineage_V1_0_0_Runevent_Run
    Location:
      properties:
        x:
          type: number
          title: X
        'y':
          type: number
          title: 'Y'
        z:
          type: number
          title: Z
      additionalProperties: false
      type: object
      required:
        - x
        - 'y'
        - z
      title: Location
    Mapping:
      properties:
        columns:
          items:
            $ref: '#/components/schemas/Column'
          type: array
          title: Columns
      additionalProperties: false
      type: object
      required:
        - columns
      title: Mapping
    NameConflictErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Block model name test-model already exists.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 409
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Name Conflict
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/name-conflict
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: NameConflictErrorResponse
    NotFoundErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Block model 11111111-2222-3333-4444-555555555555 not found.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 404
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Resource Not Found
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/not-found
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: NotFoundErrorResponse
    OctreeSubblocks:
      properties:
        nx:
          type: integer
          maximum: 64
          minimum: 1
          title: Nx
        ny:
          type: integer
          maximum: 64
          minimum: 1
          title: Ny
        nz:
          type: integer
          maximum: 64
          minimum: 1
          title: Nz
      additionalProperties: false
      type: object
      required:
        - nx
        - ny
        - nz
      title: OctreeSubblocks
    OutputOptionsCSV:
      properties:
        column_headers:
          anyOf:
            - $ref: '#/components/schemas/ColumnHeaderType'
            - type: 'null'
          description: Header values within the output file for non-system columns, either the column's name or UUID
          default: name
        delimiter:
          anyOf:
            - type: string
              maxLength: 1
              minLength: 1
            - type: 'null'
          title: Delimiter
          description: Delimiter between values
          default: ','
        exclude_null_rows:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Exclude Null Rows
          description: Specifies whether or not the output query file should exclude rows where all values for queried user columns are null.
          default: true
        file_format:
          type: string
          const: csv
          title: File Format
          description: CSV file
          default: csv
      additionalProperties: false
      type: object
      title: OutputOptionsCSV
    OutputOptionsParquet:
      properties:
        column_headers:
          anyOf:
            - $ref: '#/components/schemas/ColumnHeaderType'
            - type: 'null'
          description: Header values within the output file for non-system columns, either the column's name or UUID
          default: name
        exclude_null_rows:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Exclude Null Rows
          description: Specifies whether or not the output query file should exclude rows where all values for queried user columns are null.
          default: true
        file_format:
          type: string
          const: parquet
          title: File Format
          description: Apache Parquet file
          default: parquet
      additionalProperties: false
      type: object
      title: OutputOptionsParquet
    PaginatedResponseWithUnits_ReportSpecificationWithLastRunInfo_:
      properties:
        count:
          type: integer
          title: Count
          description: Number of results returned in `results`
        limit:
          type: integer
          title: Limit
          description: Maximum number of items requested
        offset:
          type: integer
          title: Offset
          description: Index of the first item in `results` with respect to the full list without pagination
        referenced_units:
          items:
            $ref: '#/components/schemas/Unit'
          type: array
          title: Referenced Units
          description: List of all units referenced in the results
        results:
          items:
            $ref: '#/components/schemas/ReportSpecificationWithLastRunInfo'
          type: array
          title: Results
          description: List of results
        total:
          type: integer
          title: Total
          description: Total number of items within the full list without pagination
      additionalProperties: false
      type: object
      required:
        - count
        - limit
        - offset
        - referenced_units
        - results
        - total
      title: PaginatedResponseWithUnits[ReportSpecificationWithLastRunInfo]
    PaginatedResponseWithUnits_Version_:
      properties:
        count:
          type: integer
          title: Count
          description: Number of results returned in `results`
        limit:
          type: integer
          title: Limit
          description: Maximum number of items requested
        offset:
          type: integer
          title: Offset
          description: Index of the first item in `results` with respect to the full list without pagination
        referenced_units:
          items:
            $ref: '#/components/schemas/Unit'
          type: array
          title: Referenced Units
          description: List of all units referenced in the results
        results:
          items:
            $ref: '#/components/schemas/Version'
          type: array
          title: Results
          description: List of results
        total:
          type: integer
          title: Total
          description: Total number of items within the full list without pagination
      additionalProperties: false
      type: object
      required:
        - count
        - limit
        - offset
        - referenced_units
        - results
        - total
      title: PaginatedResponseWithUnits[Version]
    PaginatedResponse_BlockModel_:
      properties:
        count:
          type: integer
          title: Count
          description: Number of results returned in `results`
        limit:
          type: integer
          title: Limit
          description: Maximum number of items requested
        offset:
          type: integer
          title: Offset
          description: Index of the first item in `results` with respect to the full list without pagination
        results:
          items:
            $ref: '#/components/schemas/BlockModel'
          type: array
          title: Results
          description: List of results
        total:
          type: integer
          title: Total
          description: Total number of items within the full list without pagination
      additionalProperties: false
      type: object
      required:
        - count
        - limit
        - offset
        - results
        - total
      title: PaginatedResponse[BlockModel]
    PaginatedResponse_ReportResultSummary_:
      properties:
        count:
          type: integer
          title: Count
          description: Number of results returned in `results`
        limit:
          type: integer
          title: Limit
          description: Maximum number of items requested
        offset:
          type: integer
          title: Offset
          description: Index of the first item in `results` with respect to the full list without pagination
        results:
          items:
            $ref: '#/components/schemas/ReportResultSummary'
          type: array
          title: Results
          description: List of results
        total:
          type: integer
          title: Total
          description: Total number of items within the full list without pagination
      additionalProperties: false
      type: object
      required:
        - count
        - limit
        - offset
        - results
        - total
      title: PaginatedResponse[ReportResultSummary]
    QueryCriteria:
      properties:
        bbox:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/BBox'
                - $ref: '#/components/schemas/BBoxXYZ'
            - type: 'null'
          title: Bbox
          description: |+

            Bounding box of the search area as integer indexes or model aligned coordinates. If not provided, this is set to the entire block model.
                If using integer indexes, they must be `>=` zero and `<=` the number of blocks - 1.
                For example, if a block model has:
                ```
                n_blocks: {
                    nx: 10,
                    ny: 10,
                    nz: 10
                }
                ```
                then i_max, j_max, and k_max must all be `>=` 0 and `<=` 9.
                If using model aligned coordinates, that is, rotated by the same scheme as the block model, centroids that are
                encapsulated by the bounding box will be selected. A side effect of this behaviour is a bounding box with x, y, z
                min-max can exceed the model along any axis.

        columns:
          items:
            type: string
          type: array
          title: Columns
          description: |

            List of columns, in addition to the "geometry" columns, that will be included in the output file.
            The `columns` field supports selecting columns by either their title or ID, and can also include a wildcard (`"*"`) placeholder, which will expand to all user columns, ordered alphabetically by title in a case-insensitive manner.
            Please note that the wildcard does not cover the system column `version_id`. To include `version_id` in the output file, it must also be explicitly specified in the `columns` field alongside the wildcard.
            The order of columns in the output file will match the order in the `columns` field. Columns that are part of the initial "geometry" columns will be ignored if specified.
          examples:
            - - '*'
        geometry_columns:
          $ref: '#/components/schemas/GeometryColumns'
          description: |

            Determines whether the blocks in the output file will be primarily identified by their coordinates or their block
            indices.

            If `geometry_columns` is set to "indices" (the default), then the first columns in the output file will be `i`, `j`, `k` followed by the sub-block index columns (if applicable).
            If `geometry_columns` is set to "coordinates", then the output file will contain the columns `x`, `y`, `z` for regular block models and `x`, `y`, `z`, `dx`, `dy`, `dz` for sub-blocked block models. These columns are referred to as the "geometry" columns, and will appear before any others columns specified in the `columns` field.
          default: indices
        output_options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/OutputOptionsParquet'
                - $ref: '#/components/schemas/OutputOptionsCSV'
              discriminator:
                propertyName: file_format
                mapping:
                  csv: '#/components/schemas/OutputOptionsCSV'
                  parquet: '#/components/schemas/OutputOptionsParquet'
            - type: 'null'
          title: Output Options
          description: Format of the output file
        version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Uuid
          description: Version UUID of the version of the block model to query, or the latest version if not provided
      additionalProperties: false
      type: object
      required:
        - columns
      title: QueryCriteria
    QueryDownload:
      properties:
        download_url:
          type: string
          minLength: 1
          format: uri
          title: Download Url
          description: Download URL for the results of the query.
          examples:
            - https://au.static.evo.seequent.com/blocksync/169ccde2-4d0f-4a7a-adb7-1ccadc734cdd/query/{criteria hash}.parquet?st=2023-11-09T03%3A05%3A30Z&se=2023-11-10T03%3A06%3A30Z&sp=r&spr=http&sv=2021-08-06&sr=b&sig=ABCDEF0123456789ABCDEF0123456789
      additionalProperties: false
      type: object
      required:
        - download_url
      title: QueryDownload
    QueryErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Query criteria validation failed for block model 11111111-2222-3333-4444-555555555555
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 422
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Unprocessable Entity
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/unprocessable-entity
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: QueryErrorResponse
    QueryParameterErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Query parameter 'deleted' must be provided.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 400
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Invalid Query Parameters
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/invalid-query-parameters
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: QueryParameterErrorResponse
    QueryResult:
      properties:
        bbox:
          oneOf:
            - $ref: '#/components/schemas/BBox'
            - $ref: '#/components/schemas/BBoxXYZ'
          title: Bbox
          description: |+

            Bounding box of the search area as integer indexes or model aligned coordinates. If not provided, this is set to the entire block model.
                If using integer indexes, they must be `>=` zero and `<=` the number of blocks - 1.
                For example, if a block model has:
                ```
                n_blocks: {
                    nx: 10,
                    ny: 10,
                    nz: 10
                }
                ```
                then i_max, j_max, and k_max must all be `>=` 0 and `<=` 9.
                If using model aligned coordinates, that is, rotated by the same scheme as the block model, centroids that are
                encapsulated by the bounding box will be selected. A side effect of this behaviour is a bounding box with x, y, z
                min-max can exceed the model along any axis.

        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        columns:
          items:
            type: string
          type: array
          title: Columns
          description: |

            List of columns, in addition to the "geometry" columns, that will be included in the output file.
            The `columns` field supports selecting columns by either their title or ID, and can also include a wildcard (`"*"`) placeholder, which will expand to all user columns, ordered alphabetically by title in a case-insensitive manner.
            Please note that the wildcard does not cover the system column `version_id`. To include `version_id` in the output file, it must also be explicitly specified in the `columns` field alongside the wildcard.
            The order of columns in the output file will match the order in the `columns` field. Columns that are part of the initial "geometry" columns will be ignored if specified.
        job_url:
          type: string
          minLength: 1
          format: uri
          title: Job Url
          description: Pollable job URL for this query
        mapping:
          $ref: '#/components/schemas/Mapping'
          description: |

            List of columns, in addition to the "geometry" columns, that will be included in the output file.
            The `columns` field supports selecting columns by either their title or ID, and can also include a wildcard (`"*"`) placeholder, which will expand to all user columns, ordered alphabetically by title in a case-insensitive manner.
            Please note that the wildcard does not cover the system column `version_id`. To include `version_id` in the output file, it must also be explicitly specified in the `columns` field alongside the wildcard.
            The order of columns in the output file will match the order in the `columns` field. Columns that are part of the initial "geometry" columns will be ignored if specified.
        version_id:
          type: integer
          title: Version Id
          description: |-
            Identifier for the version within a block model as a monotonically increasing integer, where 1 is
            the `version_id` for the version created upon creation of the block model.
          examples:
            - 5
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
          description: A universally unique identifier for the version
          examples:
            - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
      additionalProperties: false
      type: object
      required:
        - bbox
        - bm_uuid
        - columns
        - job_url
        - mapping
        - version_id
        - version_uuid
      title: QueryResult
    RegularSubblocks:
      properties:
        nx:
          type: integer
          maximum: 100
          minimum: 1
          title: Nx
        ny:
          type: integer
          maximum: 100
          minimum: 1
          title: Ny
        nz:
          type: integer
          maximum: 100
          minimum: 1
          title: Nz
      additionalProperties: false
      type: object
      required:
        - nx
        - ny
        - nz
      title: RegularSubblocks
    Rename:
      properties:
        col_id:
          type: string
          title: Col Id
          description: The ID of the column, a UUID for non-system columns
          examples:
            - 618d6339-2fa7-4dfd-9c7f-c0b12016639e
        new_title:
          type: string
          title: New Title
          description: The new human-readable label for the column identified by `col_id`
      additionalProperties: false
      type: object
      required:
        - col_id
        - new_title
      title: Rename
    RenameLite:
      properties:
        new_title:
          type: string
          title: New Title
          description: The new human-readable label for the column identified by `title`
        title:
          type: string
          title: Title
          description: The original human-readable label used to identify the column
      additionalProperties: false
      type: object
      required:
        - new_title
        - title
      title: RenameLite
    ReportAggregation:
      type: string
      enum:
        - SUM
        - MASS_AVERAGE
      title: ReportAggregation
    ReportCategory:
      properties:
        col_id:
          type: string
          format: uuid
          title: Col Id
          description: ID of the category column in the block model
          examples:
            - 13c277c2-edc6-4a7a-8380-251dd19231f2
        label:
          type: string
          maxLength: 120
          title: Label
          description: The human-readable label used to identify the column
        values:
          anyOf:
            - items:
                type: string
              type: array
              maxItems: 100
              minItems: 1
            - type: 'null'
          title: Values
          description: Values to use for category filtering. If null the report will contain a row for each distinct non-empty value in this column.
          examples:
            - - low
              - medium
              - high
      additionalProperties: false
      type: object
      required:
        - col_id
        - label
      title: ReportCategory
    ReportColumn:
      properties:
        aggregation:
          $ref: '#/components/schemas/ReportAggregation'
          description: The aggregation method to use for the column
          examples:
            - SUM
            - MASS_AVERAGE
        col_id:
          type: string
          format: uuid
          title: Col Id
          description: ID of the column in the block model
          examples:
            - 13c277c2-edc6-4a7a-8380-251dd19231f2
        label:
          type: string
          maxLength: 120
          title: Label
          description: The human-readable label used to identify the column
          examples:
            - Au Content
        output_unit_id:
          type: string
          title: Output Unit Id
          description: ID of the unit to use for the column output
          examples:
            - kg
      additionalProperties: false
      type: object
      required:
        - aggregation
        - col_id
        - label
        - output_unit_id
      title: ReportColumn
    ReportComparison:
      properties:
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model that the report was run on
          examples:
            - bbb277c2-edc6-4a7a-8380-251dd19231f2
        categories:
          items:
            $ref: '#/components/schemas/ReportResultCategory'
          type: array
          title: Categories
          description: List of categories used in the report
          examples:
            - col_id: ddd277c2-edc6-4a7a-8380-251dd19231f2
              label: Rock type
        cutoff_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Cutoff Col Id
          description: ID of the column that was used for cut-off evaluation
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        from_result:
          $ref: '#/components/schemas/ReportComparisonResultInfo'
        report_specification_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Specification Description
          description: Description of the Report Specification that was run
          examples:
            - A report to show the density of the block model
        report_specification_name:
          type: string
          title: Report Specification Name
          description: Name of the Report Specification that was run
          examples:
            - Density Report
        report_specification_revision:
          type: integer
          minimum: 0
          title: Report Specification Revision
          description: Revision of the Report Specification that was run
          examples:
            - 1
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the Report Specification that was run
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        result_sets:
          items:
            $ref: '#/components/schemas/ReportComparisonResultSet'
          type: array
          title: Result Sets
        to_result:
          $ref: '#/components/schemas/ReportComparisonResultInfo'
        value_columns:
          items:
            $ref: '#/components/schemas/ReportResultColumn'
          type: array
          title: Value Columns
          description: List of value columns used in the report
          examples:
            - col_id: eee277c2-edc6-4a7a-8380-251dd19231f2
              label: Average gold content
              unit_id: ppm[mass]
        warnings:
          $ref: '#/components/schemas/ReportComparisonWarnings'
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - categories
        - cutoff_col_id
        - from_result
        - report_specification_description
        - report_specification_name
        - report_specification_revision
        - report_specification_uuid
        - result_sets
        - to_result
        - value_columns
        - warnings
      title: ReportComparison
    ReportComparisonJobResult:
      properties:
        from_result_uuid:
          type: string
          format: uuid
          title: From Result Uuid
          description: ID of the Report Result for the baseline version.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        from_version_uuid:
          type: string
          format: uuid
          title: From Version Uuid
          description: ID of the block model version to use as the baseline for the comparison.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the Report Specification that the comparison is for
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        to_result_uuid:
          type: string
          format: uuid
          title: To Result Uuid
          description: ID of the Report Result for the version to compare.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        to_version_uuid:
          type: string
          format: uuid
          title: To Version Uuid
          description: ID of the block model version to compare.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      required:
        - report_specification_uuid
      title: ReportComparisonJobResult
    ReportComparisonRequestResult:
      properties:
        from_result_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: From Result Uuid
          description: ID of the Report Result for the baseline version, or null if the result does not yet exist (and a job was created).
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        job_url:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          title: Job Url
          description: URL to the Report Comparison Job, if created. If both results already exist, no job will be created and this will be null.
        to_result_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: To Result Uuid
          description: ID of the Report Result for the version to compare, or null if the result does not yet exist (and a job was created).
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      title: ReportComparisonRequestResult
    ReportComparisonResultInfo:
      properties:
        referenced_columns:
          items:
            $ref: '#/components/schemas/ReportResultReferencedColumn'
          type: array
          title: Referenced Columns
        report_result_created_at:
          type: string
          format: date-time
          title: Report Result Created At
          description: Creation date of the Report Result
          examples:
            - '2021-01-01T00:00:00Z'
        report_result_uuid:
          type: string
          format: uuid
          title: Report Result Uuid
          description: ID of the Report Result
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        version_comment:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Comment
          description: Comment of the version of the block model that the report was run on
          examples:
            - Updated density
        version_created_at:
          type: string
          format: date-time
          title: Version Created At
          description: Creation date of the version of the block model that the report was run on
          examples:
            - '2021-01-01T00:00:00Z'
        version_created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who created the version of the block model that the report was run on
        version_id:
          type: integer
          title: Version Id
          description: Version ID of the version of the block model that the report was run on
          examples:
            - 2
        version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Uuid
          description: Version UUID of the version of block model that the report was run on
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      required:
        - referenced_columns
        - report_result_created_at
        - report_result_uuid
        - version_comment
        - version_created_at
        - version_created_by
        - version_id
        - version_uuid
      title: ReportComparisonResultInfo
    ReportComparisonResultSet:
      properties:
        cutoff_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Cutoff Value
          description: Cut-off value used in the report
          examples:
            - 1
        rows:
          items:
            $ref: '#/components/schemas/ReportComparisonRow'
          type: array
          title: Rows
          description: List of rows in the Report Result
          examples:
            - categories:
                - Granite
              values:
                - 2.7
                - 0.3
      additionalProperties: false
      type: object
      required:
        - cutoff_value
        - rows
      title: ReportComparisonResultSet
    ReportComparisonRow:
      properties:
        categories:
          items:
            anyOf:
              - type: string
              - type: integer
              - type: number
              - type: boolean
              - type: 'null'
          type: array
          title: Categories
          description: List of category values. `null` indicates a total for that category column.
          examples:
            - - Granite
        values:
          items:
            $ref: '#/components/schemas/ReportComparisonValue'
          type: array
          title: Values
          description: List of values for the value columns
          examples:
            - - 2.7
              - 0.3
      additionalProperties: false
      type: object
      required:
        - categories
        - values
      title: ReportComparisonRow
    ReportComparisonSpec:
      properties:
        from_version_uuid:
          type: string
          format: uuid
          title: From Version Uuid
          description: ID of the block model version to use as the baseline for the comparison.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        to_version_uuid:
          type: string
          format: uuid
          title: To Version Uuid
          description: ID of the block model version to compare.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      title: ReportComparisonSpec
    ReportComparisonValue:
      properties:
        difference:
          anyOf:
            - type: number
            - type: integer
          title: Difference
        from_value:
          anyOf:
            - type: number
            - type: integer
          title: From Value
        percent:
          anyOf:
            - type: number
            - type: 'null'
          title: Percent
        to_value:
          anyOf:
            - type: number
            - type: integer
          title: To Value
      additionalProperties: false
      type: object
      required:
        - difference
        - from_value
        - percent
        - to_value
      title: ReportComparisonValue
    ReportComparisonWarnings:
      properties:
        comparison:
          items:
            $ref: '#/components/schemas/ReportWarning'
          type: array
          title: Comparison
        from_result:
          items:
            $ref: '#/components/schemas/ReportWarning'
          type: array
          title: From Result
        to_result:
          items:
            $ref: '#/components/schemas/ReportWarning'
          type: array
          title: To Result
      additionalProperties: false
      type: object
      required:
        - comparison
        - from_result
        - to_result
      title: ReportComparisonWarnings
    ReportNegativeValuesPolicy:
      type: string
      enum:
        - USE
        - ZERO
        - IGNORE_BLOCK
      title: ReportNegativeValuesPolicy
    ReportNullValuesPolicy:
      type: string
      enum:
        - ZERO
        - IGNORE_BLOCK
      title: ReportNullValuesPolicy
    ReportResult:
      properties:
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model that the report was run on
          examples:
            - bbb277c2-edc6-4a7a-8380-251dd19231f2
        categories:
          items:
            $ref: '#/components/schemas/ReportResultCategory'
          type: array
          title: Categories
          description: List of categories used in the report
          examples:
            - col_id: ddd277c2-edc6-4a7a-8380-251dd19231f2
              label: Rock type
        cutoff_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Cutoff Col Id
          description: ID of the column that was used for cut-off evaluation
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        referenced_columns:
          items:
            $ref: '#/components/schemas/ReportResultReferencedColumn'
          type: array
          title: Referenced Columns
        report_result_created_at:
          type: string
          format: date-time
          title: Report Result Created At
          description: Creation date of the Report Result
          examples:
            - '2021-01-01T00:00:00Z'
        report_result_uuid:
          type: string
          format: uuid
          title: Report Result Uuid
          description: ID of the Report Result
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        report_specification_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Specification Description
          description: Description of the report specification that was run
          examples:
            - A report to show the density of the block model
        report_specification_name:
          type: string
          title: Report Specification Name
          description: Name of the report specification that was run
          examples:
            - Density Report
        report_specification_revision:
          type: integer
          minimum: 0
          title: Report Specification Revision
          description: Revision of the report specification that was run
          examples:
            - 1
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the report specification that was run
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        result_sets:
          items:
            $ref: '#/components/schemas/ReportResultSet'
          type: array
          title: Result Sets
        value_columns:
          items:
            $ref: '#/components/schemas/ReportResultColumn'
          type: array
          title: Value Columns
          description: List of value columns used in the report
          examples:
            - col_id: eee277c2-edc6-4a7a-8380-251dd19231f2
              label: Average gold content
              unit_id: ppm[mass]
        version_comment:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Comment
          description: Comment of the version of the block model that the report was run on
          examples:
            - Updated density
        version_created_at:
          type: string
          format: date-time
          title: Version Created At
          description: Creation date of the version of the block model that the report was run on
          examples:
            - '2021-01-01T00:00:00Z'
        version_created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who created the version of the block model that the report was run on
        version_id:
          type: integer
          title: Version Id
          description: Version ID of the version of block model that the report was run on
          examples:
            - 2
        version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Uuid
          description: Version UUID of the version of block model that the report was run on
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        warnings:
          items:
            $ref: '#/components/schemas/ReportWarning'
          type: array
          title: Warnings
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - categories
        - cutoff_col_id
        - referenced_columns
        - report_result_created_at
        - report_result_uuid
        - report_specification_description
        - report_specification_name
        - report_specification_revision
        - report_specification_uuid
        - result_sets
        - value_columns
        - version_comment
        - version_created_at
        - version_created_by
        - version_id
        - version_uuid
        - warnings
      title: ReportResult
    ReportResultCategory:
      properties:
        col_id:
          type: string
          format: uuid
          title: Col Id
          description: ID of the block model column
          examples:
            - ddd277c2-edc6-4a7a-8380-251dd19231f2
        label:
          type: string
          title: Label
          description: Label of the column
          examples:
            - Rock type
      additionalProperties: false
      type: object
      required:
        - col_id
        - label
      title: ReportResultCategory
    ReportResultColumn:
      properties:
        col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Col Id
          description: ID of the block model column, if applicable. This will be null for system-calculated columns such as 'Mass'
          examples:
            - eee277c2-edc6-4a7a-8380-251dd19231f2
        label:
          type: string
          title: Label
          description: Label of the column
          examples:
            - Average gold content
        unit_id:
          type: string
          title: Unit Id
          description: ID of the unit of the column
          examples:
            - ppm[mass]
      additionalProperties: false
      type: object
      required:
        - col_id
        - label
        - unit_id
      title: ReportResultColumn
    ReportResultReferencedColumn:
      properties:
        col_id:
          type: string
          format: uuid
          title: Col Id
          description: ID of the block model column
          examples:
            - eee277c2-edc6-4a7a-8380-251dd19231f2
        data_type:
          type: string
          title: Data Type
          description: Data type of the referenced column in the Report Result
          examples:
            - Utf8
        title:
          type: string
          title: Title
          description: Title of the referenced column
          examples:
            - Something
        unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Unit Id
          description: ID of the unit of the column
          examples:
            - ppm[mass]
        unit_id_from_version:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Unit Id From Version
          description: Version UUID of the version of block model that the unid was from
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      required:
        - col_id
        - data_type
        - title
      title: ReportResultReferencedColumn
    ReportResultSet:
      properties:
        cutoff_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Cutoff Value
          description: Cut-off value for this set
          examples:
            - 0.5
        rows:
          items:
            $ref: '#/components/schemas/ReportRow'
          type: array
          title: Rows
          description: List of rows in this result set
      additionalProperties: false
      type: object
      required:
        - cutoff_value
        - rows
      title: ReportResultSet
    ReportResultSummary:
      properties:
        report_result_created_at:
          type: string
          format: date-time
          title: Report Result Created At
          description: Creation date of the Report Result
          examples:
            - '2021-01-01T00:00:00Z'
        report_result_uuid:
          type: string
          format: uuid
          title: Report Result Uuid
          description: ID of the Report Result
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the report specification that was run
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        version_created_at:
          type: string
          format: date-time
          title: Version Created At
          description: Creation date of the version of the block model that the report was run on
          examples:
            - '2021-01-01T00:00:00Z'
        version_created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who created the version of the block model that the report was run on
        version_id:
          type: integer
          title: Version Id
          description: Version ID of the version of block model that the report was run on
          examples:
            - 2
        version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Uuid
          description: Version UUID of the version of block model that the report was run on
          examples:
            - ccc277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      required:
        - report_result_created_at
        - report_result_uuid
        - report_specification_uuid
        - version_created_at
        - version_created_by
        - version_id
        - version_uuid
      title: ReportResultSummary
    ReportRow:
      properties:
        categories:
          items:
            anyOf:
              - type: string
              - type: integer
              - type: number
              - type: boolean
              - type: 'null'
          type: array
          title: Categories
          description: List of category values. `null` indicates a total for that category column.
          examples:
            - - Granite
        values:
          items:
            anyOf:
              - type: integer
              - type: number
          type: array
          title: Values
          description: List of values for the value columns
          examples:
            - - 2.7
              - 0.3
      additionalProperties: false
      type: object
      required:
        - categories
        - values
      title: ReportRow
    ReportRunResult:
      properties:
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
        report_result_uuid:
          type: string
          format: uuid
          title: Report Result Uuid
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
        version_id:
          type: integer
          title: Version Id
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - report_result_uuid
        - report_specification_uuid
        - version_id
        - version_uuid
      title: ReportRunResult
    ReportSpecificationWithJobUrl:
      properties:
        autorun:
          type: boolean
          title: Autorun
          description: Whether to automatically run this Report Specification when a new version is published
          default: true
        bbox:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/BBox'
                - $ref: '#/components/schemas/BBoxXYZ'
            - type: 'null'
          title: Bbox
          description: Bounding box for the report
          examples:
            - i_minmax:
                max: 1
                min: 0
              j_minmax:
                max: 1
                min: 0
              k_minmax:
                max: 1
                min: 0
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model this Report Specification is associated with
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        categories:
          anyOf:
            - items:
                $ref: '#/components/schemas/ReportCategory'
              type: array
              maxItems: 1
              minItems: 0
            - type: 'null'
          title: Categories
          description: Category columns within this Report Specification. If null or empty, the report will have a single total row for each cut-off.
          examples:
            - - col_id: 11c277c2-edc6-4a7a-8380-251dd19231f2
                label: Grade
                values:
                  - low
                  - medium
                  - high
        columns:
          items:
            $ref: '#/components/schemas/ReportColumn'
          type: array
          title: Columns
          description: Columns within this Report Specification
          examples:
            - - aggregation: SUM
                col_id: abc277c2-edc6-4a7a-8380-251dd19231f2
                label: Au content
                output_unit_id: kg
        cutoff_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Cutoff Col Id
          description: ID of the column to use for cut-off evaluation
          examples:
            - 13c277c2-edc6-4a7a-8380-251dd19231f2
        cutoff_values:
          anyOf:
            - items:
                type: number
              type: array
              maxItems: 20
              minItems: 1
            - type: 'null'
          title: Cutoff Values
          description: Values to use for cut-off evaluation
          examples:
            - - 0.5
              - 1.5
              - 5
        density_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Density Col Id
          description: ID of the column to use for block density
          examples:
            - 24c277c2-edc6-4a7a-8380-251dd19231f2
        density_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Density Unit Id
          description: ID of the unit to use for block density. The unit must be of type `MASS_PER_VOLUME`.
          examples:
            - kg/m3
        density_value:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Density Value
          description: Value to use for block density
          examples:
            - 2.5
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: User-supplied description of the report
          examples:
            - Gold resource report for test purposes
        job_url:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          title: Job Url
          description: URL for the Reporting Job, if `run_now` was requested
        mass_unit_id:
          type: string
          title: Mass Unit Id
          description: ID of the unit to use for total mass. The unit must be of type `MASS`
          examples:
            - t
        name:
          type: string
          maxLength: 120
          title: Name
          description: The human-readable label used to identify the report
        negative_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNegativeValuesPolicy'
            - type: 'null'
          description: Policy for handling negative values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - USE
        null_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNullValuesPolicy'
            - type: 'null'
          description: Policy for handling null values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - ZERO
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the Report Specification
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        revision:
          type: integer
          title: Revision
          description: Revision number of this Report Specification
          default: 0
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - columns
        - mass_unit_id
        - name
        - report_specification_uuid
      title: ReportSpecificationWithJobUrl
    ReportSpecificationWithLastRunInfo:
      properties:
        autorun:
          type: boolean
          title: Autorun
          description: Whether to automatically run this Report Specification when a new version is published
          default: true
        bbox:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/BBox'
                - $ref: '#/components/schemas/BBoxXYZ'
            - type: 'null'
          title: Bbox
          description: Bounding box for the report
          examples:
            - i_minmax:
                max: 1
                min: 0
              j_minmax:
                max: 1
                min: 0
              k_minmax:
                max: 1
                min: 0
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model this Report Specification is associated with
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        categories:
          anyOf:
            - items:
                $ref: '#/components/schemas/ReportCategory'
              type: array
              maxItems: 1
              minItems: 0
            - type: 'null'
          title: Categories
          description: Category columns within this Report Specification. If null or empty, the report will have a single total row for each cut-off.
          examples:
            - - col_id: 11c277c2-edc6-4a7a-8380-251dd19231f2
                label: Grade
                values:
                  - low
                  - medium
                  - high
        columns:
          items:
            $ref: '#/components/schemas/ReportColumn'
          type: array
          title: Columns
          description: Columns within this Report Specification
          examples:
            - - aggregation: SUM
                col_id: abc277c2-edc6-4a7a-8380-251dd19231f2
                label: Au content
                output_unit_id: kg
        cutoff_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Cutoff Col Id
          description: ID of the column to use for cut-off evaluation
          examples:
            - 13c277c2-edc6-4a7a-8380-251dd19231f2
        cutoff_values:
          anyOf:
            - items:
                type: number
              type: array
              maxItems: 20
              minItems: 1
            - type: 'null'
          title: Cutoff Values
          description: Values to use for cut-off evaluation
          examples:
            - - 0.5
              - 1.5
              - 5
        density_col_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Density Col Id
          description: ID of the column to use for block density
          examples:
            - 24c277c2-edc6-4a7a-8380-251dd19231f2
        density_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Density Unit Id
          description: ID of the unit to use for block density. The unit must be of type `MASS_PER_VOLUME`.
          examples:
            - kg/m3
        density_value:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Density Value
          description: Value to use for block density
          examples:
            - 2.5
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: User-supplied description of the report
          examples:
            - Gold resource report for test purposes
        last_result_created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Result Created At
          description: Creation date of the Report Result
          examples:
            - '2021-01-01T00:00:00Z'
        last_result_version_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Last Result Version Id
          description: Version ID of the version of the block model that the report was run on
          examples:
            - 2
        mass_unit_id:
          type: string
          title: Mass Unit Id
          description: ID of the unit to use for total mass. The unit must be of type `MASS`
          examples:
            - t
        name:
          type: string
          maxLength: 120
          title: Name
          description: The human-readable label used to identify the report
        negative_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNegativeValuesPolicy'
            - type: 'null'
          description: Policy for handling negative values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - USE
        null_values_policy:
          anyOf:
            - $ref: '#/components/schemas/ReportNullValuesPolicy'
            - type: 'null'
          description: Policy for handling null values in the report's cut-off or value columns
          default: IGNORE_BLOCK
          examples:
            - ZERO
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
          description: ID of the Report Specification
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        revision:
          type: integer
          title: Revision
          description: Revision number of this Report Specification
          default: 0
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - columns
        - mass_unit_id
        - name
        - report_specification_uuid
      title: ReportSpecificationWithLastRunInfo
    ReportWarning:
      properties:
        message:
          type: string
          title: Message
          description: Warning message
          examples:
            - Density value was null, or less than or equal to 0. The default density value of 2.7 was used.
        occurrences:
          type: integer
          title: Occurrences
          description: Number of occurrences of the warning
          examples:
            - 1
        warning_type:
          $ref: '#/components/schemas/ReportWarningType'
          description: Type of warning
          examples:
            - INVALID_DENSITY_VALUE
      additionalProperties: false
      type: object
      required:
        - message
        - occurrences
        - warning_type
      title: ReportWarning
    ReportWarningType:
      type: string
      enum:
        - INVALID_DENSITY_VALUE
        - NULL_CUTOFF_VALUE
        - NEGATIVE_CUTOFF_VALUE
        - NULL_COLUMN_VALUE
        - NEGATIVE_COLUMN_VALUE
        - INVALID_CATEGORY_VALUE
        - TOO_MANY_CATEGORY_VALUES
        - LONG_CATEGORY_VALUE
        - UNIT_FROM_LATEST_VERSION
        - MISSING_SUB_BLOCK
      title: ReportWarningType
    ReportingJobResult:
      properties:
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        job_url:
          type: string
          minLength: 1
          format: uri
          title: Job Url
        job_uuid:
          type: string
          format: uuid
          title: Job Uuid
          description: ID of the Reporting Job.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        report_specification_uuid:
          type: string
          format: uuid
          title: Report Specification Uuid
        version_id:
          type: integer
          title: Version Id
          description: |-
            Identifier for the version within a block model as a monotonically increasing integer, where 1 is
            the `version_id` for the version created upon creation of the block model.
          examples:
            - 5
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
          description: A universally unique identifier for the version
          examples:
            - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - job_url
        - job_uuid
        - report_specification_uuid
        - version_id
        - version_uuid
      title: ReportingJobResult
    ReportingJobSpec:
      properties:
        version_uuid:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Uuid
          description: ID of the block model version to run the report against. If not provided, the latest will be used.
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
      additionalProperties: false
      type: object
      title: ReportingJobSpec
    RestoreErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Maximum sequence for automatic rename reached during conflict resolution for restore block model 11111111-2222-3333-4444-555555555555.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 500
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Restore Error
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/restore-error
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: RestoreErrorResponse
    Rotation:
      properties:
        angle:
          type: number
          exclusiveMaximum: 360
          exclusiveMinimum: -360
          title: Angle
          description: Angle of rotation in degrees
        axis:
          $ref: '#/components/schemas/RotationAxis'
          description: Axis of rotation
      additionalProperties: false
      type: object
      required:
        - angle
        - axis
      title: Rotation
    RotationAxis:
      type: string
      enum:
        - x
        - 'y'
        - z
      title: RotationAxis
    ServiceErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - An error occurred
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 500
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Service Error
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/service
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: ServiceErrorResponse
    Size3D:
      properties:
        nx:
          type: integer
          maximum: 500000000
          exclusiveMinimum: 0
          title: Nx
        ny:
          type: integer
          maximum: 500000000
          exclusiveMinimum: 0
          title: Ny
        nz:
          type: integer
          maximum: 500000000
          exclusiveMinimum: 0
          title: Nz
      additionalProperties: false
      type: object
      required:
        - nx
        - ny
        - nz
      title: Size3D
    SizeOptionsFlexible:
      properties:
        model_type:
          type: string
          const: flexible
          title: Model Type
          description: Type of sub-blocking
        n_parent_blocks:
          $ref: '#/components/schemas/Size3D'
          description: Number of parent blocks for x, y and z axis. Total must not exceed 500,000,000.
        n_subblocks_per_parent:
          $ref: '#/components/schemas/RegularSubblocks'
          description: Number of sub-blocks per parent block per axis.
        parent_block_size:
          $ref: '#/components/schemas/BlockSize'
          description: Parent block size.
      additionalProperties: false
      type: object
      required:
        - model_type
        - n_parent_blocks
        - n_subblocks_per_parent
        - parent_block_size
      title: SizeOptionsFlexible
    SizeOptionsFullySubBlocked:
      properties:
        model_type:
          type: string
          const: fully-sub-blocked
          title: Model Type
          description: Type of sub-blocking
        n_parent_blocks:
          $ref: '#/components/schemas/Size3D'
          description: Number of parent blocks for x, y and z axis. Total must not exceed 500,000,000.
        n_subblocks_per_parent:
          $ref: '#/components/schemas/RegularSubblocks'
          description: Number of sub-blocks per parent block per axis.
        parent_block_size:
          $ref: '#/components/schemas/BlockSize'
          description: Parent block size.
      additionalProperties: false
      type: object
      required:
        - model_type
        - n_parent_blocks
        - n_subblocks_per_parent
        - parent_block_size
      title: SizeOptionsFullySubBlocked
    SizeOptionsOctree:
      properties:
        model_type:
          type: string
          const: variable-octree
          title: Model Type
          description: Type of sub-blocking
        n_parent_blocks:
          $ref: '#/components/schemas/Size3D'
          description: Number of parent blocks for x, y and z axis. Total must not exceed 500,000,000.
        n_subblocks_per_parent:
          $ref: '#/components/schemas/OctreeSubblocks'
          description: Number of sub-blocks per parent block per axis. Accepted values per axis are 1, 2, 4, 8, 16, 32 or 64.
        parent_block_size:
          $ref: '#/components/schemas/BlockSize'
          description: Parent block size.
      additionalProperties: false
      type: object
      required:
        - model_type
        - n_parent_blocks
        - n_subblocks_per_parent
        - parent_block_size
      title: SizeOptionsOctree
    SizeOptionsRegular:
      properties:
        block_size:
          $ref: '#/components/schemas/BlockSize'
          description: Block size
        model_type:
          type: string
          const: regular
          title: Model Type
          description: Type of sub-blocking
        n_blocks:
          $ref: '#/components/schemas/Size3D'
          description: Number of blocks for x, y and z axis. Total must not exceed 500,000,000.
      additionalProperties: false
      type: object
      required:
        - block_size
        - model_type
        - n_blocks
      title: SizeOptionsRegular
    TooManyColumnsErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - Update would cause number of user columns to exceed max of 300.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 400
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Too Many Columns
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/too-many-columns
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: TooManyColumnsErrorResponse
    Unit:
      properties:
        conversion_factor:
          type: number
          title: Conversion Factor
          description: Conversion factor to convert to the reference unit for this unit type
          examples:
            - 1
            - 1000
        description:
          type: string
          title: Description
          description: Description of the unit
          examples:
            - Metres
            - Kilograms per cubic metre
        symbol:
          type: string
          title: Symbol
          description: Display symbol for the unit
          examples:
            - m
            - kg/m³
        unit_id:
          type: string
          title: Unit Id
          description: ID of the unit
          examples:
            - m
            - kg/m3
        unit_type:
          $ref: '#/components/schemas/UnitType'
          description: Type of the unit
          examples:
            - LENGTH
            - MASS_PER_VOLUME
      additionalProperties: false
      type: object
      required:
        - conversion_factor
        - description
        - symbol
        - unit_id
        - unit_type
      title: Unit
    UnitType:
      type: string
      enum:
        - LENGTH
        - MASS
        - VOLUME
        - VALUE
        - MASS_PER_VOLUME
        - MASS_PER_MASS
        - VOLUME_PER_VOLUME
        - VALUE_PER_MASS
      title: UnitType
    UpdateBlockModel:
      properties:
        coordinate_reference_system:
          anyOf:
            - type: string
              maxLength: 10000
            - type: 'null'
          title: Coordinate Reference System
          description: |

            Coordinate reference system used in the block model.

            This may be an EPSG code, signified by the prefix 'EPSG:', or a coordinate system definition in WKT format.
            If an EPSG code is provided, it must be for a coordinate reference system with a length unit type (e.g. `metre`, or `foot`).
          examples:
            - EPSG:3395
        description:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Description
          description: Block model description
        lineage:
          anyOf:
            - $ref: '#/components/schemas/Lineage_V1_0_0-Input'
            - type: 'null'
          description: Lineage of the block model
          x-api-preview: true
        name:
          anyOf:
            - type: string
              maxLength: 100
              minLength: 3
            - type: 'null'
          title: Name
          description: Name of the block model. This may not contain `/` nor `\`. If the name is changed, leading and trailing whitespace will be automatically removed.
        size_unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Size Unit ID
          description: Unit ID denoting the length unit used for the block model's blocks.
      additionalProperties: false
      type: object
      title: UpdateBlockModel
    UpdateColumns:
      properties:
        delete:
          items:
            type: string
          type: array
          title: Delete
          description: The list of column IDs for deletion
        new:
          items:
            $ref: '#/components/schemas/Column'
          type: array
          title: New
        rename:
          items:
            $ref: '#/components/schemas/Rename'
          type: array
          title: Rename
        update:
          items:
            type: string
          type: array
          title: Update
          description: The list of column IDs for update
        update_metadata:
          anyOf:
            - items:
                $ref: '#/components/schemas/UpdateMetadata'
              type: array
            - type: 'null'
          title: Update Metadata
      additionalProperties: false
      type: object
      required:
        - delete
        - new
        - rename
        - update
      title: UpdateColumns
    UpdateColumnsLite-Input:
      properties:
        delete:
          items:
            type: string
          type: array
          title: Delete
          description: The list of column titles for deletion
        new:
          items:
            $ref: '#/components/schemas/ColumnLite'
          type: array
          title: New
        rename:
          items:
            $ref: '#/components/schemas/RenameLite'
          type: array
          title: Rename
        update:
          items:
            type: string
          type: array
          title: Update
          description: The list of column titles for update
        update_metadata:
          anyOf:
            - items:
                $ref: '#/components/schemas/UpdateMetadataLite'
              type: array
            - type: 'null'
          title: Update Metadata
      additionalProperties: false
      type: object
      required:
        - delete
        - new
        - rename
        - update
      title: UpdateColumnsLite
    UpdateColumnsLite-Output:
      properties:
        delete:
          items:
            type: string
          type: array
          title: Delete
          description: The list of column titles for deletion
        new:
          items:
            $ref: '#/components/schemas/ColumnLite'
          type: array
          title: New
        rename:
          items:
            $ref: '#/components/schemas/RenameLite'
          type: array
          title: Rename
        update:
          items:
            type: string
          type: array
          title: Update
          description: The list of column titles for update
        update_metadata:
          anyOf:
            - items:
                $ref: '#/components/schemas/UpdateMetadataLite'
              type: array
            - type: 'null'
          title: Update Metadata
      additionalProperties: false
      type: object
      required:
        - delete
        - new
        - rename
        - update
      title: UpdateColumnsLite
    UpdateDataLite-Input:
      properties:
        columns:
          $ref: '#/components/schemas/UpdateColumnsLite-Input'
        comment:
          anyOf:
            - type: string
              maxLength: 250
            - type: 'null'
          title: Comment
        geometry_change:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Geometry Change
          description: |

            Whether the update will create or destroy sub-blocks.
            - If set to `false`, no sub-blocks can be created nor destroyed, only sub-blocks that exist in the latest version can be updated.
            - If set to `true`:
                - New sub-blocks can be created and/or existing sub-blocks can be destroyed, but all columns must be provided.
                - Only `new`, `update`, and `delete` column operations are allowed as standalone operations.
                - `update_metadata` is allowed, but only when the target columns are being updated as part of the `update` operation, and only when there are no columns being renamed.
                - If `update_type` is set to `merge`, then all sub-blocks within a parent block must be provided.
        input_options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/AllInputOptions-Input'
              discriminator:
                propertyName: file_format
                mapping:
                  csv: '#/components/schemas/AllInputOptions-Input'
                  parquet: '#/components/schemas/AllInputOptions-Input'
            - type: 'null'
          title: Input Options
        lineage:
          anyOf:
            - $ref: '#/components/schemas/Lineage_V1_0_0-Input'
            - type: 'null'
          description: Lineage of the block model update
          x-api-preview: true
        update_type:
          $ref: '#/components/schemas/UpdateType'
          description: |

            Behaviour of the update, for blocks that are omitted from the update file.
            - If set to `replace`, the values for blocks that are omitted will be set to null, for the selected columns. If `geometry_change` is true, the geometry of any parent block that has no blocks in the update file will be reset to an un-subdivided state.
            - If set to `merge`, blocks that are omitted will be left unchanged, the values within those blocks will be the same as within the previous version.
          default: merge
      additionalProperties: false
      type: object
      required:
        - columns
      title: UpdateDataLite
    UpdateDataLite-Output:
      properties:
        columns:
          $ref: '#/components/schemas/UpdateColumnsLite-Output'
        comment:
          anyOf:
            - type: string
              maxLength: 250
            - type: 'null'
          title: Comment
        geometry_change:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Geometry Change
          description: |

            Whether the update will create or destroy sub-blocks.
            - If set to `false`, no sub-blocks can be created nor destroyed, only sub-blocks that exist in the latest version can be updated.
            - If set to `true`:
                - New sub-blocks can be created and/or existing sub-blocks can be destroyed, but all columns must be provided.
                - Only `new`, `update`, and `delete` column operations are allowed as standalone operations.
                - `update_metadata` is allowed, but only when the target columns are being updated as part of the `update` operation, and only when there are no columns being renamed.
                - If `update_type` is set to `merge`, then all sub-blocks within a parent block must be provided.
        input_options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/AllInputOptions-Output'
              discriminator:
                propertyName: file_format
                mapping:
                  csv: '#/components/schemas/AllInputOptions-Output'
                  parquet: '#/components/schemas/AllInputOptions-Output'
            - type: 'null'
          title: Input Options
        lineage:
          anyOf:
            - $ref: '#/components/schemas/Lineage_V1_0_0-Output'
            - type: 'null'
          description: Lineage of the block model update
          x-api-preview: true
        update_type:
          $ref: '#/components/schemas/UpdateType'
          description: |

            Behaviour of the update, for blocks that are omitted from the update file.
            - If set to `replace`, the values for blocks that are omitted will be set to null, for the selected columns. If `geometry_change` is true, the geometry of any parent block that has no blocks in the update file will be reset to an un-subdivided state.
            - If set to `merge`, blocks that are omitted will be left unchanged, the values within those blocks will be the same as within the previous version.
          default: merge
      additionalProperties: false
      type: object
      required:
        - columns
      title: UpdateDataLite
    UpdateDataWithVersion:
      properties:
        base_version_uuid:
          type: string
          format: uuid
          title: Base Version Uuid
        bbox:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/BBox'
                - $ref: '#/components/schemas/BBoxXYZ'
            - type: 'null'
          title: Bbox
        columns:
          $ref: '#/components/schemas/UpdateColumns'
        comment:
          anyOf:
            - type: string
              maxLength: 250
            - type: 'null'
          title: Comment
        geometry_change:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Geometry Change
          description: |

            Whether the update will create or destroy sub-blocks.
            - If set to `false`, no sub-blocks can be created nor destroyed, only sub-blocks that exist in the latest version can be updated.
            - If set to `true`:
                - New sub-blocks can be created and/or existing sub-blocks can be destroyed, but all columns must be provided.
                - Only `new`, `update`, and `delete` column operations are allowed as standalone operations.
                - `update_metadata` is allowed, but only when the target columns are being updated as part of the `update` operation, and only when there are no columns being renamed.
                - If `update_type` is set to `merge`, then all sub-blocks within a parent block must be provided.
        lineage:
          anyOf:
            - $ref: '#/components/schemas/Lineage_V1_0_0-Output'
            - type: 'null'
          description: Lineage of the block model update
          x-api-preview: true
        update_type:
          $ref: '#/components/schemas/UpdateType'
          description: |

            Behaviour of the update, for blocks that are omitted from the update file.
            - If set to `replace`, the values for blocks that are omitted will be set to null, for the selected columns. If `geometry_change` is true, the geometry of any parent block that has no blocks in the update file will be reset to an un-subdivided state.
            - If set to `merge`, blocks that are omitted will be left unchanged, the values within those blocks will be the same as within the previous version.
          default: merge
      additionalProperties: false
      type: object
      required:
        - base_version_uuid
        - columns
      title: UpdateDataWithVersion
    UpdateErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - 'Error validating input data for lite update of block model 11111111-2222-3333-4444-555555555555, against latest version 99999999-2222-3333-4444-555555555555: Reserved column(s): i cannot be renamed.'
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 422
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Unprocessable Entity
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/unprocessable-entity
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: UpdateErrorResponse
    UpdateMetadata:
      properties:
        col_id:
          type: string
          title: Col Id
          description: The ID of the column, a UUID for non-system columns
          examples:
            - 618d6339-2fa7-4dfd-9c7f-c0b12016639e
        values:
          $ref: '#/components/schemas/UpdateMetadataValues'
      additionalProperties: false
      type: object
      required:
        - col_id
        - values
      title: UpdateMetadata
    UpdateMetadataLite:
      properties:
        title:
          type: string
          title: Title
          description: The original human-readable label used to identify the column
        values:
          $ref: '#/components/schemas/UpdateMetadataValues'
      additionalProperties: false
      type: object
      required:
        - title
        - values
      title: UpdateMetadataLite
    UpdateMetadataValues:
      properties:
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: The new human-readable label for the column
        unit_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Unit Id
          description: The new unit ID for the column
      additionalProperties: false
      type: object
      title: UpdateMetadataValues
    UpdateType:
      type: string
      enum:
        - merge
        - replace
      title: UpdateType
    UpdateWithUrl:
      properties:
        changes:
          anyOf:
            - $ref: '#/components/schemas/UpdateDataWithVersion'
            - $ref: '#/components/schemas/UpdateDataLite-Output'
          title: Changes
        job_url:
          type: string
          minLength: 1
          format: uri
          title: Job Url
        job_uuid:
          type: string
          format: uuid
          title: Job Uuid
        upload_url:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          title: Upload Url
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
      additionalProperties: false
      type: object
      required:
        - changes
        - job_url
        - job_uuid
        - version_uuid
      title: UpdateWithUrl
    UpdatedResponse:
      properties:
        job_url:
          type: string
          minLength: 1
          format: uri
          title: Job Url
      additionalProperties: false
      type: object
      required:
        - job_url
      title: UpdatedResponse
    UserInfo:
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email Address
          description: The primary email address of the user. Can be null if an error occurred while retrieving this information.
          examples:
            - kim@example.test
        id:
          type: string
          format: uuid
          title: User ID
          description: The ID of the user
          examples:
            - 59b73891-5538-4e45-ae67-f8c5b00d7405
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Full Name
          description: The full name of the user. Can be null if an error occurred while retrieving this information.
          examples:
            - Kim Kim
      additionalProperties: false
      type: object
      required:
        - id
      title: UserInfo
    ValidationErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - |-
              1 validation error for 'HTTP Request'
              body -> block_rotation
                value is not a valid list (type=type_error.list)
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 422
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - 1 validation error for Request
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/block-model-service/validation
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: ValidationErrorResponse
    Version:
      properties:
        base_version_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Base Version Id
          description: |-
            Version the update was applied to. This will be the same as `parent_version_id`, except for
            updates made by Leapfrog, where it is the current local version when the block model is published. This is null if this
            is the first version.
          examples:
            - 4
        bbox:
          anyOf:
            - $ref: '#/components/schemas/BBox'
            - type: 'null'
          description: |

            Bounding box of data updated between this version and last version. Will be None for the initial version, and updates
            that only delete and rename columns.
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        comment:
          type: string
          title: Comment
          description: User-supplied comment
          default: ''
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the version was created
        created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who performed the action that created the version
        geoscience_version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Geoscience Version Id
          description: ID of the Geoscience Object Service object version associated with this block model version
          examples:
            - '1234567890'
        mapping:
          $ref: '#/components/schemas/Mapping'
          description: Columns within this version
        parent_version_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Parent Version Id
          description: Previous version. 0 if this is the first version.
          examples:
            - 4
        version_id:
          type: integer
          title: Version Id
          description: |-
            Identifier for the version within a block model as a monotonically increasing integer, where 1 is
            the `version_id` for the version created upon creation of the block model.
          examples:
            - 5
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
          description: A universally unique identifier for the version
          examples:
            - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - created_at
        - created_by
        - mapping
        - version_id
        - version_uuid
      title: Version
      description: API output
    VersionChanges:
      properties:
        blocks_uploaded:
          anyOf:
            - type: integer
            - type: 'null'
          title: Blocks Uploaded
        columns:
          $ref: '#/components/schemas/VersionColumnChanges'
        total_blocks:
          type: integer
          title: Total Blocks
        update_type:
          anyOf:
            - $ref: '#/components/schemas/UpdateType'
            - type: 'null'
          description: |

            Behaviour of the update, for blocks that are omitted from the update file.
            - If set to `replace`, the values for blocks that are omitted will be set to null, for the selected columns. If `geometry_change` is true, the geometry of any parent block that has no blocks in the update file will be reset to an un-subdivided state.
            - If set to `merge`, blocks that are omitted will be left unchanged, the values within those blocks will be the same as within the previous version.

            This is null if there were no columns updated and `geometry_change` was not set to false.
      additionalProperties: false
      type: object
      required:
        - columns
        - total_blocks
      title: VersionChanges
    VersionColumnChanges:
      properties:
        deleted:
          items:
            type: string
          type: array
          title: Deleted
          default: []
        metadata_updated:
          anyOf:
            - items:
                $ref: '#/components/schemas/UpdateMetadataLite'
              type: array
            - type: 'null'
          title: Metadata Updated
          default: []
        new:
          items:
            type: string
          type: array
          title: New
          default: []
        renamed:
          items:
            $ref: '#/components/schemas/ColumnRename'
          type: array
          title: Renamed
          default: []
        updated:
          items:
            type: string
          type: array
          title: Updated
          default: []
      additionalProperties: false
      type: object
      title: VersionColumnChanges
    VersionWithChanges:
      properties:
        base_version_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Base Version Id
          description: |-
            Version the update was applied to. This will be the same as `parent_version_id`, except for
            updates made by Leapfrog, where it is the current local version when the block model is published. This is null if this
            is the first version.
          examples:
            - 4
        bbox:
          anyOf:
            - $ref: '#/components/schemas/BBox'
            - type: 'null'
          description: |

            Bounding box of data updated between this version and last version. Will be None for the initial version, and updates
            that only delete and rename columns.
        bm_uuid:
          type: string
          format: uuid
          title: Bm Uuid
          description: ID of the block model
          examples:
            - e3c277c2-edc6-4a7a-8380-251dd19231f2
        changes:
          $ref: '#/components/schemas/VersionChanges'
        comment:
          type: string
          title: Comment
          description: User-supplied comment
          default: ''
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the version was created
        created_by:
          $ref: '#/components/schemas/UserInfo'
          description: User who performed the action that created the version
        geoscience_version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Geoscience Version Id
          description: ID of the Geoscience Object Service object version associated with this block model version
          examples:
            - '1234567890'
        mapping:
          $ref: '#/components/schemas/Mapping'
          description: Columns within this version
        parent_version_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Parent Version Id
          description: Previous version. 0 if this is the first version.
          examples:
            - 4
        version_id:
          type: integer
          title: Version Id
          description: |-
            Identifier for the version within a block model as a monotonically increasing integer, where 1 is
            the `version_id` for the version created upon creation of the block model.
          examples:
            - 5
        version_uuid:
          type: string
          format: uuid
          title: Version Uuid
          description: A universally unique identifier for the version
          examples:
            - 3e9ce8de-f6ba-4920-8c6e-0882e90f0ed7
      additionalProperties: false
      type: object
      required:
        - bm_uuid
        - changes
        - created_at
        - created_by
        - mapping
        - version_id
        - version_uuid
      title: VersionWithChanges
    WorkspaceGoneErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - The requested resource was not found.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 410
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Workspace soft deleted.
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/workspace/gone
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: WorkspaceGoneErrorResponse
    WorkspaceNotFoundErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to this occurrence of the problem.
          examples:
            - The requested resource is deleted.
        status:
          type: integer
          title: Status
          description: The HTTP status code generated by the origin server for this occurrence of the problem.
          examples:
            - 404
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem type.
          examples:
            - Workspace not found.
        type:
          type: string
          title: Type
          description: A URI reference that is the primary identifier of the problem type.
          examples:
            - https://seequent.com/error-codes/workspace/not-found
      type: object
      required:
        - detail
        - status
        - title
        - type
      title: WorkspaceNotFoundErrorResponse
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
