Hex · Capability

Hex API

API specification for the Hex External API

Run with Naftiko HexaAPI

What You Can Do

POST
Createpresignedurl — Create an embedded url for a project
/v1/embedding/createPresignedUrl/{projectId}
POST
Createproject — Create a new project. Creates a new project in the workspace with the specified title. Optionally provide a description and project language.
/v1/projects
GET
Listprojects — List all viewable projects, sorted by most recently created first.
/v1/projects
GET
Getproject — Get metadata about a single project.
/v1/projects/{projectId}
PATCH
Updateproject — Use this endpoint to add or remove a status (including endorsements) from a project
/v1/projects/{projectId}
GET
Getqueriedtables — Given a project ID, return the list of warehouse tables queried in the project.
/v1/projects/{projectId}/queriedTables
PATCH
Editprojectsharingcollections — Add a project to collections or remove it from collections. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app". Workspace tokens calling this endpo
/v1/projects/{projectId}/sharing/collections
PATCH
Editprojectsharingorgandpublic — Update workspace or public-web sharing for a project. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
/v1/projects/{projectId}/sharing/workspaceAndPublic
PATCH
Editprojectsharinggroups — Add groups to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
/v1/projects/{projectId}/sharing/groups
PATCH
Editprojectsharingusers — Add users to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
/v1/projects/{projectId}/sharing/users
POST
Ingestsemanticproject — Ingest a semantic project from a zip file. This API endpoint is subject to a maximum of 3 requests per minute.
/v1/semantic-(projects|models)/{semanticProjectId}/ingest
PATCH
Updatesemanticproject — Use this endpoint to add or remove a status (including endorsements) from datasets and views within a semantic project This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request fails and no change
/v1/semantic-(projects|models)/{semanticProjectId}
POST
Runproject — Trigger a run of the latest published version of a project. This API endpoint is subject to a maximum of 20 requests per minute and 60 requests per hour.
/v1/projects/{projectId}/runs
GET
Getprojectruns — Get the status of runs of a project. By default, all run types are returned (API-triggered, scheduled, and publish/refresh runs). Use the `runTriggerFilter` parameter to filter to a specific type.
/v1/projects/{projectId}/runs
GET
Getrunstatus — Get the status of a project run.
/v1/projects/{projectId}/runs/{runId}
DELETE
Cancelrun — Cancel a project run.
/v1/projects/{projectId}/runs/{runId}
GET
Getchartimagefromrun — Get the rendered PNG image of a chart cell from a completed run by staticCellId. The "staticId" path parameter should be the cell's staticId (which remains stable across project versions), as opposed to its cellId (which is scoped to a spec
/v1/projects/{projectId}/runs/{runId}/cells/{staticId}/image
GET
Getgroup — GET /v1/groups/{groupId}
/v1/groups/{groupId}
DELETE
Deletegroup — DELETE /v1/groups/{groupId}
/v1/groups/{groupId}
PATCH
Editgroup — PATCH /v1/groups/{groupId}
/v1/groups/{groupId}
GET
Listgroups — GET /v1/groups
/v1/groups
POST
Creategroup — POST /v1/groups
/v1/groups
GET
Getdataconnection — GET /v1/data-connections/{dataConnectionId}
/v1/data-connections/{dataConnectionId}
PATCH
Editdataconnection — PATCH /v1/data-connections/{dataConnectionId}
/v1/data-connections/{dataConnectionId}
GET
Listdataconnections — GET /v1/data-connections
/v1/data-connections
POST
Createdataconnection — POST /v1/data-connections
/v1/data-connections
PATCH
Updatedataconnectionschema — Use this endpoint to add or remove a status (including endorsements) from databases, schemas, and tables within a data connection This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request fails an
/v1/data-connections/{dataConnectionId}/schema
GET
Me — GET /v1/users/me
/v1/users/me
GET
Listusers — GET /v1/users
/v1/users
POST
Deactivateuser — POST /v1/users/{userId}/deactivate
/v1/users/{userId}/deactivate
GET
Getcollection — GET /v1/collections/{collectionId}
/v1/collections/{collectionId}
PATCH
Editcollection — PATCH /v1/collections/{collectionId}
/v1/collections/{collectionId}
GET
Listcollections — GET /v1/collections
/v1/collections
POST
Createcollection — POST /v1/collections
/v1/collections
GET
Listdraftguides — GET /v1/guides/draft/list
/v1/guides/draft/list
PUT
Upsertguidedraft — Update or create guide drafts by filePath. Accepts a dictionary mapping file paths to their contents. For each file: - If the guide doesn't exist, it will be created. - If the guide exists but has no draft, a new draft will be created. - If
/v1/guides/draft
POST
Publishguidedrafts — Publish all currently drafted guides.
/v1/guides/publish
DELETE
Deleteguidedraft — DELETE /v1/guides/draft/{orgGuideFileId}
/v1/guides/draft/{orgGuideFileId}
GET
Listcells — List all cells Returns cells from the draft version of the project only, not the published app. Requires a project id for filtering. For SQL and CODE cells, includes the source code content.
/v1/cells
POST
Createcell — Create a new cell Creates a new cell in the draft version of a project. Currently only CODE and SQL cell types are supported. Requires EDIT_PROJECT_CONTENTS permission on the project.
/v1/cells
GET
Getcell — Get a single cell by ID Returns cells from the draft version of the project only, not the published app. Returns the cell details including id, staticId, cellType, label, dataConnectionId, source contents (for CODE and SQL cells), and proje
/v1/cells/{cellId}
PATCH
Updatecell — Update a cell's source and/or data connection Updates the source code and/or data connection ID for a cell. For SQL cells, can update SQL source and data connection ID. For code cells, can update code source. Requires EDIT_PROJECT_CONTENTS
/v1/cells/{cellId}
DELETE
Deletecell — Delete a cell Permanently deletes a cell from the draft version of a project. Requires EDIT_PROJECT_CONTENTS permission on the project containing the cell.
/v1/cells/{cellId}
GET
Getchartimagefromlogic — Get the rendered PNG image of a chart cell from the current notebook session by cellId. The "cellId" path parameter should be the cell's ID (scoped to a specific version), as opposed to its staticId (which remains stable across versions). R
/v1/cells/{cellId}/image

MCP Tools

createpresignedurl

Create an embedded url for a project

createproject

Create a new project. Creates a new project in the workspace with the specified title. Optionally provide a description and project language.

listprojects

List all viewable projects, sorted by most recently created first.

read-only idempotent
getproject

Get metadata about a single project.

read-only idempotent
updateproject

Use this endpoint to add or remove a status (including endorsements) from a project

getqueriedtables

Given a project ID, return the list of warehouse tables queried in the project.

read-only idempotent
editprojectsharingcollections

Add a project to collections or remove it from collections. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app". Workspace tokens calling this endpo

editprojectsharingorgandpublic

Update workspace or public-web sharing for a project. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".

editprojectsharinggroups

Add groups to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".

editprojectsharingusers

Add users to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".

ingestsemanticproject

Ingest a semantic project from a zip file. This API endpoint is subject to a maximum of 3 requests per minute.

updatesemanticproject

Use this endpoint to add or remove a status (including endorsements) from datasets and views within a semantic project This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request fails and no change

runproject

Trigger a run of the latest published version of a project. This API endpoint is subject to a maximum of 20 requests per minute and 60 requests per hour.

getprojectruns

Get the status of runs of a project. By default, all run types are returned (API-triggered, scheduled, and publish/refresh runs). Use the `runTriggerFilter` parameter to filter to a specific type.

read-only idempotent
getrunstatus

Get the status of a project run.

read-only idempotent
cancelrun

Cancel a project run.

idempotent
getchartimagefromrun

Get the rendered PNG image of a chart cell from a completed run by staticCellId. The "staticId" path parameter should be the cell's staticId (which remains stable across project versions), as opposed to its cellId (which is scoped to a spec

read-only idempotent
getgroup

GET /v1/groups/{groupId}

read-only idempotent
deletegroup

DELETE /v1/groups/{groupId}

idempotent
editgroup

PATCH /v1/groups/{groupId}

listgroups

GET /v1/groups

read-only idempotent
creategroup

POST /v1/groups

getdataconnection

GET /v1/data-connections/{dataConnectionId}

read-only idempotent
editdataconnection

PATCH /v1/data-connections/{dataConnectionId}

listdataconnections

GET /v1/data-connections

read-only idempotent
createdataconnection

POST /v1/data-connections

updatedataconnectionschema

Use this endpoint to add or remove a status (including endorsements) from databases, schemas, and tables within a data connection This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request fails an

me

GET /v1/users/me

read-only idempotent
listusers

GET /v1/users

read-only idempotent
deactivateuser

POST /v1/users/{userId}/deactivate

getcollection

GET /v1/collections/{collectionId}

read-only idempotent
editcollection

PATCH /v1/collections/{collectionId}

listcollections

GET /v1/collections

read-only idempotent
createcollection

POST /v1/collections

listdraftguides

GET /v1/guides/draft/list

read-only idempotent
upsertguidedraft

Update or create guide drafts by filePath. Accepts a dictionary mapping file paths to their contents. For each file: - If the guide doesn't exist, it will be created. - If the guide exists but has no draft, a new draft will be created. - If

idempotent
publishguidedrafts

Publish all currently drafted guides.

deleteguidedraft

DELETE /v1/guides/draft/{orgGuideFileId}

idempotent
listcells

List all cells Returns cells from the draft version of the project only, not the published app. Requires a project id for filtering. For SQL and CODE cells, includes the source code content.

read-only idempotent
createcell

Create a new cell Creates a new cell in the draft version of a project. Currently only CODE and SQL cell types are supported. Requires EDIT_PROJECT_CONTENTS permission on the project.

getcell

Get a single cell by ID Returns cells from the draft version of the project only, not the published app. Returns the cell details including id, staticId, cellType, label, dataConnectionId, source contents (for CODE and SQL cells), and proje

read-only idempotent
updatecell

Update a cell's source and/or data connection Updates the source code and/or data connection ID for a cell. For SQL cells, can update SQL source and data connection ID. For code cells, can update code source. Requires EDIT_PROJECT_CONTENTS

deletecell

Delete a cell Permanently deletes a cell from the draft version of a project. Requires EDIT_PROJECT_CONTENTS permission on the project containing the cell.

idempotent
getchartimagefromlogic

Get the rendered PNG image of a chart cell from the current notebook session by cellId. The "cellId" path parameter should be the cell's ID (scoped to a specific version), as opposed to its staticId (which remains stable across versions). R

read-only idempotent

Capability Spec

hexa-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Hex API
  description: API specification for the Hex External API
  tags:
  - Hexa
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: hexa
    baseUri: https://app.hex.tech/api
    description: Hex API HTTP API.
    authentication:
      type: bearer
      token: '{{HEXA_TOKEN}}'
    resources:
    - name: v1-embedding-createpresignedurl-projectid
      path: /v1/embedding/createPresignedUrl/{projectId}
      operations:
      - name: createpresignedurl
        method: POST
        description: Create an embedded url for a project
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects
      path: /v1/projects
      operations:
      - name: createproject
        method: POST
        description: Create a new project. Creates a new project in the workspace with the specified title. Optionally provide
          a description and project language.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: listprojects
        method: GET
        description: List all viewable projects, sorted by most recently created first.
        inputParameters:
        - name: includeArchived
          in: query
          type: boolean
        - name: includeComponents
          in: query
          type: boolean
        - name: includeTrashed
          in: query
          type: boolean
        - name: includeSharing
          in: query
          type: boolean
        - name: statuses
          in: query
          type: array
        - name: categories
          in: query
          type: array
        - name: creatorEmail
          in: query
          type: string
        - name: ownerEmail
          in: query
          type: string
        - name: collectionId
          in: query
          type: string
        - name: limit
          in: query
          type: string
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: sortBy
          in: query
          type: string
        - name: sortDirection
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid
      path: /v1/projects/{projectId}
      operations:
      - name: getproject
        method: GET
        description: Get metadata about a single project.
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: includeSharing
          in: query
          type: boolean
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updateproject
        method: PATCH
        description: Use this endpoint to add or remove a status (including endorsements) from a project
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-queriedtables
      path: /v1/projects/{projectId}/queriedTables
      operations:
      - name: getqueriedtables
        method: GET
        description: Given a project ID, return the list of warehouse tables queried in the project.
        inputParameters:
        - name: limit
          in: query
          type: string
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-sharing-collections
      path: /v1/projects/{projectId}/sharing/collections
      operations:
      - name: editprojectsharingcollections
        method: PATCH
        description: Add a project to collections or remove it from collections. For projects, use `CAN_VIEW` to grant the
          UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app". Workspace
          tokens calling this endpo
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-sharing-workspaceandpublic
      path: /v1/projects/{projectId}/sharing/workspaceAndPublic
      operations:
      - name: editprojectsharingorgandpublic
        method: PATCH
        description: Update workspace or public-web sharing for a project. For projects, use `CAN_VIEW` to grant the UI permission
          labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-sharing-groups
      path: /v1/projects/{projectId}/sharing/groups
      operations:
      - name: editprojectsharinggroups
        method: PATCH
        description: Add groups to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to
          grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-sharing-users
      path: /v1/projects/{projectId}/sharing/users
      operations:
      - name: editprojectsharingusers
        method: PATCH
        description: Add users to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to
          grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-semantic-projects-models-semanticprojectid-in
      path: /v1/semantic-(projects|models)/{semanticProjectId}/ingest
      operations:
      - name: ingestsemanticproject
        method: POST
        description: Ingest a semantic project from a zip file. This API endpoint is subject to a maximum of 3 requests per
          minute.
        inputParameters:
        - name: semanticProjectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-semantic-projects-models-semanticprojectid
      path: /v1/semantic-(projects|models)/{semanticProjectId}
      operations:
      - name: updatesemanticproject
        method: PATCH
        description: Use this endpoint to add or remove a status (including endorsements) from datasets and views within a
          semantic project This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request
          fails and no change
        inputParameters:
        - name: semanticProjectId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-runs
      path: /v1/projects/{projectId}/runs
      operations:
      - name: runproject
        method: POST
        description: Trigger a run of the latest published version of a project. This API endpoint is subject to a maximum
          of 20 requests per minute and 60 requests per hour.
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: flag-config-override
          in: header
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: getprojectruns
        method: GET
        description: Get the status of runs of a project. By default, all run types are returned (API-triggered, scheduled,
          and publish/refresh runs). Use the `runTriggerFilter` parameter to filter to a specific type.
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: limit
          in: query
          type: string
        - name: offset
          in: query
          type: string
        - name: statusFilter
          in: query
          type: string
        - name: runTriggerFilter
          in: query
          type: string
          description: 'Filter by how the run was triggered Valid values: `API`, `SCHEDULED`, `APP_REFRESH`'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-runs-runid
      path: /v1/projects/{projectId}/runs/{runId}
      operations:
      - name: getrunstatus
        method: GET
        description: Get the status of a project run.
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: runId
          in: path
          type: string
          required: true
        - name: enable-expanded-stats
          in: header
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: cancelrun
        method: DELETE
        description: Cancel a project run.
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: runId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-projectid-runs-runid-cells-staticid-
      path: /v1/projects/{projectId}/runs/{runId}/cells/{staticId}/image
      operations:
      - name: getchartimagefromrun
        method: GET
        description: Get the rendered PNG image of a chart cell from a completed run by staticCellId. The "staticId" path
          parameter should be the cell's staticId (which remains stable across project versions), as opposed to its cellId
          (which is scoped to a spec
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
        - name: runId
          in: path
          type: string
          required: true
        - name: staticId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-groups-groupid
      path: /v1/groups/{groupId}
      operations:
      - name: getgroup
        method: GET
        description: GET /v1/groups/{groupId}
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletegroup
        method: DELETE
        description: DELETE /v1/groups/{groupId}
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: editgroup
        method: PATCH
        description: PATCH /v1/groups/{groupId}
        inputParameters:
        - name: groupId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-groups
      path: /v1/groups
      operations:
      - name: listgroups
        method: GET
        description: GET /v1/groups
        inputParameters:
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: limit
          in: query
          type: string
        - name: sortBy
          in: query
          type: string
        - name: sortDirection
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: creategroup
        method: POST
        description: POST /v1/groups
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-data-connections-dataconnectionid
      path: /v1/data-connections/{dataConnectionId}
      operations:
      - name: getdataconnection
        method: GET
        description: GET /v1/data-connections/{dataConnectionId}
        inputParameters:
        - name: dataConnectionId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: editdataconnection
        method: PATCH
        description: PATCH /v1/data-connections/{dataConnectionId}
        inputParameters:
        - name: dataConnectionId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-data-connections
      path: /v1/data-connections
      operations:
      - name: listdataconnections
        method: GET
        description: GET /v1/data-connections
        inputParameters:
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: limit
          in: query
          type: string
        - name: sortBy
          in: query
          type: string
        - name: sortDirection
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createdataconnection
        method: POST
        description: POST /v1/data-connections
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-data-connections-dataconnectionid-schema
      path: /v1/data-connections/{dataConnectionId}/schema
      operations:
      - name: updatedataconnectionschema
        method: PATCH
        description: Use this endpoint to add or remove a status (including endorsements) from databases, schemas, and tables
          within a data connection This endpoint uses atomic semantics - if any update in the batch fails validation, the
          entire request fails an
        inputParameters:
        - name: dataConnectionId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-users-me
      path: /v1/users/me
      operations:
      - name: me
        method: GET
        description: GET /v1/users/me
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-users
      path: /v1/users
      operations:
      - name: listusers
        method: GET
        description: GET /v1/users
        inputParameters:
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: limit
          in: query
          type: string
        - name: sortBy
          in: query
          type: string
        - name: sortDirection
          in: query
          type: string
        - name: groupId
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-users-userid-deactivate
      path: /v1/users/{userId}/deactivate
      operations:
      - name: deactivateuser
        method: POST
        description: POST /v1/users/{userId}/deactivate
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-collections-collectionid
      path: /v1/collections/{collectionId}
      operations:
      - name: getcollection
        method: GET
        description: GET /v1/collections/{collectionId}
        inputParameters:
        - name: collectionId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: editcollection
        method: PATCH
        description: PATCH /v1/collections/{collectionId}
        inputParameters:
        - name: collectionId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-collections
      path: /v1/collections
      operations:
      - name: listcollections
        method: GET
        description: GET /v1/collections
        inputParameters:
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: limit
          in: query
          type: string
        - name: sortBy
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createcollection
        method: POST
        description: POST /v1/collections
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-guides-draft-list
      path: /v1/guides/draft/list
      operations:
      - name: listdraftguides
        method: GET
        description: GET /v1/guides/draft/list
        inputParameters:
        - name: limit
          in: query
          type: string
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        - name: externalSource
          in: query
          type: string
          description: 'A JSON stringified, URI encoded external source locator example: encodeURIComponent(JSON.stringify({"source":"github","owner":"my-org","repo":"my-repo","baseUrl'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-guides-draft
      path: /v1/guides/draft
      operations:
      - name: upsertguidedraft
        method: PUT
        description: 'Update or create guide drafts by filePath. Accepts a dictionary mapping file paths to their contents.
          For each file: - If the guide doesn''t exist, it will be created. - If the guide exists but has no draft, a new
          draft will be created. - If'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-guides-publish
      path: /v1/guides/publish
      operations:
      - name: publishguidedrafts
        method: POST
        description: Publish all currently drafted guides.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-guides-draft-orgguidefileid
      path: /v1/guides/draft/{orgGuideFileId}
      operations:
      - name: deleteguidedraft
        method: DELETE
        description: DELETE /v1/guides/draft/{orgGuideFileId}
        inputParameters:
        - name: orgGuideFileId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-cells
      path: /v1/cells
      operations:
      - name: listcells
        method: GET
        description: List all cells Returns cells from the draft version of the project only, not the published app. Requires
          a project id for filtering. For SQL and CODE cells, includes the source code content.
        inputParameters:
        - name: projectId
          in: query
          type: string
          required: true
        - name: limit
          in: query
          type: string
        - name: after
          in: query
          type: string
        - name: before
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createcell
        method: POST
        description: Create a new cell Creates a new cell in the draft version of a project. Currently only CODE and SQL cell
          types are supported. Requires EDIT_PROJECT_CONTENTS permission on the project.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-cells-cellid
      path: /v1/cells/{cellId}
      operations:
      - name: getcell
        method: GET
        description: Get a single cell by ID Returns cells from the draft version of the project only, not the published app.
          Returns the cell details including id, staticId, cellType, label, dataConnectionId, source contents (for CODE and
          SQL cells), and proje
        inputParameters:
        - name: cellId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updatecell
        method: PATCH
        description: 'Update a cell''s source and/or data connection Updates the source code and/or data connection ID for
          a cell. For SQL cells, can update SQL source and data connection ID. For code cells, can update code source. Requires
          EDIT_PROJECT_CONTENTS '
        inputParameters:
        - name: cellId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletecell
        method: DELETE
        description: Delete a cell Permanently deletes a cell from the draft version of a project. Requires EDIT_PROJECT_CONTENTS
          permission on the project containing the cell.
        inputParameters:
        - name: cellId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-cells-cellid-image
      path: /v1/cells/{cellId}/image
      operations:
      - name: getchartimagefromlogic
        method: GET
        description: Get the rendered PNG image of a chart cell from the current notebook session by cellId. The "cellId"
          path parameter should be the cell's ID (scoped to a specific version), as opposed to its staticId (which remains
          stable across versions). R
        inputParameters:
        - name: cellId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: hexa-rest
    description: REST adapter for Hex API.
    resources:
    - path: /v1/embedding/createPresignedUrl/{projectId}
      name: createpresignedurl
      operations:
      - method: POST
        name: createpresignedurl
        description: Create an embedded url for a project
        call: hexa.createpresignedurl
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects
      name: createproject
      operations:
      - method: POST
        name: createproject
        description: Create a new project. Creates a new project in the workspace with the specified title. Optionally provide
          a description and project language.
        call: hexa.createproject
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects
      name: listprojects
      operations:
      - method: GET
        name: listprojects
        description: List all viewable projects, sorted by most recently created first.
        call: hexa.listprojects
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}
      name: getproject
      operations:
      - method: GET
        name: getproject
        description: Get metadata about a single project.
        call: hexa.getproject
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}
      name: updateproject
      operations:
      - method: PATCH
        name: updateproject
        description: Use this endpoint to add or remove a status (including endorsements) from a project
        call: hexa.updateproject
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/queriedTables
      name: getqueriedtables
      operations:
      - method: GET
        name: getqueriedtables
        description: Given a project ID, return the list of warehouse tables queried in the project.
        call: hexa.getqueriedtables
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/sharing/collections
      name: editprojectsharingcollections
      operations:
      - method: PATCH
        name: editprojectsharingcollections
        description: Add a project to collections or remove it from collections. For projects, use `CAN_VIEW` to grant the
          UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app". Workspace
          tokens calling this endpo
        call: hexa.editprojectsharingcollections
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/sharing/workspaceAndPublic
      name: editprojectsharingorgandpublic
      operations:
      - method: PATCH
        name: editprojectsharingorgandpublic
        description: Update workspace or public-web sharing for a project. For projects, use `CAN_VIEW` to grant the UI permission
          labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        call: hexa.editprojectsharingorgandpublic
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/sharing/groups
      name: editprojectsharinggroups
      operations:
      - method: PATCH
        name: editprojectsharinggroups
        description: Add groups to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to
          grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        call: hexa.editprojectsharinggroups
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/sharing/users
      name: editprojectsharingusers
      operations:
      - method: PATCH
        name: editprojectsharingusers
        description: Add users to a project or update/remove their project sharing access. For projects, use `CAN_VIEW` to
          grant the UI permission labeled "Can explore". Use `APP_ONLY` to grant the UI permission labeled "Can view app".
        call: hexa.editprojectsharingusers
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/semantic-(projects|models)/{semanticProjectId}/ingest
      name: ingestsemanticproject
      operations:
      - method: POST
        name: ingestsemanticproject
        description: Ingest a semantic project from a zip file. This API endpoint is subject to a maximum of 3 requests per
          minute.
        call: hexa.ingestsemanticproject
        with:
          semanticProjectId: rest.semanticProjectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/semantic-(projects|models)/{semanticProjectId}
      name: updatesemanticproject
      operations:
      - method: PATCH
        name: updatesemanticproject
        description: Use this endpoint to add or remove a status (including endorsements) from datasets and views within a
          semantic project This endpoint uses atomic semantics - if any update in the batch fails validation, the entire request
          fails and no change
        call: hexa.updatesemanticproject
        with:
          semanticProjectId: rest.semanticProjectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/runs
      name: runproject
      operations:
      - method: POST
        name: runproject
        description: Trigger a run of the latest published version of a project. This API endpoint is subject to a maximum
          of 20 requests per minute and 60 requests per hour.
        call: hexa.runproject
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/runs
      name: getprojectruns
      operations:
      - method: GET
        name: getprojectruns
        description: Get the status of runs of a project. By default, all run types are returned (API-triggered, scheduled,
          and publish/refresh runs). Use the `runTriggerFilter` parameter to filter to a specific type.
        call: hexa.getprojectruns
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/runs/{runId}
      name: getrunstatus
      operations:
      - method: GET
        name: getrunstatus
        description: Get the status of a project run.
        call: hexa.getrunstatus
        with:
          projectId: rest.projectId
          runId: rest.runId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/runs/{runId}
      name: cancelrun
      operations:
      - method: DELETE
        name: cancelrun
        description: Cancel a project run.
        call: hexa.cancelrun
        with:
          projectId: rest.projectId
          runId: rest.runId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectId}/runs/{runId}/cells/{staticId}/image
      name: getchartimagefromrun
      operations:
      - method: GET
        name: getchartimagefromrun
        description: Get the rendered PNG image of a chart cell from a completed run by staticCellId. The "staticId" path
          parameter should be the cell's staticId (which remains stable across project versions), as opposed to its cellId
          (which is scoped to a spec
        call: hexa.getchartimagefromrun
        with:
          project

# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hexa/refs/heads/main/capabilities/hexa-capability.yaml