---
title: "Update an existing collection"
method: PUT
path: "/public/v1/collections/{collectionId}"
tags: ["Collections - Management"]
---

# Update an existing collection

`PUT /public/v1/collections/{collectionId}`

Update an existing collection's name and lanes settings.

Only active collections that the user has update permissions for can be modified. Only the collection name and lanes setting can be updated through this endpoint. Other properties like `scope` and `tiersEnabled` cannot be changed after creation.

**Note**: Inactive (deactivated) collections will return `404 Not Found`, even if you have `UPDATE` permission on them.

**Request:**
Only `name` (required) and `lanes` (optional) fields can be updated. All other fields (`scope`, `tiersEnabled`, `parentId`) cannot be changed through this endpoint. See the `PublicCollectionUpdatePayload` schema for complete field definitions.

**Validation Rules:**
- Collection names must be unique within the user's scope (duplicate names will result in `409 Conflict`)
- The collection must exist, be active (not deactivated), and be accessible to the user
- The user must have `UPDATE` permission on the collection
- The user must be the collection creator OR have been granted access to the collection

**What happens when you update a collection:**

1. **Collection Update**: The collection's name and/or lanes setting are updated
2. **Audit Trail**: The update is recorded in the audit log with:
   - The user who updated the collection
   - Timestamp of the operation
   - Previous and new values for changed fields
   - Reference to the public API endpoint used
   - Audit comment: "Collection name and lanes updated via Public API"

**Important Notes:**

- Collection names must be unique within the user's scope - attempting to use a duplicate name will result in `409 Conflict`
- Only `name` and `lanes` can be updated through this endpoint - all other fields (`scope`, `type`, `tiersEnabled`, `parentId`) are preserved from the existing collection
- The `scope` and `tiersEnabled` fields are immutable after creation
- Inactive (deactivated) collections cannot be updated and will return `404 Not Found`
- All collection operations are audited for compliance and tracking purposes

**Required Permissions**: `MANAGE_COLLECTION` and `UPDATE` on the collection.

## Path parameters

- `collectionId` integer, required

## Request body

- PublicCollectionUpdatePayload
  - `name` string, required
  - `lanes` boolean, required

## Response `200`

200 OK - Collection updated successfully. The update has been audited with the comment 'Collection name and lanes updated via Public API'.

- PublicCollectionDTO
  - `id` integer, required
  - `uuid` string, uuid, required
  - `scope` 'User' | 'Customer' | 'Featured', required
  - `type` 'Default' | 'Commodity' | 'Ariba', required
  - `name` string, required
  - `count` integer, nullable
  - `lanes` boolean, required
  - `tiersEnabled` boolean, required
  - `parentId` integer, nullable
  - `children` PublicCollectionDTO[], required
  - `updatedAt` string, date-time, nullable

## Other responses

- `400` — 400 Bad Request - Invalid request payload or validation errors. The request body is malformed or contains invalid data.
- `403` — 403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.
- `404` — 404 Not Found - The collection with the specified ID was not found, is inactive (deactivated), or is not accessible to your organization. This may occur if: (1) the collection ID doesn't exist, (2) the collection was deactivated (soft-deleted), (3) the collection was never accessible to your organization, (4) you don't have update access (you must be the collection creator OR have been granted access), or (5) the collection is inactive and filtered out by the system.
- `409` — 409 Conflict - A collection with the same name already exists in the user's scope. Collection names must be unique within each scope.
- `429` — 429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.
- `500` — 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.

---

[API](https://skmtc.net/prewave/apis/public-prewave-api.md) · [All operations](https://skmtc.net/prewave/apis/public-prewave-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/prewave/public-prewave-api/revisions/466169815b78/schema)
