@budibase/worker
Version:
Budibase background service
90 lines (82 loc) • 1.97 kB
text/typescript
import {
ScimUserListResponse,
ScimCreateUserRequest,
ScimUserResponse,
ScimUpdateRequest,
} from "@budibase/types"
import { RequestSettings, ScimTestAPI } from "./shared"
export class ScimUsersAPI extends ScimTestAPI {
get = async (
requestSettings?: Partial<RequestSettings> & {
params?: {
startIndex?: number
pageSize?: number
filter?: string
}
}
) => {
let url = `/api/global/scim/v2/users?`
const params = requestSettings?.params
if (params?.pageSize) {
url += `count=${params.pageSize}&`
}
if (params?.startIndex) {
url += `startIndex=${params.startIndex}&`
}
if (params?.filter) {
url += `filter=${params.filter}&`
}
const res = await this.call(url, "get", requestSettings)
return res.body as ScimUserListResponse
}
find = async (id: string, requestSettings?: Partial<RequestSettings>) => {
const res = await this.call(
`/api/global/scim/v2/users/${id}`,
"get",
requestSettings
)
return res.body as ScimUserResponse
}
post = async (
{
body,
}: {
body: ScimCreateUserRequest
},
requestSettings?: Partial<RequestSettings>
) => {
const res = await this.call(
`/api/global/scim/v2/users`,
"post",
requestSettings,
body
)
return res.body as ScimUserResponse
}
patch = async (
{
id,
body,
}: {
id: string
body: ScimUpdateRequest
},
requestSettings?: Partial<RequestSettings>
) => {
const res = await this.call(
`/api/global/scim/v2/users/${id}`,
"patch",
requestSettings,
body
)
return res.body as ScimUserResponse
}
delete = async (id: string, requestSettings?: Partial<RequestSettings>) => {
const res = await this.call(
`/api/global/scim/v2/users/${id}`,
"delete",
requestSettings
)
return res.body as ScimUserResponse
}
}