private async Task <IResourcePermissionResponse> GetResourcePermissionResponse(PermissionModeKind permissionMode, CancellationToken ct) { await ValidateLoginState(); var resourcePermissionResponse = await AcquireResourceToken(_authService.CurrentUserContext, ct); var resourceToken = resourcePermissionResponse?.ResourcePermissions? .FirstOrDefault(p => p?.PermissionMode == permissionMode)?.ResourceToken; if (string.IsNullOrEmpty(resourceToken)) { throw new CosmosClientException($"No Resource Token acquired for permission: {permissionMode.ToString()}"); } var endpointUrl = resourcePermissionResponse?.EndpointUrl; if (string.IsNullOrEmpty(endpointUrl) || !Uri.TryCreate(endpointUrl, UriKind.Absolute, out _)) { throw new CosmosClientException($"No or invalid endpoint received from broker: {endpointUrl}"); } var databaseId = resourcePermissionResponse?.DatabaseId; if (string.IsNullOrEmpty(databaseId)) { throw new CosmosClientException($"No or invalid database Id received from broker: {databaseId}"); } var collectionId = resourcePermissionResponse?.CollectionId; if (string.IsNullOrEmpty(collectionId)) { throw new CosmosClientException($"No or invalid database Id received from broker: {collectionId}"); } return(resourcePermissionResponse); }