> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xenia.team/llms.txt
> Use this file to discover all available pages before exploring further.

# Edit Project

> Updates the project. Only the fields listed below are read; anything else in the body is ignored. The recurrence **pattern** cannot be changed — sending a `requestThisTask` or `recurringByEvery` that differs from the project's current one returns `400 Can not change recurrence or frequency of the project!`. To change the pattern, end the project and create a new one. Requires `Edit Project` and `Manage Tasks`.



## OpenAPI

````yaml PATCH /api/v1/ops/workspaces/{workspaceId}/projects/{projectId}/edit
openapi: 3.1.0
info:
  title: Xenia Team API - Edit Project
  version: 1.0.0
  description: >-
    Updates a project and, depending on `targetTasksStatus`, the tasks already
    generated from it. The project's schedules are regenerated in the
    background, so the project's `state` becomes `updating` until that finishes.
servers:
  - url: https://api.xenia.team
security: []
paths:
  /api/v1/ops/workspaces/{workspaceId}/projects/{projectId}/edit:
    patch:
      tags:
        - Projects
      summary: Edit Project
      description: >-
        Updates the project. Only the fields listed below are read; anything
        else in the body is ignored. The recurrence **pattern** cannot be
        changed — sending a `requestThisTask` or `recurringByEvery` that differs
        from the project's current one returns `400 Can not change recurrence or
        frequency of the project!`. To change the pattern, end the project and
        create a new one. Requires `Edit Project` and `Manage Tasks`.
      parameters:
        - name: workspaceId
          in: path
          required: true
          description: UUID of the workspace. Must be the workspace the API key belongs to.
          schema:
            type: string
            format: uuid
            example: cb363f7e-c52a-4478-911d-f6a6f791090e
        - name: projectId
          in: path
          required: true
          description: UUID of the project.
          schema:
            type: string
            format: uuid
            example: c7966d63-52ce-4967-b30a-16aaa9e806b5
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  description: See the create-task contract for this field's shape.
                description:
                  description: See the create-task contract for this field's shape.
                additionalDescription:
                  description: See the create-task contract for this field's shape.
                priority:
                  description: See the create-task contract for this field's shape.
                taskStatus:
                  description: See the create-task contract for this field's shape.
                startTime:
                  description: See the create-task contract for this field's shape.
                dueTime:
                  description: See the create-task contract for this field's shape.
                recurringOnDay:
                  description: See the create-task contract for this field's shape.
                recurringDueDay:
                  description: See the create-task contract for this field's shape.
                recurringByEvery:
                  description: See the create-task contract for this field's shape.
                intervalWeek:
                  description: See the create-task contract for this field's shape.
                dueIntervalWeek:
                  description: See the create-task contract for this field's shape.
                isRangedTask:
                  description: See the create-task contract for this field's shape.
                dueCycleOffset:
                  description: See the create-task contract for this field's shape.
                requestThisTask:
                  description: See the create-task contract for this field's shape.
                notification:
                  description: See the create-task contract for this field's shape.
                LocationId:
                  description: See the create-task contract for this field's shape.
                AssetId:
                  description: See the create-task contract for this field's shape.
                ChecklistLogId:
                  description: See the create-task contract for this field's shape.
                assignees:
                  description: See the create-task contract for this field's shape.
                assigneesRoles:
                  description: See the create-task contract for this field's shape.
                isChecklistRequired:
                  description: See the create-task contract for this field's shape.
                isTimeBound:
                  description: See the create-task contract for this field's shape.
                targetTasksStatus:
                  type: array
                  items:
                    type: string
                  description: >-
                    Which already-generated tasks the edit should be applied to,
                    by status (e.g. `["Open"]`). Omit to leave existing tasks
                    untouched.
            example:
              title: Monthly Safety Walk (revised)
              priority: High
              assignees:
                - <user-id>
              targetTasksStatus:
                - Open
      responses:
        '200':
          description: Project update accepted. Schedules regenerate in the background.
          content:
            application/json:
              example:
                data:
                  id: c7966d63-52ce-4967-b30a-16aaa9e806b5
                  title: Monthly Safety Walk
                  state: updating
                extra_meta:
                  message: Project updated successfully
        '400':
          description: >-
            Bad Request - `Project is under processing` (state is not `ready`),
            `Can not change recurrence or frequency of the project!`, `Can not
            edit project with active one-off tasks!`, or the project is an
            operational event (managed by a separate API).
        '401':
          description: >-
            Unauthorized - Invalid client credentials, or the key does not
            belong to this workspace.
        '403':
          description: >-
            Forbidden - API key not authorized for this route, the role lacks
            the required permission, the workspace does not have the Projects
            feature, or the project id is unknown to the caller. Note an unknown
            or deleted projectId also returns 403, not 404: the project access
            check runs before the handler and denies when it cannot load the
            project.
        '500':
          description: Internal Server Error.
      security:
        - clientKey: []
          clientSecret: []
components:
  securitySchemes:
    clientKey:
      type: apiKey
      in: header
      name: x-client-key
    clientSecret:
      type: apiKey
      in: header
      name: x-client-secret

````