Skip to content
Get started

Update

client.projects.update(stringprojectID, ProjectUpdateParams { avatarAssetId, description, disableIpDetection, 5 more } body, RequestOptionsoptions?): ProjectUpdateResponse { project }
PUT/projects/{projectId}

Update the name of a Project

ParametersExpand Collapse
projectID: string
body: ProjectUpdateParams { avatarAssetId, description, disableIpDetection, 5 more }
avatarAssetId?: string

The project’s avatar asset ID (must be kind image)

description?: string

High-level markdown description of the project Set to null to clear the description

maxLength2000
disableIpDetection?: boolean

Switch IP detection off for this project only. The team’s posture (see PUT /teams/{teamId}) applies to every project by default; set this to true to opt this project out of it, false to opt it back in. A project cannot choose a posture of its own. Team-admin only.

maxConsumption?: number

Max consumption (CU) for this project over the billing period. Set to null to remove the cap. Team admins only, or a team API key holding team.members.manage, which may then send this field alone.

name?: string

The project name (example: “Default Project”)

privacyMode?: boolean

Toggle the privacyMode mode When enabled, users can only see their own generated assets (except admins)

qualityGateAutoDetect?: boolean

Quality Gate auto-detection override for this project (wins over the team default). Set to null to clear the override.

settings?: Settings

Project settings. Set homepage to a layout object to publish it, or to null to unpublish it. Team admins and project admins only.

homepage?: unknown

Homepage layout. An object publishes it; null unpublishes it.

ReturnsExpand Collapse
ProjectUpdateResponse { project }
project: Project { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" | "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" | "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId?: string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption?: number

Consumption (CU) used by this key over the current billing period.

lastUsedAt?: string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption?: number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId?: string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects?: Array<Project>

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: Array<User>

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar?: Avatar { assetId, url }

The user’s avatar

assetId?: string

ID of the asset used as thumbnail if provided, otherwise undefined

url?: string

Signed URL of the assetId or free url if assetId is undefined

consumption?: number

Consumption (CU) used by this member over the current billing period.

maxConsumption?: number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar?: Avatar { assetId, url }

The project’s avatar

assetId?: string

ID of the asset used as thumbnail if provided, otherwise undefined

url?: string

Signed URL of the assetId or free url if assetId is undefined

consumption?: number

Consumption (CU) used by this project over the current billing period.

description?: string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate?: string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection?: boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption?: number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect?: boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings?: Settings { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage?: Record<string, unknown>

Published homepage layout.

Update

import Scenario from '@scenario-labs/sdk';

const client = new Scenario({
  apiKey: process.env['SCENARIO_SDK_API_KEY'], // This is the default and can be omitted
  apiSecret: process.env['SCENARIO_SDK_API_SECRET'], // This is the default and can be omitted
});

const project = await client.projects.update('projectId');

console.log(project.project);
{
  "project": {
    "id": "id",
    "createdAt": "createdAt",
    "keys": [
      {
        "id": "id",
        "apiKeyId": "apiKeyId",
        "apiKeyStatus": "active",
        "createdAt": "createdAt",
        "name": "name",
        "role": "role",
        "scope": "project",
        "updatedAt": "updatedAt",
        "authorId": "authorId",
        "consumption": 0,
        "lastUsedAt": "lastUsedAt",
        "maxConsumption": 0,
        "ownerId": "ownerId",
        "projects": [
          {
            "projectId": "projectId",
            "role": "role"
          }
        ]
      }
    ],
    "name": "name",
    "privacyMode": true,
    "teamId": "teamId",
    "updatedAt": "updatedAt",
    "users": [
      {
        "id": "id",
        "createdAt": "createdAt",
        "email": "email",
        "role": "role",
        "updatedAt": "updatedAt",
        "avatar": {
          "assetId": "assetId",
          "url": "url"
        },
        "consumption": 0,
        "maxConsumption": 0
      }
    ],
    "avatar": {
      "assetId": "assetId",
      "url": "url"
    },
    "consumption": 0,
    "description": "description",
    "descriptionDate": "descriptionDate",
    "disableIpDetection": true,
    "maxConsumption": 0,
    "qualityGateAutoDetect": true,
    "settings": {
      "homepage": {
        "foo": "bar"
      }
    }
  }
}
Returns Examples
{
  "project": {
    "id": "id",
    "createdAt": "createdAt",
    "keys": [
      {
        "id": "id",
        "apiKeyId": "apiKeyId",
        "apiKeyStatus": "active",
        "createdAt": "createdAt",
        "name": "name",
        "role": "role",
        "scope": "project",
        "updatedAt": "updatedAt",
        "authorId": "authorId",
        "consumption": 0,
        "lastUsedAt": "lastUsedAt",
        "maxConsumption": 0,
        "ownerId": "ownerId",
        "projects": [
          {
            "projectId": "projectId",
            "role": "role"
          }
        ]
      }
    ],
    "name": "name",
    "privacyMode": true,
    "teamId": "teamId",
    "updatedAt": "updatedAt",
    "users": [
      {
        "id": "id",
        "createdAt": "createdAt",
        "email": "email",
        "role": "role",
        "updatedAt": "updatedAt",
        "avatar": {
          "assetId": "assetId",
          "url": "url"
        },
        "consumption": 0,
        "maxConsumption": 0
      }
    ],
    "avatar": {
      "assetId": "assetId",
      "url": "url"
    },
    "consumption": 0,
    "description": "description",
    "descriptionDate": "descriptionDate",
    "disableIpDetection": true,
    "maxConsumption": 0,
    "qualityGateAutoDetect": true,
    "settings": {
      "homepage": {
        "foo": "bar"
      }
    }
  }
}