Locking

Requirement: POST /{entity}/locks REQ_INTEROP_100
status: verified
tags: Locking
is verified by: TEST_LockManagerTest_test_acquire_already_locked, TEST_LockManagerTest_test_acquire_break_lock, TEST_LockManagerTest_test_acquire_break_lock_not_breakable, TEST_LockManagerTest_test_acquire_invalid_expiration, TEST_LockManagerTest_test_acquire_invalid_scope, TEST_LockManagerTest_test_acquire_lock_basic, TEST_LockManagerTest_test_acquire_lock_full, TEST_LockManagerTest_test_acquire_lock_scoped, TEST_LockManagerTest_test_check_access_area_propagation, TEST_LockManagerTest_test_check_access_not_owner, TEST_LockManagerTest_test_check_access_owner, TEST_LockManagerTest_test_check_access_parent_propagation, TEST_LockManagerTest_test_check_access_partial_scope_propagation, TEST_LockManagerTest_test_check_access_scoped_match, TEST_LockManagerTest_test_check_access_scoped_no_match, TEST_LockManagerTest_test_check_access_unlocked, TEST_LockManagerTest_test_cleanup_expired, TEST_LockManagerTest_test_cleanup_not_expired, TEST_LockManagerTest_test_config_disabled, TEST_LockManagerTest_test_extend_lock, TEST_LockManagerTest_test_extend_not_found, TEST_LockManagerTest_test_extend_not_owner, TEST_LockManagerTest_test_get_lock, TEST_LockManagerTest_test_get_lock_by_id, TEST_LockManagerTest_test_lock_required_different_collection_not_blocked, TEST_LockManagerTest_test_lock_required_has_lock, TEST_LockManagerTest_test_lock_required_no_lock_held, TEST_LockManagerTest_test_release_lock, TEST_LockManagerTest_test_release_not_found, TEST_LockManagerTest_test_release_not_owner, TEST_TestLockingFaults_test_global_clear_skips_locked_entity_faults, TEST_TestLockingPropagation_test_component_lock_allows_owner_on_child, TEST_TestLockingPropagation_test_component_lock_blocks_child_app, TEST_TestLocking_test_acquire_lock_on_app, TEST_TestLocking_test_acquire_lock_with_scopes, TEST_TestLocking_test_acquire_without_client_id_returns_400, TEST_TestLocking_test_acquire_without_expiration_returns_400, TEST_TestLocking_test_already_locked_returns_409, TEST_TestLocking_test_break_lock, TEST_TestLocking_test_lock_blocks_other_client, TEST_TestLocking_test_lock_expires_automatically, TEST_TestLocking_test_nonexistent_entity_returns_404, TEST_TestLocking_test_scoped_lock_allows_other_collections

The endpoint shall create a new lock on the addressed entity with mandatory lock_expiration (seconds), optional scopes (collections to lock), and optional break_lock flag. Response 201 with LockInfo (id, owned, scopes, lock_expiration).

Requirement: GET /{entity}/locks REQ_INTEROP_101

The endpoint shall list all active locks on the addressed entity. Response 200 with { "items": LockInfo[] }.

Requirement: GET /{entity}/locks/{lock-id} REQ_INTEROP_102
status: verified
tags: Locking

The endpoint shall return details of the addressed lock including lock_expiration (date-time), owned, and scopes. Response 200 with LockInfo.

Requirement: PUT /{entity}/locks/{lock-id} REQ_INTEROP_103
status: verified
tags: Locking

The endpoint shall update the lock_expiration of the addressed lock. Response 204.

Requirement: DELETE /{entity}/locks/{lock-id} REQ_INTEROP_104

The endpoint shall release the addressed lock. Response 204.