Appearance
useWorkspaceApi Composable ​
File Information ​
- Path:
app/composables/api/useWorkspaceApi.ts - Purpose: Workspace operations API
- Category: Workspace API Composable
Overview ​
The useWorkspaceApi composable provides functionality for workspace-related operations including checking public portal access and updating user instance information.
Functions ​
checkPublicPortal ​
Checks if a URL/brand has public portal access.
Signature:
typescript
checkPublicPortal(url: string): Promise<CheckPublicPortalResponse>Parameters:
url: string- Brand URL/domain to check
Returns:
Promise<CheckPublicPortalResponse>- Public portal check response
API Endpoint: POST /check-public-portal (skipAuth: true - public endpoint)
Usage:
typescript
const { checkPublicPortal } = useWorkspaceApi()
const isPublic = await checkPublicPortal('example-brand')
// Returns whether portal is publicupdateUserInstance ​
Updates user instance information (profile, settings, etc.).
Signature:
typescript
updateUserInstance(formData: FormData): Promise<UpdateUserInstanceResponse>Parameters:
formData: FormData- Form data with user instance updates
Returns:
Promise<UpdateUserInstanceResponse>- Update response
API Endpoint: POST /digital/instance/update-user
Usage:
typescript
const { updateUserInstance } = useWorkspaceApi()
const formData = new FormData()
formData.append('name', 'New Name')
formData.append('email', '[email protected]')
formData.append('avatar', file)
const response = await updateUserInstance(formData)Error Handling ​
All functions include error logging:
typescript
catch (error: any) {
console.error('[WorkspaceAPI] {functionName} - Error:', error)
throw error
}Type Definitions ​
typescript
import type { CheckPublicPortalResponse, UpdateUserInstanceResponse } from '~/types'Integration with API Client ​
The composable uses the global $api client:
typescript
const { $api } = useNuxtApp()Use Cases ​
Check Public Portal ​
typescript
const { checkPublicPortal } = useWorkspaceApi()
const verifyPortal = async (brandUrl: string) => {
try {
const response = await checkPublicPortal(brandUrl)
if (response.isPublic) {
// Portal is public, allow access
} else {
// Portal is private, require authentication
}
} catch (error) {
console.error('Failed to check portal:', error)
}
}Update User Instance ​
typescript
const { updateUserInstance } = useWorkspaceApi()
const updateInstance = async (userData: any, avatarFile?: File) => {
const formData = new FormData()
Object.keys(userData).forEach(key => {
formData.append(key, userData[key])
})
if (avatarFile) {
formData.append('avatar', avatarFile)
}
try {
const response = await updateUserInstance(formData)
snackbar.showSuccess('Profile updated successfully')
} catch (error) {
snackbar.showError('Failed to update profile')
}
}Related Documentation ​
- Profile Feature - Profile feature documentation
- API Client - API client configuration