Skip to main content
Update an existing project’s details including name, title, and metadata.

Path Parameters

id
string
required
Project identifier. Can be either:
  • Project UUID (e.g., 3f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c)
  • Project name/slug (e.g., data-platform)

Request Body

body
object
required
Project details to update. All fields in the body are required, even if not changing.
name
string
required
Unique name/slug for the project. Must be lowercase, alphanumeric with hyphens.Example: data-platform-v2, mobile-app-prod
title
string
required
Human-readable display name for the project.Example: Data Platform V2, Mobile App (Production)
org_id
string
required
Organization ID the project belongs to. This must match the project’s current organization.
metadata
object
Custom metadata for the project. Completely replaces existing metadata. Must comply with the project metadata schema if validation is enabled.Example: {"team": "platform", "department": "engineering", "version": "2.0"}

Response

project
object
The updated project object.
id
string
Unique identifier for the project (UUID format).
name
string
Updated unique name/slug for the project.
title
string
Updated human-readable display name for the project.
org_id
string
ID of the organization this project belongs to.
metadata
object
Updated custom metadata associated with the project.
created_at
timestamp
Timestamp when the project was created (RFC3339 format).
updated_at
timestamp
Timestamp when the project was last updated (RFC3339 format).
members_count
integer
Number of members in the project.
curl -X PUT 'https://api.frontier.example.com/v1beta1/projects/3f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "body": {
      "name": "data-platform-v2",
      "title": "Data Platform V2",
      "org_id": "9f256f86-d3c4-4a6e-b89a-1e9a23c5d78e",
      "metadata": {
        "team": "platform",
        "department": "engineering",
        "version": "2.0"
      }
    }
  }'

Response Example

{
  "project": {
    "id": "3f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c",
    "name": "data-platform-v2",
    "title": "Data Platform V2",
    "org_id": "9f256f86-d3c4-4a6e-b89a-1e9a23c5d78e",
    "metadata": {
      "team": "platform",
      "department": "engineering",
      "version": "2.0"
    },
    "created_at": "2024-01-20T09:15:00Z",
    "updated_at": "2024-03-03T10:30:00Z",
    "members_count": 12
  }
}

Error Responses

code
string
Error code indicating the type of error.
message
string
Human-readable error message.

Common Errors

  • 400 Bad Request: Invalid request body or missing required fields
    • Invalid project name format (must be lowercase alphanumeric with hyphens)
    • Invalid organization ID format
    • Missing request body
    • Metadata doesn’t match the required schema
    • Missing required fields (name, title, or org_id)
  • 401 Unauthenticated: Invalid or missing authentication token
  • 404 Not Found: Project not found or you don’t have access to it
  • 409 Conflict: Another project with the new name already exists in the organization
  • 500 Internal Server Error: Server encountered an unexpected error

Notes

  • You can use either the project UUID or name/slug in the path parameter
  • All fields in the request body are required, even if you’re only updating one field
  • The metadata field completely replaces the existing metadata (not a partial update)
  • The updated_at timestamp is automatically updated to the current time
  • An audit log entry is created for the project update event
  • You must have update/admin permissions on the project to perform this operation
  • The organization ID in the request body must match the project’s current organization (projects cannot be moved between organizations using this endpoint)

Build docs developers (and LLMs) love