diff --git a/cs3/storage/provider/v1beta1/provider_api.proto b/cs3/storage/provider/v1beta1/provider_api.proto
index ddfd3f8..e2fe43d 100644
--- a/cs3/storage/provider/v1beta1/provider_api.proto
+++ b/cs3/storage/provider/v1beta1/provider_api.proto
@@ -75,9 +75,10 @@ service ProviderAPI {
   // Initiates the download of a file using an
   // out-of-band data transfer mechanism.
   rpc InitiateFileDownload(InitiateFileDownloadRequest) returns (InitiateFileDownloadResponse);
-  // Initiates the upload of a file using an out-of-band
-  // data transfer mechanism. Locking MUST be handled by
-  // the data transfer protocol returned in response.
+  // Initiates the upload of a file using an out-of-band data transfer mechanism.
+  // SHOULD return CODE_FAILED_PRECONDITION if the reference is already locked.
+  // Additionally, locking MUST be addressed by the data transfer protocol
+  // returned in response.
   rpc InitiateFileUpload(InitiateFileUploadRequest) returns (InitiateFileUploadResponse);
   // Returns the list of grants for the provided reference.
   // MUST return CODE_NOT_FOUND if the reference does not exists.
@@ -370,6 +371,11 @@ message InitiateFileUploadRequest {
     // return CODE_FAILED_PRECONDITION.
     cs3.types.v1beta1.Timestamp if_unmodified_since = 6;
   }
+  // OPTIONAL.
+  // A lock_id: should the reference exist and be locked, the stored
+  // lock_id SHOULD be equal to the given value. Additionally, the
+  // check MUST be enforced by the out-of-band transfer protocol.
+  string lock_id = 5;
 }
 
 message InitiateFileUploadResponse {