Item locks

Items can be locked by users to temporarily prevent access from other users. This can be used to prevent users from working with stale and conflicting data. Locks should not be seen as an alternative to access control, as any user that has write access to an item can remove the locks.

If any user attempts to access an item that is locked by another user, HTTP status code 409 Conflict will be returned. For example:

HTTP/1.1 409 Operation would lead to conflict
Context: lock
ID: VX-123
Reason: That entity is locked by another user.
Value: the-name-of-the-other-user

Managing locks

All locks are associated with an expiration date and will be removed after they expire.

Create a lock

POST /item/(item-id)/lock

Creates a new lock for the item with an expiration date. The expiration date is the sum of the timestamp and the duration. If no timestamp and no duration is given, the expiration date will be set to 24 hours forward in time.

Query Parameters:
  • timestamp (string) – An ISO 8601 timestamp. Defaults to the current time.
  • duration (string) – An ISO 8601 duration. Default is 0.
Status Codes:
  • 200 OK – The lock was created.
  • 409 Conflict – Some other user already holds a lock on that item.
Role:

_lock_write

Example

Create a lock for a specific timestamp:

POST /item/VX-123/lock?timestamp=2010-08-20T15:00:00+02:00
200 OK

Create a lock for 3 hours:

POST /item/VX-123/lock?duration=PT3H
200 OK

Retrieve a lock

GET /item/(item-id)/lock

Retrieves information about the expiration date and which user that holds the lock.

Status Codes:
  • 404 Not Found – Either the item or the lock could not be found.
Produces:
Role:

_lock_read

Example

GET /item/VX-123/lock
<LockDocument xmlns="http://xml.vidispine.com/schema/vidispine">
   <id>VX-123</id>
   <user>admin</user>
   <expires>2010-08-20T15:00:00.000+02:00</expires>
</LockDocument>

Delete a lock

DELETE /item/(item-id)/lock

Removes the lock for the item.

Status Codes:
  • 200 OK – The lock was removed.
Role:

_lock_write

Example

DELETE /item/VX-123/lock
200 OK

Extend the expiration date of a lock

PUT /item/(item-id)/lock

Sets a new expiration date for the lock. The expiration date is the sum of the timestamp and the duration. If no timestamp and no duration is given, the expiration date will be set to 24 hours forward in time.

Query Parameters:
  • timestamp (string) – An ISO 8601 timestamp. Defaults to the current time.
  • duration (string) – An ISO 8601 duration. Default is 0.
Status Codes:
  • 200 OK – The lock was extended.
Role:

_lock_write

Example

POST /item/VX-123/lock?timestamp=2010-08-20T16:00:00+02:00
200 OK