/// <inheritdoc/>
        public Task UpdateRateLockRequestAsync(RateLockRequest lockRequest, bool populate, CancellationToken cancellationToken = default)
        {
            Preconditions.NotNull(lockRequest, nameof(lockRequest));
            Preconditions.NotNullOrEmpty(lockRequest.Id, nameof(lockRequest.Id));

            return(PatchPopulateDirtyAsync(lockRequest.Id, JsonStreamContent.Create(lockRequest), nameof(UpdateRateLockRequestAsync), lockRequest.Id, lockRequest, populate, cancellationToken));
        }
        /// <inheritdoc/>
        public Task <string> SubmitRateLockRequestAsync(RateLockRequest lockRequest, bool populate, LockAction?action = null, DataSyncOption?dataSyncOption = null, CancellationToken cancellationToken = default)
        {
            var queryParameters = new QueryParameters();

            if (action.HasValue)
            {
                queryParameters.Add("action", action.ToString().ToLower());
            }
            if (dataSyncOption.HasValue)
            {
                queryParameters.Add("dataSyncOption", dataSyncOption.ToString().ToLower());
            }
            if (lockRequest.Id != null)
            {
                queryParameters.Add("requestId", lockRequest.Id.ToLower());
            }

            queryParameters.Add("view", populate ? "entity" : "id");

            return(PostPopulateDirtyAsync(null, queryParameters.ToString(), nameof(SubmitRateLockRequestAsync), lockRequest, populate, cancellationToken));
        }
        /// <inheritdoc/>
        public Task ConfirmRateLockRequestAsync(RateLockRequest lockRequest, bool populate, CancellationToken cancellationToken = default)
        {
            Preconditions.NotNullOrEmpty(lockRequest.Id, nameof(lockRequest.Id));

            return(PutPopulateDirtyAsync($"{lockRequest.Id}/confirmation", JsonStreamContent.Create(lockRequest), nameof(ConfirmRateLockRequestAsync), lockRequest.Id, lockRequest, populate, cancellationToken));
        }