Update project

Updates project metadata, connection info, and/or replaces MDL

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Update any subset of a project's fields — data source connection, display name, language, timezone — and optionally replace its MDL. Send only the fields you want to change; an empty body is a 400.

MDL replacement works for both project types, but the write path differs by type. Everything else on this endpoint behaves the same either way.

Basic Usage

Request

{
  "displayName": "Revenue Analytics",
  "language": "EN",
  "timezone": "Europe/London"
}

Response

{
  "updatedProject": {
    "id": 123,
    "type": "POSTGRES",
    "projectType": "CLASSIC",
    "displayName": "Revenue Analytics",
    "createdAt": "2025-09-11T12:34:56Z",
    "updatedAt": "2025-09-12T09:02:11Z",
    "connectionInfo": {
      "host": "db.internal",
      "port": 5432,
      "user": "app",
      "password": "******",
      "database": "warehouse",
      "ssl": true
    },
    "language": "EN",
    "timezone": "Europe/London"
  }
}

Updating the Data Source

Pass type and connectionInfo to repoint the project, and testConnection: true to validate the credentials before they are saved. connectionInfo is merged into the existing one, so you can send just the fields that changed — unless you also change type, in which case supply the full connection.

An agentic project created without a data source is connected the same way: send type and connectionInfo on this endpoint.

Replacing MDL

Passing mdl replaces the project's models and columns, applies relationships and views on a best-effort basis, and re-deploys. The manifest is validated before anything is written, so a malformed one returns 400 and leaves the project exactly as it was — including the other fields in the same request.

Where the manifest lands depends on the project type:

  • Classic projects — the manifest is stored in the database and deployed. If the deploy fails it is retried twice; a still-failing deploy is reported in mdlUpdate.warnings.deploy rather than failing the request, so the manifest is saved but not yet live.
  • Agentic projects — the data model is Git-backed, so the manifest is persisted and committed to the project's shared-data repository, then deployed from there — the same path the modeling UI takes. The response adds mdlUpdate.commitSha for that commit.

Best-effort failures on either path come back as warnings alongside a 200, not as errors.

Request

{
  "mdl": {
    "models": [
      {
        "name": "orders",
        "columns": [
          { "name": "order_id", "type": "VARCHAR", "notNull": true },
          { "name": "amount", "type": "DOUBLE" }
        ],
        "primaryKey": "order_id",
        "tableReference": { "catalog": "memory", "schema": "main", "table": "orders" }
      }
    ],
    "relationships": [],
    "views": []
  }
}

Response (agentic project)

{
  "updatedProject": { "...": "..." },
  "mdlUpdate": {
    "commitSha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
    "warnings": {
      "relationships": [],
      "views": ["View \"sales_by_city\" failed: question is required"]
    }
  }
}
📘

Agentic MDL updates are serialized, not merged

An agentic project can only have one deployment running at a time. If another one is already in flight — a modeling change from the UI, a Files API commit, an earlier call to this endpoint — the request returns 409 with code DEPLOY_IN_PROGRESS and nothing is written. It is transient: retry once the other operation settles.

This endpoint takes no baseline commit, so it does not check whether the model files moved in Git since you read them. Whatever manifest you send replaces the current one. If several writers share a project, coordinate them, or edit individual files under mdl/ with the Files API instead of replacing the whole manifest here.

Path Params
integer
required

Project ID.

Body Params

At least one field is required.

string
connectionInfo
object
boolean
string

Trimmed, non-empty, max 50 chars.

string
string
mdl
object

MDL manifest (re-deploys the project). Validated before anything is persisted.

Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json