UI API — View Override
apiClient.ui.viewOverride manages user view customisations — per-user, per-view configuration overrides that personalise the UI without changing the shared base configuration.
Methods
create
Create a new view override.
const viewOverride = await apiClient.ui.viewOverride.create({
viewOverride: {
name: 'My Custom View',
viewId: 'jobs-list-view',
userId: 'user-uid',
tenantId: 'tenant-uid',
data: JSON.stringify({ columns: ['name', 'start', 'status'] }),
},
})
console.log(viewOverride.uid)
get
Fetch a single view override by UID.
const viewOverride = await apiClient.ui.viewOverride.get({ uid: 'abc123' })
getMany
Fetch multiple view overrides, with optional filters.
// By view ID
const overrides = await apiClient.ui.viewOverride.getMany({
viewId: 'jobs-list-view',
})
// By name
const named = await apiClient.ui.viewOverride.getMany({
name: 'My Custom View',
})
// Paginated
const page = await apiClient.ui.viewOverride.getMany({ limit: 20, page: 1 })
put
Update an existing view override. Uses merge-and-put — only include the fields you want to change.
await apiClient.ui.viewOverride.put({
viewOverride: {
uid: 'abc123',
data: JSON.stringify({ columns: ['name', 'status'] }),
},
})
del
Delete a view override by UID.
await apiClient.ui.viewOverride.del({ uid: 'abc123' })
View Override Type
| Field | Type | Description |
|---|---|---|
uid | string | Unique identifier |
name | string | Display name |
viewId | string | The view this override applies to |
userId | string | The user this override belongs to |
tenantId | string | The tenant this override belongs to |
data | string | Serialised override data (defaults to '') |
React Example
import { useApiClient } from '@skedulo/horizon-core'
import { useEffect, useState, useCallback } from 'react'
const useViewOverride = (viewId) => {
const apiClient = useApiClient()
const [override, setOverride] = useState(null)
useEffect(() => {
apiClient?.ui.viewOverride.getMany({ viewId }).then((overrides) => {
setOverride(overrides[0] ?? null)
})
}, [apiClient, viewId])
const save = useCallback(
async (data) => {
if (override) {
const updated = await apiClient?.ui.viewOverride.put({
viewOverride: { uid: override.uid, data: JSON.stringify(data) },
})
setOverride(updated ?? null)
} else {
const created = await apiClient?.ui.viewOverride.create({
viewOverride: {
name: viewId,
viewId,
userId: apiClient.userId,
tenantId: apiClient.tenantId,
data: JSON.stringify(data),
},
})
setOverride(created)
}
},
[apiClient, override, viewId],
)
return { override, save }
}