keycloak/js/libs/keycloak-admin-client/src/resources/userStorageProvider.ts

61 lines
1.6 KiB
TypeScript

import type { KeycloakAdminClient } from "../client.js";
import type SynchronizationResultRepresentation from "../defs/synchronizationResultRepresentation.js";
import Resource from "./resource.js";
type ActionType = "triggerFullSync" | "triggerChangedUsersSync";
export type DirectionType = "fedToKeycloak" | "keycloakToFed";
type NameResponse = {
id: string;
name: string;
};
export class UserStorageProvider extends Resource<{ realm?: string }> {
public name = this.makeRequest<{ id: string }, NameResponse>({
method: "GET",
path: "/{id}/name",
urlParamKeys: ["id"],
});
public removeImportedUsers = this.makeRequest<{ id: string }, void>({
method: "POST",
path: "/{id}/remove-imported-users",
urlParamKeys: ["id"],
});
public sync = this.makeRequest<
{ id: string; action?: ActionType },
SynchronizationResultRepresentation
>({
method: "POST",
path: "/{id}/sync",
urlParamKeys: ["id"],
queryParamKeys: ["action"],
});
public unlinkUsers = this.makeRequest<{ id: string }, void>({
method: "POST",
path: "/{id}/unlink-users",
urlParamKeys: ["id"],
});
public mappersSync = this.makeRequest<
{ id: string; parentId: string; direction?: DirectionType },
SynchronizationResultRepresentation
>({
method: "POST",
path: "/{parentId}/mappers/{id}/sync",
urlParamKeys: ["id", "parentId"],
queryParamKeys: ["direction"],
});
constructor(client: KeycloakAdminClient) {
super(client, {
path: "/admin/realms/{realm}/user-storage",
getUrlParams: () => ({
realm: client.realmName,
}),
getBaseUrl: () => client.baseUrl,
});
}
}