> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # update > Update a project's name or media protection settings. ### projects.update Update a project's name or protection settings. Only the fields you pass are sent. ### Schema ```yaml openapi: 3.1.0 info: title: API version: 1.0.0 paths: /api/projects/{id}: patch: operationId: subpackageProjects_update_project summary: Update a project description: >- Changes the name and security settings of a root project or subproject the caller can reach. Use it to control media protection and HTTPS requirements; project API tokens are managed separately through [Project Tokens](/docs/apis/rest/project-tokens/create-token). Compatibility API Accounts use their own SID-based update route. #### Permissions With a project API token, the token must have the following scope(s) enabled to make a successful request: _Management_. With a [Personal access token](/docs/apis/authorization#personal-access-tokens) there are no scopes. The token holder must be an owner or admin of the space, and the request reaches only the projects the holder is enabled for, plus their subprojects. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). tags: - subpackage_projects parameters: - name: id in: path description: The unique identifier of the project or subproject. required: true schema: $ref: '#/components/schemas/uuid' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Projects.Project' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode401' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode404' '422': description: >- The request failed validation, for example a blank or overly long `name`. content: application/json: schema: $ref: '#/components/schemas/Projects.UpdateProjectStatusCode422' '500': description: An internal server error occurred. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode500' requestBody: content: application/json: schema: $ref: '#/components/schemas/Projects.UpdateProjectRequest' tags: - name: subpackage_projects servers: - url: https://%7BYour_Space_Name%7D.signalwire.com description: SignalWire API components: schemas: uuid: type: string format: uuid description: Universal Unique Identifier. title: uuid Projects.UpdateProjectRequest: type: object properties: name: type: string maxLength: 250 description: The name of the project. protect_recordings: type: boolean description: >- When enabled, recordings created within the project require authentication to access. protect_message_media: type: boolean description: >- When enabled, message media created within the project requires authentication to access. protect_fax_media: type: boolean description: >- When enabled, fax media created within the project requires authentication to access. force_https_requests: type: boolean description: >- When enabled, requests made to the project's webhooks and callbacks must use HTTPS. description: Request body for updating a project's name and settings. title: Projects.UpdateProjectRequest Projects.Project: type: object properties: id: $ref: '#/components/schemas/uuid' description: The unique identifier of the project. name: type: string description: The name of the project. parent_project_id: oneOf: - $ref: '#/components/schemas/uuid' - type: 'null' description: >- The unique identifier of the root project. `null` when this project is itself a root project. subproject: type: boolean description: '`true` when this project is a subproject.' region_preference: type: string description: >- The effective region preference for the project. Returned in all responses; it is not currently settable through this API. protect_recordings: type: boolean description: >- When enabled, recordings created within the project require authentication to access. protect_message_media: type: boolean description: >- When enabled, message media created within the project requires authentication to access. protect_fax_media: type: boolean description: >- When enabled, fax media created within the project requires authentication to access. force_https_requests: type: boolean description: >- When enabled, requests made to the project's webhooks and callbacks must use HTTPS. created_at: type: string format: date-time description: The date and time when the project was created. updated_at: type: string format: date-time description: The date and time when the project was last updated. required: - id - name - parent_project_id - subproject - region_preference - protect_recordings - protect_message_media - protect_fax_media - force_https_requests - created_at - updated_at description: A project or subproject within the caller's project tree. title: Projects.Project TypesStatusCodesStatusCode401Error: type: string enum: - Unauthorized title: TypesStatusCodesStatusCode401Error Types.StatusCodes.StatusCode401: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode401Error' required: - error description: Access is unauthorized. title: Types.StatusCodes.StatusCode401 TypesStatusCodesStatusCode404Error: type: string enum: - Not Found title: TypesStatusCodesStatusCode404Error Types.StatusCodes.StatusCode404: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode404Error' required: - error description: The server cannot find the requested resource. title: Types.StatusCodes.StatusCode404 Types.StatusCodes.RestApiErrorItem: type: object properties: type: type: string description: The category of error. code: type: string description: A specific error code. message: type: string description: A description of what caused the error. attribute: type: - string - 'null' description: The request parameter that caused the error, if applicable. url: type: string description: A link to documentation about this error. required: - type - code - message - url description: Details about a specific error. title: Types.StatusCodes.RestApiErrorItem Projects.UpdateProjectStatusCode422: type: object properties: errors: type: array items: $ref: '#/components/schemas/Types.StatusCodes.RestApiErrorItem' description: List of validation errors. required: - errors description: >- The request failed validation, for example a blank or overly long `name`. title: Projects.UpdateProjectStatusCode422 TypesStatusCodesStatusCode500Error: type: string enum: - Internal Server Error title: TypesStatusCodesStatusCode500Error Types.StatusCodes.StatusCode500: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode500Error' required: - error description: An internal server error occurred. title: Types.StatusCodes.StatusCode500 ``` ## Parameters **`id`** `str` — required ID of the project to update. Positional-only. --- **`name`** `str | None` — default: None New display name. --- **`protect_recordings`** `bool | None` — default: None Require authentication to download call recordings. --- **`protect_message_media`** `bool | None` — default: None Require authentication to download message media. --- **`protect_fax_media`** `bool | None` — default: None Require authentication to download fax media. --- **`force_https_requests`** `bool | None` — default: None Reject webhook URLs that aren't HTTPS. --- **`extras`** `Mapping[str, Any] | None` — default: None Additional request body fields merged into the payload as sent. --- **`request_options`** `RequestOptions | None` — default: None Per-call timeout and retry overrides. See [`RequestOptions`](/docs/server-sdks/reference/python/rest/request-options). --- ## Returns `Project` — the updated project. ## Response Example ### Response (200) ```json { "id": "8f14e45f-ceea-467d-9c2b-7a1d3a9b2c34", "name": "Acme Staging", "parent_project_id": "b3877739-5c7e-4d4f-9d1a-2f0c8c2f1a11", "subproject": true, "region_preference": "us-west", "protect_recordings": false, "protect_message_media": false, "protect_fax_media": false, "force_https_requests": true, "created_at": "2024-05-06T12:20:00Z", "updated_at": "2024-05-06T12:20:00Z" } ``` ## Example ```python {9} from signalwire.rest import RestClient client = RestClient( project="your-project-id", token="your-api-token", host="your-space.signalwire.com", ) project = client.projects.update("project-id", name="Bayview Taxi - production") print(project["name"]) ``` > Update a project's name or media protection settings.